메뉴 바로가기
서브메뉴 바로가기
본문 바로가기
// 250uS 마다 동작하고 4번 동작시 1ms 가 된다. // Timer 0 output compare interrupt service routine interrupt [TIM0_COMP] void OnTimer0_comp_isr(void) { // 256uS X 4 마다 수행 if(stateKeyInput.uiTimer0) stateKeyInput.uiTimer0--; if(stateLedOut.uiTimer0) stateLedOut.uiTimer0--; TCNT0 =0x00; //위치 주의// 시간계산이 정확히 1mS로 안되기 때문에.. if(stateDisplayLCD.uiTimer0) stateDisplayLCD.uiTimer0--; if(stateOneSecond.uiTimer0) stateOneSecond.uiTimer0--; if(stateOperLED.uiTimer0) stateOperLED.uiTimer0--; if(statePIDCOOL.uiTimer0) statePIDCOOL.uiTimer0--; if(statePIDHEAT.uiTimer0) statePIDHEAT.uiTimer0--; if(statePIDHUMI.uiTimer0) statePIDHUMI.uiTimer0--; if(stateFAN.uiTimer0) stateFAN.uiTimer0--; if(stateMainClock.uiTimer0) stateMainClock.uiTimer0--; if(stateADC.uiTimer0) stateADC.uiTimer0--; if(infoReadTempHumi.uiTimer0) infoReadTempHumi.uiTimer0--; if(stateOUT_main.uiTimer0) stateOUT_main.uiTimer0--; if(stateCOMPCheck.uiTimer0) stateCOMPCheck.uiTimer0--; if(stateComp1.uiTimer0) stateComp1.uiTimer0--; if(stateComp2.uiTimer0) stateComp2.uiTimer0--; if(stateDefrost.uiTimer0) stateDefrost.uiTimer0--; if(stateDrain.uiTimer0) stateDrain.uiTimer0--; if(stateHEATCheck.uiTimer0) stateHEATCheck.uiTimer0--; if(stateHUMICheck.uiTimer0) stateHUMICheck.uiTimer0--; if(stateErrorCheckWaterLeak.uiTimer0) stateErrorCheckWaterLeak.uiTimer0--; if(stateErrorCheckRM.uiTimer0) stateErrorCheckRM.uiTimer0--; if(stateErrorCheckFire.uiTimer0) stateErrorCheckFire.uiTimer0--; // } }
while(1) { #asm("WDR") OperatingOneSecond(&stateOneSecond); OperatingDisplayLCD(); OperatingLedOut(); OperatingRxFromMonitor(); OperatingPID(&statePIDCOOL); OperatingRxFromPC(); OperatingTxToPC(); OperatingLED(); OperatingADC(); }
void OperatingOneSecond(struct _FUNC_INFO *structThisState){ if(structThisState->uiTimer0) return; structThisState->uiTimer0=1000; // ALARM OUT if (IsSystemError()) { OUTA_ON(OUTA_AL); }else{ OUTA_OFF(OUTA_AL); } }
여기에 파일을 끌어 놓거나 왼쪽의 버튼을 클릭하세요.
파일 용량 제한 : 0MB (허용 확장자 : *.*)
업로드 중... (0%)
참고해서 수정해 보세요.^^.
지금이라도 전체 구조를 변경하셔야 할듯합니다ㅡㅡ;