static uchar set_ok2;
uchar count = 0; //用于记录定时器进入中断次数,以实现长时间定时 uchar
code
keyval[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x10,0x11,0x12,0x13,0x18,0x19,0x1a,0x1b}; uchar
code
SEG[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; uchar key; sbit BUSY = P3^4; sbit STOBE = P3^5; void init(); void scan_tim(); void delay(uint tem); void KbDisInit(); uchar ReadKey();
11
void Display(uchar y); void time0_init(); void send(uint tem); void lcd_init();
void lcd_disp_ascii(uint x,uint y,uchar dat); void disp_time(uint x,uint y,uchar s);
void init() //初始化 {
set_ok = 0; //允许设定时间 set_ok2 = 0 ;
hour = 12; //设定时钟初值 min = 0; scond = 0;
s_hour =12; //设定闹钟初值 s_min = 0;
12
s_scond = 0;
s_hour2 =12; //设定闹钟初值 s_min2 = 0; s_scond2 = 0;
lcd_init(); KbDisInit();
disp_time(s_site_x,s_site_y,scond); disp_time(m_site_x,m_site_y,min); disp_time(h_site_x,h_site_y,hour);
disp_time(s_site_x+8,s_site_y+17,scond); disp_time(m_site_x+8,m_site_y+17,min); disp_time(h_site_x+8,h_site_y+17,hour);
13
disp_time(s_site_x+8,s_site_y+25,scond); disp_time(m_site_x+8,m_site_y+25,min); disp_time(h_site_x+8,h_site_y+25,hour); lcd_disp_ascii(2,0,58); lcd_disp_ascii(5,0,58); time0_init(); }
uchar ReadKey() {
if(XBYTE[0xCFE9]&0x07) {
XBYTE[0xCFE9]=0x40; key=XBYTE[0xCFE8]; } return 0;
14
}
void Display(uchar y) {
XBYTE[0xCFE9]=0x80; XBYTE[0xCFE8]=SEG[y]; }
void lcd_disp_ascii(uint x,uint y,uchar dat) // {
send(0xf1); send(x); send(y); send(dat); }
void lcd_disp_hanzhi(uint x,uint y,uchar dat1,uchar dat2)
15
//