|
#include #define uint unsigned int#define uchar unsigned char uint temp,tt,qian,bai,shi,ge; ***it smg_q=P1^4; ***it smg_b=P1^5; ***it smg_s=P1^6; ***it smg_g=P1^7; ***it key1 = P3^4; ***it key2 = P3^5; ***it key3 = P3^6; uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar code table1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //带小数点 void keyscan(); void display(uint shi,uint ge); void delay(uint z); void init(); /************************************************************** 主函数 ******************************************************************/ void main() { init();//初始化子程序 while(1) { keyscan(); display(shi,ge); } } /********************************************************************* 延时 ***********************************************************************/ void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /********************************************************************* 按键控制 ***********************************************************************/ void keyscan() { if(key1==0) //暂停计时 { delay(10); if(key1==0){while(!key1); TR0=~TR0;} } { if(key2==0){delay(10);if(key2==0){bai=bai+1;}if(bai==10){bai=0; qian=qian+1;}while(key2==0);}if(TR0==0) if(key3==0){delay(10);if(key3==0){bai=bai-1;}if(bai==0){ qian=qian-1; }while(key3==0); } } }/********************************************************************* 显示 ***********************************************************************/ void display(uint shi,uint ge) { smg_q=0; P2=table[qian]; delay(1); smg_q=1; P2=0xff; smg_b=0; P2=table1[bai]; delay(1); smg_b=1; P2=0xff; smg_s=0; P2=table[shi]; delay(1); smg_s=1; P2=0xff; smg_g=0; P2=table[ge]; delay(1); smg_g=1; P2=0xff; } /********************************************************************* 初始化 ***********************************************************************/ void init() { smg_q=1; smg_b=1; smg_s=1; smg_g=1; temp=0; TMOD=0x01; TH0=(65536-10000)/256; TL0=(65536-10000)%256; EA=1; ET0=1; TR0=1; } /********************************************************************* 中断 ***********************************************************************/ void t0() interrupt 1 { TH0=(65536-10000)/256; TL0=(65536-10000)%256; tt++; if(tt==1) { tt=0; temp++; if(temp==10000) { temp=0; } qian=temp/1000; bai=temp%1000/100; shi=temp%100/10; ge=temp%10; } }
|