给你改了,对比一下就知道哪里错了。
- #include <reg51.h>
- #define uint unsigned int
- #define uchar unsigned char
- uchar code seg[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //共阳数码管段码
- uchar miao=0,fen=0,shi=0;
- uint count=0;
- uchar miao_L,miao_H,fen_L,fen_H,shi_L,shi_H;
- void delayms(uint ms)
- {
- uchar i;
- while(ms--)
- for(i=0;i<123;i++);
- }
- void display(void)
- {
- P2=0x20;
- P0=0xbf;
- delayms(2); //delayms(500);<-------延时500毫秒太久了。
-
- P2=0x04;
- P0=0xbf;
- delayms(2);
-
- P2=0x80;
- P0=seg[miao_L];
- delayms(2);
-
- P2=0x40;
- P0=seg[miao_H];
- delayms(2);
-
- P2=0x10;
- P0=seg[fen_L];
- delayms(2);
- P2=0x08;
- P0=seg[fen_H];
- delayms(2);
-
- P2=0x02;
- P0=seg[shi_L];
- delayms(2);
- P2=0x01;
- P0=seg[shi_H];
- delayms(2);
- }
- void main(void)
- {
- TMOD|=0x01;
- TH0=15536/256;
- TL0=15536%256;
- EA=1;
- ET0=1;
- TR0=1;
- while(1)
- {
- display();
- }
- }
- void time() interrupt 1
- {
- count++;
- if(count==20)
- {
- count=0;
- miao++;
- if(miao==60)
- {
- miao=0;
- fen++;
- if(fen==60)
- {
- fen=0;
- shi++;
- if(shi==24)
- {
- shi=0;
- fen=0;
- miao=0;
- }
- }
- }
- miao_L=miao%10;
- miao_H=miao/10%10; //<---------
- fen_L=fen%10;
- fen_H=fen/10%10; //<---------
- shi_L=shi%10;
- shi_H=shi/10%10; //<---------
- }
- }
复制代码 |