大神帮忙看看为什么我的数码管不显示其他的东西啊
- #include <regx51.h>
- char code seg7cat[17] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xf8,
- 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xBF};//'-'
- void seg7x8_display(unsigned char *p);
- unsigned char dis_buf[8];
- unsigned char T0CNT, m,s,ms;
- void delayms(unsigned int td);
- sbit k1=P1^0; //???
- sbit k2=P1^1; //???
- sbit k3=P1^2; //??λ
- void main(void)
- { unsigned char i;
- T0CNT = m = s = ms = 0;
- for(i=0;i<8;i++) dis_buf[ i ] = 0; //??????????
- TH0 = (65536-10000)/256;
- TL0 = (65536-10000)%256; //??????10ms
- TMOD = 0x01;
- ET0 = 1;
- EA = 1;
- TR0 =0;
-
- for(;;)
- {
- if(k1==0) //?????K1?????
- {
- delayms(10); //???????? ?????10ms
- if(k1==0) //????ж?????????
- {
- TR0=1;
- while(!k1); //???????????
- }
- }
- if(k2==0)
- {
- delayms(10);
- if(k2==0)
- {
- TR0=0;//???????0
- while(!k2);
- }
- }
- if(k3==0)
- {
- delayms(10);
- if(k3==0)
- {
- m = s = ms = 0;
- while(!k3);
- }
- }
- for(;;) { seg7x8_display(dis_buf);
- } }
- }
- void timer0_isr(void) interrupt 1
- { TMOD=0x11;
- TH0=(65536-10000)/256; //10ms???
- TL0=(65536-10000)%256;
- EA=1;
- ET0=1;
- if(++ms >= 100)
- {
- ms=0;
- if(++s>=60)
- {
- s = 0;
- if(++m>60)
- m = 0;
- }
- }
- dis_buf[0] = m/10;
- dis_buf[1] = m%10;
- dis_buf[2] = 16; //'-??
- dis_buf[3] = s/10;
- dis_buf[4] = s%10;
- dis_buf[5] = 16; //'-??
- dis_buf[6] = ms/10;
- dis_buf[7] = ms%10;
- }
- void delayms(unsigned int td)
- { unsigned int i,j;
- for(i=0;i<td;i++)
- for(j=0;j<120;j++){}
- }
- void seg7x8_display(unsigned char *p)
- { unsigned char i;
- for(i=0;i<8;i++)
- { P0 = seg7cat[ p[i] ];
- P2 = ~(1<<i); delayms(1);
- P2 = 0xFF; delayms(1);
- }
- }
复制代码
|