#include<reg51.h> #define uchar unsigned char #define uint unsigned int sbit p3_3=P3^3; sbit p2_7=P2^7; char led_mod[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf}; char led_com[]={0x01,0x02,0x04,0x08,0x10,0x20}; sbit BEER=P1^1; int TENms,s,m; char data_time[6]; void display() { uint k; data_time[0]=m; data_time[1]=10; data_time[2]=s/10; data_time[3]=s%10; data_time[4]=TENms/10; data_time[5]=TENms%10; for(k=0;k<6;k++) { P2=0xff; P3=led_com[k]; P2=led_mod[data_time[k]]; if(k==3) { p2_7=0; } } } isr_10msT0() interrupt 1 { TH0=(65536-10000)/256; TL0=(65536-10000)%256; TENms++; BEER=0; if(TENms==100) { TENms=0; s++; BEER=1; } if(s==60) { s=0; m++; } if(m==9&&s==59&&TENms==99) { m=9; BEER=0; TENms=0; TR0=0; } } void main(void) { TENms=0; s=0; m=0; BEER=0; TMOD=0x01; TH0=(65536-10000)/256; TL0=(65536-10000)%256; ET0=1; EA=1; while(1) { display(); switch(P1&0xe0) { case 0xc0:TR0=1;break; case 0xa0:TR0=0;TR0=0;break; case 0x60:TR0=0;TENms=0;s=0;m=0;TR0=0;break; } } } 全部功能正常谢谢各位 |
![]()
|
![]() 1。没消影 2。没延时 3。多余的延时 4。不能大于2^16(65536) |
这个坛里保姆不多,请先注释好程序,谢谢 ![]() |
其他且不论先点一个数码管正常后再点第二直到所有正常后再调试其他功能 |