板凳说得有理:还是回去多看看书先吧 尤其是中断部分 |
你的t呢???? TMOD=0x01 你的属于t0的定时器的中断函数呢???? 改过来 上面的定时器初始化 EA=1;ET0=1; t0的中断函数 void t0()interrupt 1 { TR0=0; TH0=(65536-50000)/256; TL0=(65536-50000)%256; a++; if(a==10) { a=0; j++; if(j==3) j=0; } TR1=1; } 大哥还是回去多看看书先吧 尤其是中断部分 |
1 把输出语句放到时间标识内, 2 增加消隐处理。 3 更新的速度不能太快,一般在100Hz左右就可以了。 #include<reg52.h> unsigned char lie[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; unsigned char hang[3][8]={0x00,0x18,0x24,0x24,0x24,0x24,0x18,0x00, //数字0 0x00,0x3c,0x20,0x38,0x04,0x24,0x38,0x00, //数字5 0x00,0x00,0x36,0x49,0x49,0x49,0x36,0x00}; //数字8 int a,i,j; void main() { TMOD=0x01; TH0=(65536-5000)/256; TL0=(65536-5000)%256; TR0=1; while(1) { if(TF0==1) { P1=0xff; P2=hang[j][i]; P1=lie[i]; i++; if(i==8) { i=0; } TF0=0; a++; if(a==100) { a=0; j++; if(j==3) { j=0; } } } } } |