实验题目要求:
用1个按键控制LED的显示,要求显示3种以上的不同模式。
时间:2012年12月22日 程序撰写者:邹康
********************************************/ #include
sbit led0=P2^3; sbit led1=P2^4; sbit led2=P2^5; sbit led3=P2^6;
sbit mode_key=P2^0; char mode=0;
void delay(unsigned int t) { unsigned int a,b; for(a=0;a void key() { static unsigned char m; if(mode_key==0) { m++; if(m>=30) { mode++; if(mode>=3) mode=0; m=0; } } } void mode_1() 左右 { unsigned char i=0,c=0; for(i=0;i<4;i++) //延时时间大约1ms //通过按键进行模式选择 //模式一 根据开发板,LED循环右移,时间间隔1s { P2|=0xf8; c=~(0x08< void mode_2() { led0=0; led1=0; led2=0; led3=0; delay(1000); led0=1; led1=1; led2=1; led3=1; delay(1000); } void mode_3() { unsigned char i=0,n=0,c=0; for(i=0;i<4;i++) { P2|=0xf8; P2&=~(0x08<>i); delay(1000); } } void main() { while(1) { key(); switch(mode) //模式二 //模式三 ,根据开发板,LED一闪一灭,时间间隔1s左右 先循环右移,再循环左移,时间间隔1s左右 { case 0 : mode_1();break; case 1 : mode_2();break; case 2 : mode_3();break; } } } }/************************************ 实验题目要求: 采用外部中断的方式实现用1个按键控制LED的显示,要求显示3种以上的不同模式。 时间:2012年12月22日 程序撰写者:邹康 *************************************/ #include unsigned char mode=0; void delay(unsigned int t) //延时时间大约1ms { unsigned int a,b; for(a=0;a void mode_1() //模式一 根据开发板,LED循环右移,时间间隔1s左右 { unsigned char i=0,c=0; for(i=0;i<4;i++) { P2|=0xf8; c=~(0x08< } void mode_2() { led0=0; led1=0; led2=0; led3=0; delay(1000); led0=1; led1=1; led2=1; led3=1; delay(1000); } void mode_3() { unsigned char i=0,n=0,c=0; for(i=0;i<4;i++) { P2|=0xf8; P2&=~(0x08<>i); delay(1000); } } void init() { EA=1; IT0=1; EX0=1; } void main() { init(); while(1) { //模式二 //模式三 ,根据开发板,LED一闪一灭,时间间隔1s左右 先循环右移,再循环左移,时间间隔1s左右 switch(mode) { case 0:mode_1();break; case 1:mode_2();break; case 2:mode_3();break; } } } void come0() interrupt 0 { mode++; if(mode>2) mode=0; }/****************************************** 实验题目要求: 采用外部中断的方式实现一个二进制减1计数器,按一次键,减1, 并用4个LED显示计数结果,减至0时,重新从15开始计数。 时间:2012年12月22日 程序撰写者:邹康 ******************************************/ #include sbit led0=P2^6; sbit led1=P2^5; sbit led2=P2^4; sbit led3=P2^3; unsigned char num[4]; char number=15; void init() { EA=1; IT0=1; EX0=1; } void num_change() { char i=0,n=0; n=number; for(i=0;i<4;i++) { num[i]=n%2; n=n/2;