📄 main.c
字号:
{
unsigned char status4,ttt3,status3;
unsigned int i;
status4=scankey();
if(status4==0)
{
for(i=0;i<10000;i++);
status3=keyvalue();
if(status3==0)
{
if(timenum>13)timenum=0;
timenum++;
while(1)
{
ttt3=keyvalue();
if(status3!=ttt3)break;
}
return 0;
}
}
else
return 99;
}
void write_time(unsigned char addr,unsigned char *time)
{
unsigned char i;
for(i=0;i<7;i++)
EEPROMwrite(addr*16+i,time[i]);
}
void main(void)
{
unsigned char status2,status3,status4,ttt3;
unsigned int i,now_time;
unsigned char modecounter=0;
unsigned char yyj;
CLI();
// WDTCR=0x18;
// WDTCR=0x10;
MCUCR = 0x30; //进入掉电休眠模式 SE=1,SM0,SM1,SM2 :0,1,0
EICRA = 0x03; //外部中断0的中断模式,上升沿触发中断
EICRB = 0x80; //外部中断7的中断模式,下降沿触发中断
EIMSK = 0x81; //外部中断0和外部中断7的中断任务.
TIMSK = 0x04; //timer interrupt sources
ETIMSK = 0x00; //extended timer interrupt sources
PORTF=0x00;
DDRF=0xFF;
SEI();
timer0_init();
timer1_init();
uart0_init();
displaycount=0;
CLEAR_LIGHT();
init_par(); //init ds1302
// init_val(); //init var
lcd_init(); //lcd init
clear_lcd();
display_1();
CLEAR_BELL();
SET_LED0();
beep(5);
delay(100);
beep(5);
while(1)
{
lcd_init();
if(sio_flag==1)COMM_RX();
Get_1302(time_data);
if(modemstatus==0) //显示正常的日期时间
{
display_time1(time_data);
}
else if(modemstatus==2) //事件录入状态
{
if(readxinghaokey()==0)
{
if(lockkey_flag==1)lockkey_flag=0;
else if(lockkey_flag==0)
{
lockkey_flag=1;
for(i=0;i<16;i++)
{
EEPROMwrite(0x200+i,1);
}
}
}
if(lockkey_flag==1)
{
yyj=readnumberkey();
switch(yyj)
{
case 1:
keynum=0;
if(key1mode>2)key1mode=0;
key1mode++;
EEPROMwrite(0x200,key1mode);
break;
case 2:
keynum=1;
if(key2mode>2)key2mode=0;
key2mode++;
EEPROMwrite(0x200+1,key2mode);
break;
case 3:
keynum=2;
if(key3mode>2)key3mode=0;
key3mode++;
EEPROMwrite(0x200+2,key3mode);
break;
case 4:
keynum=3;
if(key4mode>6)key4mode=0;
key4mode++;
EEPROMwrite(0x200+3,key4mode);
break;
case 5:
keynum=4;
if(key5mode>6)key5mode=0;
key5mode++;
EEPROMwrite(0x200+4,key5mode);
break;
case 6:
keynum=5;
if(key6mode>5)key6mode=0;
key6mode++;
EEPROMwrite(0x200+5,key6mode);
break;
case 7:
keynum=6;
if(key7mode>4)key7mode=0;
key7mode++;
EEPROMwrite(0x200+6,key7mode);
break;
case 8:
keynum=7;
if(key8mode>4)key8mode=0;
key8mode++;
EEPROMwrite(0x200+7,key8mode);
break;
case 9:
keynum=8;
if(key9mode>2)key9mode=0;
key9mode++;
EEPROMwrite(0x200+8,key9mode);
break;
case 0:
keynum=9;
if(keyamode>4)keyamode=0;
keyamode++;
EEPROMwrite(0x200+9,keyamode);
break;
case 0x0b:
keynum=10;
if(keybmode>4)keybmode=0;
keybmode++;
EEPROMwrite(0x200+10,keybmode);
break;
default:
break;
}
display_key1();
}
else display_key204();
}
else if(modemstatus==1) //手术过程记录状态
{
if(readxinghaokey()==0)
{
if(lockkey_flag==1)lockkey_flag=0;
else if(lockkey_flag==0)
{
for(i=0;i<238;i++)
{
EEPROMwrite(0x10+i,0);
}
lockkey_flag=1;
for(i=0;i<7;i++)
dis_time[i]=time_data[i];
for(i=0;i<12;i++)
esckey[i]=0;
timenum=1;
}
}
if(lockkey_flag==1)
{
yyj=readnumberkey();
switch(yyj)
{
case 0:
if(esckey[11]==0)
{
for(i=0;i<7;i++)
dis_time[i]=time_data[i];
timenum=11;
esckey[11]=1;
break;
}
else
{
for(i=0;i<7;i++)
dis_time[i]=0;
timenum=11;
esckey[11]=0;
break;
}
case 1:
if(esckey[2]==0)
{
for(i=0;i<7;i++)
dis_time[i]=time_data[i];
timenum=2;
esckey[2]=1;
break;
}
else
{
for(i=0;i<7;i++)
dis_time[i]=0;
timenum=2;
esckey[2]=0;
break;
}
case 2:
if(esckey[3]==0)
{
for(i=0;i<7;i++)
dis_time[i]=time_data[i];
timenum=3;
esckey[3]=1;
break;
}
else
{
for(i=0;i<7;i++)
dis_time[i]=0;
timenum=3;
esckey[3]=0;
break;
}
case 3:
if(esckey[4]==0)
{
for(i=0;i<7;i++)
dis_time[i]=time_data[i];
timenum=4;
esckey[4]=1;
break;
}
else
{
for(i=0;i<7;i++)
dis_time[i]=0;
timenum=4;
esckey[4]=0;
break;
}
case 4:
if(esckey[5]==0)
{
for(i=0;i<7;i++)
dis_time[i]=time_data[i];
timenum=5;
esckey[5]=1;
break;
}
else
{
for(i=0;i<7;i++)
dis_time[i]=0;
timenum=5;
esckey[5]=0;
break;
}
case 5:
if(esckey[6]==0)
{
for(i=0;i<7;i++)
dis_time[i]=time_data[i];
timenum=6;
esckey[6]=1;
break;
}
else
{
for(i=0;i<7;i++)
dis_time[i]=0;
timenum=6;
esckey[6]=0;
break;
}
case 6:
if(esckey[7]==0)
{
for(i=0;i<7;i++)
dis_time[i]=time_data[i];
timenum=7;
esckey[7]=1;
break;
}
else
{
for(i=0;i<7;i++)
dis_time[i]=0;
timenum=7;
esckey[7]=0;
break;
}
case 7:
if(esckey[8]==0)
{
for(i=0;i<7;i++)
dis_time[i]=time_data[i];
timenum=8;
esckey[8]=1;
break;
}
else
{
for(i=0;i<7;i++)
dis_time[i]=0;
timenum=8;
esckey[8]=0;
break;
}
case 8:
if(esckey[9]==0)
{
for(i=0;i<7;i++)
dis_time[i]=time_data[i];
timenum=9;
esckey[9]=1;
break;
}
else
{
for(i=0;i<7;i++)
dis_time[i]=0;
timenum=9;
esckey[9]=0;
break;
}
case 9:
if(esckey[10]==0)
{
for(i=0;i<7;i++)
dis_time[i]=time_data[i];
timenum=10;
esckey[10]=1;
break;
}
else
{
for(i=0;i<7;i++)
dis_time[i]=0;
timenum=10;
esckey[10]=0;
break;
}
case 0x0b:
if(esckey[12]==0)
{
for(i=0;i<7;i++)
dis_time[i]=time_data[i];
timenum=12;
esckey[12]=1;
break;
}
else
{
for(i=0;i<7;i++)
dis_time[i]=0;
timenum=12;
esckey[12]=0;
break;
}
default:
break;
}
display_record(dis_time);
write_time(timenum,dis_time);
}
else display_time2();
}
else if(modemstatus==3) //计时记录查询状态
{
if(readxinghaokey()==0)
{
if(lockkey_flag==1)lockkey_flag=0;
else if(lockkey_flag==0)
{
lockkey_flag=1;
timenum=1;
for(i=0;i<7;i++)
dis_time[i]=EEPROMread(timenum*16+i);
}
}
if(lockkey_flag==1)
{
yyj=readnumberkey();
switch(yyj)
{
case 0:
timenum=11;
for(i=0;i<7;i++)
dis_time[i]=EEPROMread(timenum*16+i);
break;
case 1:
timenum=2;
for(i=0;i<7;i++)
dis_time[i]=EEPROMread(timenum*16+i);
break;
case 2:
timenum=3;
for(i=0;i<7;i++)
dis_time[i]=EEPROMread(timenum*16+i);
break;
case 3:
timenum=4;
for(i=0;i<7;i++)
dis_time[i]=EEPROMread(timenum*16+i);
break;
case 4:
timenum=5;
for(i=0;i<7;i++)
dis_time[i]=EEPROMread(timenum*16+i);
break;
case 5:
timenum=6;
for(i=0;i<7;i++)
dis_time[i]=EEPROMread(timenum*16+i);
break;
case 6:
timenum=7;
for(i=0;i<7;i++)
dis_time[i]=EEPROMread(timenum*16+i);
break;
case 7:
timenum=8;
for(i=0;i<7;i++)
dis_time[i]=EEPROMread(timenum*16+i);
break;
case 8:
timenum=9;
for(i=0;i<7;i++)
dis_time[i]=EEPROMread(timenum*16+i);
break;
case 9:
timenum=10;
for(i=0;i<7;i++)
dis_time[i]=EEPROMread(timenum*16+i);
break;
case 0x0b:
timenum=12;
for(i=0;i<7;i++)
dis_time[i]=EEPROMread(timenum*16+i);
break;
default:
break;
}
display_record(dis_time);
}
else
display_time();
}
else if(modemstatus==4) //查询病人信息记录
{
if(readxinghaokey()==0)
{
if(lockkey_flag==1)lockkey_flag=0;
else if(lockkey_flag==0)lockkey_flag=1;
}
if(lockkey_flag==1)
{
yyj=readnumberkey();
switch(yyj)
{
case 1:
keynum=0;
key1mode=EEPROMread(0x200);
break;
case 2:
keynum=1;
key2mode=EEPROMread(0x200+1);
break;
case 3:
keynum=2;
key3mode=EEPROMread(0x200+2);
break;
case 4:
keynum=3;
key4mode=EEPROMread(0x200+3);
break;
case 5:
keynum=4;
key5mode=EEPROMread(0x200+4);
break;
case 6:
keynum=5;
key6mode=EEPROMread(0x200+5);
break;
case 7:
keynum=6;
key7mode=EEPROMread(0x200+6);
break;
case 8:
keynum=7;
key8mode=EEPROMread(0x200+7);
break;
case 9:
keynum=8;
key9mode=EEPROMread(0x200+8);
break;
case 0:
keynum=9;
keyamode=EEPROMread(0x200+9);
break;
case 0x0b:
keynum=10;
keybmode=EEPROMread(0x200+10);
break;
default:
break;
}
display_key1();
}
else
display_even();
}
else if(modemstatus==5) //修改时间状态
{
display_time3();
if(readxinghaokey()==0)
{
setup_time();
}
else
;
}
status4=scankey();
if(status4==0)
{
for(i=0;i<10000;i++);
status3=keyvalue();
if(lockkey_flag==1);
else
{
if(status3==0x0b)
{
modecounter++;
if(modecounter>5)modecounter=0;
modemstatus=modecounter;
while(1)
{
ttt3=keyvalue();
if(status3!=ttt3)break;
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -