 - //从0到99计数
- #include <reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit duan=P2^5;
- sbit wei=P2^6;
- sbit FM=P2^3;
- uchar bai,shi,ge,tt=0,temp;
- const unsigned char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
- void delay(uint x)
- {
- uint a,b;
- for(a=x;a>0;a--)
- for(b=110;b>0;b--);
- }
- void init()
- {
- TMOD=0x01;
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- EA=1;
- ET0=1;
- TR0=1;
- }
- void disp(uchar shi,uchar ge)
- {
- duan=1;
- P0=table[shi];
- duan=0;
- wei=1;
- P0=0x4;
- wei=0;
- delay(1);
- duan=1;
- P0=table[ge];
- duan=0;
- wei=1;
- P0=0x08;
- wei=0;
- delay(1);
- }
- void didi(di_num)
- {
- uchar d;
- for(d=di_num;d>0;d--)
- {
- FM=0;
- delay(300);
- FM=1;
- delay(70);
- }
- }
- void main()
- {
- init();
- while(1)
- {
- if(tt==20)
- {
- tt=0; //清零,以便之后再次累计
- temp++;
- shi=temp/10;
- ge=temp%10;
- if(temp==100){didi(1);temp=0; }
- }
- disp(shi,ge); //这句放在上面的括号内会出现只显法个位,十位百位均显不出来
- }
- }
- void tming0() interrupt 1
- {
- TH0=(65536-50000)/256;
- TL0=(65536-50000)%256;
- tt++;
- }
复制代码
|