程序:
#include #define uint unsigned int char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳极数码管 0,1,2,3,4,5,6,7,8,9 int Time_temp=0,LED_temp=0; sbit key1=P3^0; sbit key2=P3^2; //--------------T0初始化---------------------- void Time0_Init() { TMOD=0x01; IE=0x82; TH0=0x4c;//装初值 TL0=0x00; } //-----------中断服务程序-------------------- void Time_Int()interrupt 1 { TH0=0x4c;//重装初值 TL0=0x00; Time_temp++; if(Time_temp==20)//定时器溢出时间50毫秒,相当于隔1秒,数码管的数据改变一次 { LED_temp++; Time_temp=0; } if(LED_temp==100)LED_temp=0;//这个数用来送数码管显示,计数到100清零 } //--------------延时程序----------- void delayms(uint xms) { uint i,j; for(i=xms;i>0;i--)//i=xms即延时xms毫秒 for(j=110;j>0;j--); } //------------主程序------------------ void main(void) { Time0_Init(); while(1) { P0=table[LED_temp/10];//把一个两位数分离后分别送到数码管显示 P2=table[LED_temp%10];//十位和个位 if(key2==0) { delayms(10);//检测按键抖动,加延时程序检测是否有按键按下 if(key2==0) { LED_temp=0;//清0 while(!key2); } } if(key1==0) { delayms(10);//检测按键抖动,加延时程序检测是否有按键按下 if(key1==0) { while(!key1);//等待按键释放 TR0=~TR0;//启动或停止定时器0 } } } } C1122pFX119U1XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617A0A1A2A3A4A5A6A7B0B1B2B3B4B5B6B7P3.0P3.2RP1RESPACK-7C218XTAL2SW322pFR39SW-SPST-MOM220RST2345678A0A1A2A3A4A5A6A0A1A2A3A4A5A6C310u293031PSENALEEAB0B1B2B3B4B5B6R110kLED1SW1P3.0SW-SPST-MOMLED212345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51SW2P3.2SW-SPST-MOM 因篇幅问题不能全部显示,请点此查看更多更全内容