?? test331.c
字號(hào):
#include "weibo0209.h"
uchar status; //status machine start status
uchar digit[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar disp_buff[2],stg_buff[2];
uchar setsection; //設(shè)置分段0,1,2,3
uchar coef[4]={0x0a,0x0a,0x0a,0x0a};//校正系數(shù)
uchar delay; //蜂鳴器延時(shí)
uchar set_power; //功率
uchar timeold,timenow,sec,timeover=0; //時(shí)間
uchar settime[2]={0xff,0xff}; //if(settime[0]<=0x0a),則開(kāi)始進(jìn)入設(shè)置狀態(tài)
uchar timer1s; //1s定時(shí)
uchar coftimeris=31;
uchar powerover=0;
uchar adtimenumber=0,addisp;
uchar Set_TH1,Set_TL1;
uchar adjust_power=0;
uint k;
uchar comp8=1;
main()
{
Ini_sys();
read_parameter();
powerover=0;
while(1)
{
clr_wchdog(); //喂狗
ch451_write(0x403); //開(kāi)鍵盤(pán)顯示
ch451_write(0x500); //設(shè)置默認(rèn)顯示方式
//-------------------------------
if(set_power<=6)adjust_power=(float)(set_power)*coef[0]/10;
else if(set_power>6&&set_power<=30)adjust_power=(float)(set_power)*coef[1]/10;
else if(set_power>30&&set_power<=50)adjust_power=(float)(set_power)*coef[2]/10;
else adjust_power=(float)(set_power)*coef[3]/10;
keyprocess(); //鍵盤(pán)處理
delayms(40); //延時(shí)10ms
if(status==set){
dispset();
}
else{
disptimpower();
if(timeover){
timeover=0;
beep(1,2);
}
if(powerover){
beep(1,powerover);
powerover=0;
}
}
}
}
void int1()interrupt 2 using 1
{
abnormal();powerover=4;
}
void int0()interrupt 0 using 1 //外部中斷0 系統(tǒng)定時(shí)器100Hz ,10ms
{
uint n;
TH1=0xd8;TL1=0xf0;
// n=adjust_power*15*2;
// if(delay!=0)delay--; //蜂鳴器
if(coftimeris++>50){
statusmachin(); //檢測(cè)狀態(tài)變化
coftimeris=0;
clr_wchdog(); //喂狗
}
if(status==zlstart||status==llstart){
if(adtimenumber++>=10){ //采集100ms
addisp=0;
TR0=0;
k|=TH0;
k<<=8;
k|=TL0;
TL0=0;TH0=0;
TR0=1;
adtimenumber=0;
// if(comp8==9){
// if(k<150){comp8=5;}
// else comp8=0;
// addisp=(uchar)((float)k/7.5);
// }
// else{
// if(k<15){comp8=5;}
// else comp8=0;
// addisp=(uchar)((float)k/1.5);
// }
//
addisp=(uchar)(k/3);
k=0;
// if(addisp>=100){
// abnormal();powerover=5;
// }
//應(yīng)該試驗(yàn)確定大約多少瓦時(shí)確定多少觸發(fā)時(shí)間
// if(addisp>adjust_power){ //實(shí)際大于設(shè)定,則觸發(fā)需要后移,延時(shí)增加,T1初始值減小
// if(Set_TL1>1+(addisp-adjust_power))
// Set_TL1-=(addisp-adjust_power);
// else{
// if(Set_TH1>0xe4){Set_TL1=0xff;Set_TH1--;}
// else{ //{Set_TH1=0xe4;Set_TL1=0;}
// abnormal(); //觸發(fā)達(dá)到最小,但是采集到的功率還是大,則出錯(cuò),關(guān)閉
// powerover=2;
// }
// }
// }
// else if(addisp<adjust_power){
// if(Set_TL1<0xfe-2*(adjust_power-addisp))
// Set_TL1+=2*(adjust_power-addisp);
// else{
// if(Set_TH1<0xf0){
// Set_TL1=0;
// Set_TH1++;
// }
// else{ //{Set_TL1=0x00;Set_TH1=0xf0;}
// abnormal();//觸發(fā)達(dá)到最大,但是采集到的功率還是不夠,則出錯(cuò),關(guān)閉
// powerover=3;
// }
// }
// }
// else{;}
// TH1=Set_TH1;TL1=Set_TL1;
}
}
//---------------處理設(shè)置狀態(tài)的時(shí)間
// if(settime[0]<0x0b&&settime[0]>0){
// if(settime[1]>=1)settime[1]--;
// else {
// if(settime[0]>=1){settime[0]--;settime[1]=100;}
// else {settime[0]=0;settime[1]=0;}
// }
// }
}
void keyprocess(void)
{
uchar key=0xff;
if(!pushSW){ //腳踏開(kāi)關(guān)
switch(status){
case llstart: //不是治療狀態(tài),復(fù)位為治療態(tài)
case llprepare:{timeold=0;timenow=0;set_power=0;status=zlprepare;}break;
case zlprepare:{ //再次踩腳踏開(kāi)關(guān),如果條件允許,則開(kāi)始工作
if(timenow&&set_power)status=zlstart;
else status=zlprepare;
}break;
}
}
key=ch451_read();
key&=0x7f;
switch(key){
case llkeypress:{ //理療
switch(status){
case zlstart: //不是理療狀態(tài),復(fù)位為理療態(tài)
case zlprepare:{timeold=0;timenow=0;set_power=0;status=llprepare;}break;
case llprepare:{//再次按下理療鍵,如果條件允許,則開(kāi)始工作
if(timenow&&set_power)status=llstart;
else status=llprepare;
}break;
}
}
break;
///////////////////////////////////////
case resetkeypress:{ //復(fù)位按下
if(status==llstart){timenow=timeold;status=llprepare;}
if(status==zlprepare){ //假如在治療準(zhǔn)備狀態(tài)下按下復(fù)位鍵,如果沒(méi)有開(kāi)始設(shè)置
if(settime[0]>0x0a){settime[0]=0x0a;settime[1]=100;} //則設(shè)置settime
//-----
if(settime[0]==0x00){ //假如按鍵時(shí)間超過(guò)10s
ch451_write(CH451_DIG5|set);
settime[0]=0xff;settime[1]=0xff;
read_parameter();status=set; //轉(zhuǎn)移為設(shè)置狀態(tài),讀參數(shù)
}
//---
}
if (status==set){ //假如再設(shè)置狀態(tài)下按下復(fù)位健,則返回
if(settime[0]>0x0a){settime[0]=0x0a;settime[1]=100;} //則設(shè)置settime
//---
if(settime[0]==0x00){ //假如按鍵時(shí)間超過(guò)10s
ch451_write(CH451_DIG5|llprepare);
settime[0]=0xff;settime[1]=0xff;
save_parameter();status=zlprepare; //轉(zhuǎn)移為治療準(zhǔn)備狀態(tài),寫(xiě)參數(shù)
}
//---
}
}break;
case resetkeyup:{ //復(fù)位鍵抬起
if(settime[0]!=0x00){ //復(fù)位鍵沒(méi)有按下10s
settime[0]=0xff;settime[1]=0xff;
}
}break;
////////////////////////////////////////////////////////////
case timeaddkeypress:{ //時(shí)間加
if(status==set){
if(setsection==3)setsection=0;
else setsection++;
}
else{
if(timenow>=99)timenow=0;
else timenow++;
timeold=timenow;
}
}
break;
case timedeckeypress:{ //時(shí)間減
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(set_power>=60)set_power=0;
else set_power++;
}
if(status==llstart||status==llprepare){
if(set_power>=30)set_power=0;
else set_power++;
}
}
}
break;
case powerdeckeypress:{ //功率減
if(status==set){
if(coef[setsection]==6)coef[setsection]=15;
else coef[setsection]--;
}
else{
if(status==zlstart||status==zlprepare){
if(set_power<1)set_power=60;
else set_power--;
}
if(status==llstart||status==llprepare){
if(set_power<1)set_power=30;
else set_power--;
}
}
}
break;
}
if(status==set)dispset();
else disptimpower();
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -