這個程序你試試- #include<reg52.h>
- #include<intrins.h>
- #define uint unsigned int
- #define uchar unsigned char
- #define p0 =p0
- #define p1 =p1
- #define p3 =p3
- uchar temp ,aa,num;
- sbit wela=P3^6;
- sbit dula=P1^4;
- //帶小數點段編碼
- uchar code dianduma[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,
- 0x78,0x00,0x10};
- //共陽段碼
- uchar code table[18]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
- 0x82,0xf8,0x80,0x90,0x88,0x83,
- 0xc6,0xa1,0x86,0x8e,0x89,0x8c};
- //位碼
- uchar code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xfb};
- void delay(uint z);
- void main()
- {
- num=0;
- aa=0;
- TMOD=0x01;
- TH0=(65536-50000)/256;//初值
- TL0=(65536-50000)%256;
- EA=1;//總中斷
- ET0=1;//開外中斷0
- TR0=1;//開定時器
- temp=0xfe;
- P0=temp;
- P1=0;
- while(1)
- {
-
- delay(1000);
- temp=_crol_(temp,1);//流水燈庫函數
- P0=temp;
-
- }
- }
- void delay(uint z)//延時函數
- {
- uint x,y;
- for(x=z;x>0;x--)
- for(y=120;y>0;y--);
- }
- void timer0() interrupt 1//中斷函數
- {
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- aa++;
- if(aa==20)
- {
- aa=0;
- num++;
- if(num==17)
- num=0;
- P0=table[num];
- }
- }
復制代碼 |