⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 该程序是医院用的CPCR记录仪的终端控制程序
💻 C
📖 第 1 页 / 共 2 页
字号:
{
 	 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 + -