hamazy
获得 0 次赞
帮助过0人
#include //包含器件配置文件 #define uchar unsigned char #define uint unsigned int char tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //0~9的数码管段码 uchar hour=0,min=0,sec=0; //时,分,秒清零 uchar deta=0; //5ms计数单元清零 bit d_05s=0; //0.5s标志 uchar set=0; //模式设定标志 uchar m=0; uchar flag=0; //RAM掉电标志 void delay(uint k); //延时函数 void conv(); //走时单元转换 void disp(); //走时时间显示函数 sbit SB1=P2^4; //按键1引脚定义 sbit SB2=P2^5; //按键2引脚定义 sbit SB3=P2^6; //按键3引脚定义 sbit SB4=P2^7; sbit SPK=P3^7; //蜂鸣器引脚定义 sbit SET_2=P2^2; sbit M_D=P0^7; //定时器T0初始化 void init_timer() { TMOD=0x01; //设置定时器T0工作模式为1 TH0=-(4800/256); //高字节计数初值 TL0=-(4800%256); //低字节计数初值 IE=0x82; //启用定时器T0中断产生 TR0=1; //启动定时器T0开始计时 } //5ms定时中断 void T0_srv(void) interrupt 1 { TH0=-(4800/256); //重置定时器计时初始值 TL0=-(4800%256); deta++; //计数单元值递增 } //时分秒单元及走时单元转换 void conv() { if(deta=200){sec++;deta=0;} if(sec==60){min++;sec=0;} if(min==60){hour++;min=0;} if(hour==24){hour=0;} } void disp() { P0=tab[hour/10];P2=0xf7;delay(2); P0=tab[hour%10];P2=0xfb;delay(2); if(d_05s==1){if(SET_2==0)M_D=0;else M_D=1;} delay(2); P0=tab[min/10];P2=0xfd;delay(2); P0=tab[min%10];P2=0xfe;delay(2); } void set_time() { uchar m; //TR0=0; if(SB2==0)delay(5); if(SB2==0)hour++; if(hour=24)hour=0; for(m=0;m