发布网友 发布时间:2022-04-23 14:38
共1个回答
热心网友 时间:2023-10-18 22:01
这个程序的关键点是要在显示子程序执行的过程中,多对按键进行检测。检测到有按键按下时,即退出子程序,返回到主函数的按键检测,对num 加一。 #include<reg52.h> #include<intrins.h> #defineucharunsignedchar #defineuintunsignedint sbitkey1=P3^5; uchartemp; ucharnum;voiddelay(uintz)//延时程序 { uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }voiddisplay0()//显示效果1 { uchari; temp=0xfe; for(i=0;i<8;i++) { if(key1==0)break;//对按键进行检测 P1=temp; temp=_crol_(temp,1); delay(50); } P1=0xff; temp=0x7f; for(i=0;i<8;i++) { if(key1==0)break;//对按键进行检测 P1=temp; temp=_cror_(temp,1); delay(50); }} voiddisplay1()//显示效果2 { uchari; temp=0xf8; for(i=0;i<8;i++) { if(key1==0)break;//对按键进行检测 P1=temp; temp=_crol_(temp,1); delay(50); } P1=0xff; temp=0x1f; for(i=0;i<8;i++) { if(key1==0)break;//对按键进行检测 P1=temp; temp=_cror_(temp,1); delay(50); } } voiddisplay2()//显示效果3 { uchari; temp=0x99; for(i=0;i<8;i++) { if(key1==0)break;//对按键进行检测 P1=temp; temp=_crol_(temp,1); delay(50); } P1=0xff; temp=0xcc; for(i=0;i<8;i++) { if(key1==0)break;//对按键进行检测 P1=temp; temp=_cror_(temp,1); delay(50); } }voidanjian() { if(key1==0)//按键检测 { delay(5);//按键消抖延时 if(key1==0) { num++; if(num==3)num=0; } while(!key1); } }voidmain() { while(1) { anjian();//按键检测并赋num值 switch(num) { case0:display0();break; case1:display1();break; case2:display2();break; } }}热心网友 时间:2023-10-18 22:01
这个程序的关键点是要在显示子程序执行的过程中,多对按键进行检测。检测到有按键按下时,即退出子程序,返回到主函数的按键检测,对num 加一。 #include<reg52.h> #include<intrins.h> #defineucharunsignedchar #defineuintunsignedint sbitkey1=P3^5; uchartemp; ucharnum;voiddelay(uintz)//延时程序 { uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }voiddisplay0()//显示效果1 { uchari; temp=0xfe; for(i=0;i<8;i++) { if(key1==0)break;//对按键进行检测 P1=temp; temp=_crol_(temp,1); delay(50); } P1=0xff; temp=0x7f; for(i=0;i<8;i++) { if(key1==0)break;//对按键进行检测 P1=temp; temp=_cror_(temp,1); delay(50); }} voiddisplay1()//显示效果2 { uchari; temp=0xf8; for(i=0;i<8;i++) { if(key1==0)break;//对按键进行检测 P1=temp; temp=_crol_(temp,1); delay(50); } P1=0xff; temp=0x1f; for(i=0;i<8;i++) { if(key1==0)break;//对按键进行检测 P1=temp; temp=_cror_(temp,1); delay(50); } } voiddisplay2()//显示效果3 { uchari; temp=0x99; for(i=0;i<8;i++) { if(key1==0)break;//对按键进行检测 P1=temp; temp=_crol_(temp,1); delay(50); } P1=0xff; temp=0xcc; for(i=0;i<8;i++) { if(key1==0)break;//对按键进行检测 P1=temp; temp=_cror_(temp,1); delay(50); } }voidanjian() { if(key1==0)//按键检测 { delay(5);//按键消抖延时 if(key1==0) { num++; if(num==3)num=0; } while(!key1); } }voidmain() { while(1) { anjian();//按键检测并赋num值 switch(num) { case0:display0();break; case1:display1();break; case2:display2();break; } }}