|
switch-case-break語(yǔ)句和位碼都錯(cuò)了,給你改成數(shù)碼管動(dòng)態(tài)顯示0~7+流水燈
- #include<reg52.h>
- #include<intrins.h>
- sbit p20=P2^0;
- sbit p21=P2^1;
- sbit p22=P2^2;
- char num=0;
- int q=0;
- bit p=0;
- char code table1[8]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07};
- void init()
- {
- TMOD=0x01;
- TH0=(65535-1000)/256;//1ms
- TL0=(65535-1000)%256;
- TR0=1;//定時(shí)器中斷開(kāi)始
- EA=1;//打開(kāi)總中斷
- ET0=1;//打開(kāi)定時(shí)器中斷
- }
- /*
- void delay0(int i)
- {
- while(i--);
- }
- */
- void main()
- {
- init();
- P1=0xfe;//初始化
- while(1)
- {
- if(p==1)
- {
- p=0;
- P0=0x00;//消隱
- switch(num)//送位碼
- {
- case 0:p20=0;p21=0;p22=0;break;
- case 1:p20=1;p21=0;p22=0;break;
- case 2:p20=0;p21=1;p22=0;break;
- case 3:p20=1;p21=1;p22=0;break;
- case 4:p20=0;p21=0;p22=1;break;
- case 5:p20=1;p21=0;p22=1;break;
- case 6:p20=0;p21=1;p22=1;break;
- case 7:p20=1;p21=1;p22=1;break;
- }
- P0=table1[num];//送段碼
- num++;
- num%=8;//0~7
- q++;
- if(q>=500)//0.5秒
- {
- q=0;
- P1=(P1<<1)+1;//左移1位補(bǔ)1
- if(P1==0xff)
- P1=0xfe;
- }
- }
- }
- }
- void delay1() interrupt 1
- {
- TH0=(65535-1000)/256;
- TL0=(65535-1000)%256;
- p=1;
- }
復(fù)制代碼
|
|