P/W-Autoモードプログラミング

前回のつづきで、PICマイコンのプログラム
前回の解析で、なんか、、予想以上に簡単なロジックでいけそうな感じだったので、
さらっと、書いてみます。
AUTOでWINDOWを閉める動作部分です。
if(V == 4){
// Auto UP
N1on();//【UP開始】
__delay_ms(200);//【0.2秒待つ】
int Amax = getRVRval();//【MAX設定値読み込み】
int Amin = getLVRval();//【MIN設定値読み込み】
while(1){//【LOOP開始】
//——————————————
// push other button
//——————————————
int V2 = getMenuButton();//【その他のボタンを押下をチェック】
if(V2 && (V2 != V)){ //【他のボタンが押されてたら終了】
allClear();//【全てOFF】
break;
}
//——————————————
// push when closed
//——————————————
int A1 = getAin1();//【電流取得】
if(A1 > Amax){ // 【MAXより多かったら終了】
allClear();
break;
}
//——————————————
// normal
//——————————————
if(A1 > Amin){//【MIN値よりも電流が多い場合】
Delay(150);//【0.15秒待機】
int A2 = getAin1();//【今一度電流チェック】
if(A2 > Amax){ // 【MAXより多かったら閉まってると判断し終了】
allClear();
break;
}else{ // 【MAXほどは多くなっていない➡何かが挟まってると判定】
allClear();//【全て止める】
N2on(); // 【WINDOW下げる】 window down
Delay(500);//【0.5秒待機】
N2off();//【WINDOW下げる終了】
break;
}
}
//——————————————
__delay_ms(50);
}
}
まぁこんな感じではないかと。
雑関数は以下。
//——————————————————————–
// Getting Menu Button Number
//——————————————————————–
int getMenuButton(void){
int A = ADC_GetConversion(AIN_RB3); // RB3 Menu Analog In
int V = 0;
if(A < 64) V = 0;
else if(A < 192) V = 1;
else if(A < 320) V = 2;
else if(A < 448) V = 3;
else if(A < 576) V = 4;
else if(A < 704) V = 5;
else if(A < 832) V = 6;
else if(A < 960) V = 7;
else if(A >=960) V = 8;
return V;
}
//——————————————————————–
// Getting Right Volume value
//——————————————————————–
int getRVRval(void){
int A = ADC_GetConversion(AIN_RB4); // from RIGHT VR voltage(may be 0 to 512)
return A;
}
//——————————————————————–
// Getting Left Volume value
//——————————————————————–
int getLVRval(void){
int A = ADC_GetConversion(AIN_RB5); // from LEFT VR voltage(may be 0 to 512)
return A;
}
//——————————————————————–
// Getting value from Analog #1
//——————————————————————–
int getAin1(void){
int A = ADC_GetConversion(AIN_RB1);
return A;
}
//——————————————————————–
// Getting value from Analog #2
//——————————————————————–
int getAin2(void){
int A = ADC_GetConversion(AIN_RB2);
return A;
}
//——————————————————————–