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

📄 keypress.c

📁 微波治疗仪的源程序
💻 C
字号:

void keyprocess(void)
{
	uchar key=0xff;
	if(!pushSW){         //脚踏开关
		switch(status){
			case llstart:    //不是治疗状态,复位为治疗态
			case llprepare:{timeold=0;timenow=0;power=0;status=zlprepare;}break;
			case zlprepare:{ //再次踩脚踏开关,如果条件允许,则开始工作
				if(timenow&&power)status=zlstart;
				else status=zlprepare;
			}break;
		}
	}
	key=ch451_read();
	key&=0x7f;
	switch(key){
		case llkeypress:{   //理疗
			switch(status){
				case zlstart:   //不是理疗状态,复位为理疗态
				case zlprepare:{timeold=0;timenow=0;power=0;status=llprepare;}break;
				case llprepare:{//再次按下理疗键,如果条件允许,则开始工作
					if(timenow&&power)status=llstart;
					else status=llprepare;
				}break;
			}
		}
		break;
///////////////////////////////////////
		case resetkeypress:{  //复位按下
			if(status==llstart){timenow=timeold;status=llprepare;}
			if(status==zlprepare){  //假如在治疗准备状态下按下复位键,如果没有开始设置
				if(settime[0]>0x0a){settime[0]=0x0a;settime[1]=100;}  //则设置settime
//-----
				if(settime[0]==0x00){  //假如按键时间超过10s
					ch451_write(CH451_DIG5|set);
					settime[0]=0xff;settime[1]=0xff;
					read_parameter();status=set; //转移为设置状态,读参数
				}
//---					
			}
			if (status==set){   //假如再设置状态下按下复位健,则返回
				if(settime[0]>0x0a){settime[0]=0x0a;settime[1]=100;}  //则设置settime
//---
				if(settime[0]==0x00){  //假如按键时间超过10s
					ch451_write(CH451_DIG5|llprepare);
					settime[0]=0xff;settime[1]=0xff;
					save_parameter();status=zlprepare;   //转移为治疗准备状态,写参数
				}
//---
			}
		}break;
		case resetkeyup:{  //复位键抬起
			if(settime[0]!=0x00){  //复位键没有按下10s
				settime[0]=0xff;settime[1]=0xff;
			}
		}break;
////////////////////////////////////////////////////////////
		case timeaddkeypress:{ //时间加
			if(status==set){
				if(setsection==3)setsection=0;
				else setsection++;
			}
			else{
				if(timenow>=99)timenow=0;
				else timenow++;
				timeold=timenow;
			}
		}
		break;
		case timedeckeypress:{ //时间减
			if(status==set){
				if(setsection==0)setsection=3;
				else setsection--;
			}
			else{
				if(timenow==0)timenow=99;
				else timenow--;
				timeold=timenow;
			}
		}
		break;
		case poweraddkeypress:{ //功率加
			if(status==set){
				if(coef[setsection]==15)coef[setsection]=6;
				else coef[setsection]++;
			}
			else{
				if(status==zlstart||status==zlprepare){
					if(power>=60)power=0;
					else power++;
				}
				if(status==llstart||status==llprepare){
					if(power>=30)power=0;
					else power++;
				}
			}
		}
		break;
		case powerdeckeypress:{ //功率减
			if(status==set){
				if(coef[setsection]==6)coef[setsection]=15;
				else coef[setsection]--;
			}
			else{
				if(status==zlstart||status==zlprepare){
					if(power<1)power=60;
					else power--;
				}
				if(status==llstart||status==llprepare){
					if(power<1)power=30;
					else power--;
				}
			}
		}
		break;
	}
	if(status==set)dispset();
	else disptimpower();
}




void keyprocess(void)
{
	uchar key=0xff;
	if(!pushSW){   //脚踏开关
		switch(status){
			case llstart:{timeold=0;timenow=0;power=0;status=zlprepare;}break;//不是治疗状态,复位为治疗态
			case llprepare:{timeold=0;timenow=0;power=0;status=zlprepare;}break;
			case zlprepare:{ //再次踩脚踏开关,如果条件允许,则开始工作
				if(timenow&&power)status=zlstart;
				else status=zlprepare;
			}break;
		}
	}
	key=ch451_read();
	key&=0x7f;
	switch(key){
		case llkeypress:{  //理疗
			switch(status){
				case zlstart:{timeold=0;timenow=0;power=0;status=llprepare;}break;//不是理疗状态,复位为理疗态
				case zlprepare:{timeold=0;timenow=0;power=0;status=llprepare;}break;
				case llprepare:{//再次按下理疗键,如果条件允许,则开始工作
					if(timenow&&power)status=llstart;
					else status=llprepare;
				}break;
			}
		}
		break;
		case resetkeypress:{  //复位按下
			if(status==llstart){timenow=timeold;status=llprepare;}
			if(status==zlprepare){  //假如在治疗准备状态下按下复位键,如果没有开始设置
				if(settime[0]>0x0a){settime[0]=0x0a;settime[1]=100;}  //则设置settime
//-----
				if(settime[0]==0x00){  //假如按键时间超过10s
					ch451_write(CH451_DIG5|0x0f);
					settime[0]=0xff;settime[1]=0xff;
					if(status==zlprepare)
						{read_parameter();status=set;} //转移为设置状态,读参数
					else
						status=zlprepare;    //转移为治疗准备状态
				}
//---					
			}
			if (status==set){   //假如再设置状态下按下复位健,则返回
				if(settime[0]>0x0a){settime[0]=0x0a;settime[1]=100;}  //则设置settime
//---
				if(settime[0]==0x00){  //假如按键时间超过10s
					ch451_write(CH451_DIG5|0x01);
					settime[0]=0xff;settime[1]=0xff;
					if(status==set)
						{save_parameter();status=zlprepare;}   //转移为治疗准备状态,写参数
					else
						status=set;    //转移为设置状态
				}
//---
			}
		}break;
		case resetkeyup:{  //复位键抬起
			if(status==zlprepare){
				if(settime[0]!=0x00){  //复位键没有按下10s
					settime[0]=0xff;settime[1]=0xff;
					status=zlprepare;    //转移为治疗准备状态
				}
			}
			if(status==set){
				if(settime[0]!=0x00){  //复位键没有按下10s
					settime[0]=0xff;settime[1]=0xff;
					status=set;    //转移为设置状态
				}
			}	
		}break;
		case timeaddkeypress:{ //时间加
			if(status==set){
				if(setsection==3)setsection=0;
				else setsection++;
			}
			else{
				if(timenow>=99)timenow=0;
				else timenow++;
				timeold=timenow;
			}
		}
		break;
		case timedeckeypress:{ //时间减
			if(status==set){
				if(setsection==0)setsection=3;
				else setsection--;
			}
			else{
				if(timenow==0)timenow=99;
				else timenow--;
				timeold=timenow;
			}
		}
		break;
		case poweraddkeypress:{ //功率加
			if(status==set){
				if(coef[setsection]==15)coef[setsection]=6;
				else coef[setsection]++;
			}
			else{
				if(status==zlstart||status==zlprepare){
					if(power>=60)power=0;
					else power++;
				}
				if(status==llstart||status==llprepare){
					if(power>=30)power=0;
					else power++;
				}
			}
		}
		break;
		case powerdeckeypress:{ //功率减
			if(status==set){
				if(coef[setsection]==6)coef[setsection]=15;
				else coef[setsection]--;
			}
			else{
				if(status==zlstart||status==zlprepare){
					if(power<1)power=60;
					else power--;
				}
				if(status==llstart||status==llprepare){
					if(power<1)power=30;
					else power--;
				}
			}
		}
		break;
	}
	if(status==set)dispset();
	else disptimpower();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -