📄 iron.asm
字号:
;==========================================================================================; SH69P822;; (c) Copyright 2006-2007, Sino Wealth Microelectronics Corporation Limited; All Rights Reserved;; module name : Iron.asm version : 1.0; function : ; by : CLR; in : 2007-02-13;;==========================================================================================IronProcessor: lda zIronMode ,0 ba3 IronIsSetting IronIsWorking: lda zIronState ,0 ba0 BeginIronUnheat ba1 IronUnheat ba2 Ironheat jmp IronProcessor_Over BeginIronUnheat: ldi rzTBR ,UnheatTab_TBR ldi zWk0 ,0111b and zIronMode ,0 sta zWk0 ,0 adim zWk0 ,UnheatTab_ACC eor zWk0 ,0 adcm rzTBR ,0 lda zWk0 call UnheatTab sta zCounter_IronCtrl ,0 lda rzTBR ,0 sta zCounter_IronCtrl+1 ,0 lda zCounter_IronCtrl ,0 or zCounter_IronCtrl+1 ,0 baz BeginIronHeat andim zIntFlag ,0111b ldi zIronState ,0010b ;set unheat request ldi zIronCtrl ,0001b ;unheat andim PIN_IRON ,IRON^0x0f //Ctrl = L IronUnheat: lda zIntFlag ,0 ba3 $+2 jmp IronProcessor_Over andim zIntFlag ,0111b sbim zCounter_IronCtrl ,0x01 eor zCounter_IronCtrl ,0 sbcm zCounter_IronCtrl+1 ,0 or zCounter_IronCtrl ,0 bnz IronProcessor_Over BeginIronHeat: ldi rzTBR ,HeatTab_TBR ldi zWk0 ,0111b and zIronMode ,0 sta zWk0 ,0 adim zWk0 ,HeatTab_ACC eor zWk0 ,0 adcm rzTBR ,0 lda zWk0 call HeatTab sta zCounter_IronCtrl ,0 lda rzTBR ,0 sta zCounter_IronCtrl+1 ,0 or zCounter_IronCtrl ,0 baz BeginIronUnheat andim zIntFlag ,0111b ldi zIronState ,0100b ;set heat reqest ldi zIronCtrl ,0010b Ironheat: lda zIronCtrl ,0 ba1 IronProcessor_Over lda zIntFlag ,0 ba3 $+2 jmp IronProcessor_Over andim zIntFlag ,0111b sbim zCounter_IronCtrl ,0x01 eor zCounter_IronCtrl ,0 sbcm zCounter_IronCtrl+1 ,0 or zCounter_IronCtrl ,0 bnz IronProcessor_Over jmp BeginIronUnheatIronIsSetting: ldi zIronCtrl ,0001b ;0001b //unheat ;0010b //heat// orim PIN_IRON ,IRON //Ctrl = H ;unheat andim PIN_IRON ,IRON^0x0f //Ctrl = L ldi zIronMode ,1000b+IRON_MODE6IronProcessor_Over: jmp Exit_IronProcessor IncreaseIronSetpoint:;if in workMode,then system enter setMode lda zIronMode ,0 ba3 $+3 orim zIronMode ,1000b ;the first time enter setMode will not increase setPoint immediately jmp ?exit ;if setPoint already equal the maxValue,skip. lda zCFMaxValue+0 sub zIronSP+0 bnz ?addSP lda zCFMaxValue+1 sub zIronSP+1 bnz ?addSP lda zCFMaxValue+2 sub zIronSP+2 baz ?exit ?addSP: adim zIronSP ,0x01 daa zIronSP eor zIronSP ,0 adcm zIronSP+1 ,0 daa zIronSP+1 eor zIronSP+1 ,0 adcm zIronSP+2 daa zIronSP+2 ?exit: jmp AdjustSetpointOverDecreaseIronSetpoint:;if in workMode,then system enter setMode lda zIronMode ,0 ba3 $+3 orim zIronMode ,1000b ;the first time enter setMode will not decrease setPoint immediately jmp ?exit ;if setPoint already equal the minValue,skip. lda zCFMinValue+0 sub zIronSP+0 bnz ?subSP lda zCFMinValue+1 sub zIronSP+1 bnz ?subSP lda zCFMinValue+2 sub zIronSP+2 baz ?exit ?subSP: sbim zIronSP ,0x01 das zIronSP eor zIronSP ,0 sbcm zIronSP+1 ,0 das zIronSP+1 eor zIronSP+1 ,0 sbcm zIronSP+2 das zIronSP+2 ?exit: AdjustSetpointOver: ;after adjust Setpoint,reinit setMode-life-span andim zIntFlag1 ,1101b ldi zCounter_Iron5000ms ,(TIMER_IRON_5000MS) & 0x0f ldi zCounter_Iron5000ms+1 ,(TIMER_IRON_5000MS>>4) & 0x0f ldi zCounter_Iron5000ms+2 ,(TIMER_IRON_5000MS>>8) & 0x0f rtni UpdateWorkMode: lda zIronMode ,0 ba3 ?exit //2007-05-18 lda zIronCT ,0 eor zIronSP ,0 bnz ?update lda zIronCT+1 ,0 eor zIronSP+1 ,0 bnz ?update lda zIronCT+2 ,0 eor zIronSP+2 ,0 bnz ?update nop nop jmp ?exit // ?update: andim zIronMode ,1000b lda zIronCT ,0 sub zIronSP ,0 sta zWk0 ,0 das zWk0 lda zIronCT+1 ,0 sbc zIronSP+1 ,0 sta zWk1 das zWk1 lda zIronCT+2 ,0 sbc zIronSP+2 ,0 sta zWk2 das zWk2 bnc ?enterMode6 lda zWk0 ,0 or zWk1 ,0 or zWk2 ,0 baz ?enterMode6 ?judge5: lda zCFIRON_N5 sub zWk0 sta zWk3 ,0 das zWk3 lda zCFIRON_N5+1 sbc zWk1 ,0 sta zWk3 ,0 das zWk3 lda zCFIRON_N5+2 sbc zWk2 ,0 sta zWk3 ,0 das zWk3 bnc ?enterMode5?judge4: lda zCFIRON_N4 sub zWk0 sta zWk3 ,0 das zWk3 lda zCFIRON_N4+1 sbc zWk1 ,0 sta zWk3 ,0 das zWk3 lda zCFIRON_N4+2 sbc zWk2 ,0 sta zWk3 ,0 das zWk3 bnc ?enterMode4?judge3: lda zCFIRON_N3 sub zWk0 sta zWk3 ,0 das zWk3 lda zCFIRON_N3+1 sbc zWk1 ,0 sta zWk3 ,0 das zWk3 lda zCFIRON_N3+2 sbc zWk2 ,0 sta zWk3 ,0 das zWk3 bnc ?enterMode3?judge2: lda zCFIRON_N2 sub zWk0 sta zWk3 ,0 das zWk3 lda zCFIRON_N2+1 sbc zWk1 ,0 sta zWk3 ,0 das zWk3 lda zCFIRON_N2+2 sbc zWk2 ,0 sta zWk3 ,0 das zWk3 bnc ?enterMode2?judge1: lda zCFIRON_N1 sub zWk0 sta zWk3 ,0 das zWk3 lda zCFIRON_N1+1 sbc zWk1 ,0 sta zWk3 ,0 das zWk3 lda zCFIRON_N1+2 sbc zWk2 ,0 sta zWk3 ,0 das zWk3 bnc ?enterMode1?enterMode0: orim zIronMode ,IRON_MODE0 jmp ?exit ?enterMode1: orim zIronMode ,IRON_MODE1 jmp ?exit?enterMode2: orim zIronMode ,IRON_MODE2 jmp ?exit ?enterMode3: orim zIronMode ,IRON_MODE3 jmp ?exit?enterMode4: orim zIronMode ,IRON_MODE4 jmp ?exit?enterMode5: orim zIronMode ,IRON_MODE5 jmp ?exit ?enterMode6: orim zIronMode ,IRON_MODE6?exit: rtni ReturnToWorkState: lda zIronMode ,0 ba3 $+2 jmp ?exit lda zIntFlag1 ,0 ba1 $+2 jmp ?exit andim zIntFlag1 ,1101b ?reWork: ;decount setMode-Life-Span here: sbim zCounter_Iron5000ms ,0x01 eor zCounter_Iron5000ms ,0 sbcm zCounter_Iron5000ms+1 ,0 eor zCounter_Iron5000ms+1 ,0 sbcm zCounter_Iron5000ms+2 ,0 or zCounter_Iron5000ms+1 ,0 or zCounter_Iron5000ms ,0 bnz ?exit ;system will reEnter workMode from setMode after setMode-Life-Span elapsed andim zIronMode ,0111b ldi zCounter_Iron5000ms ,(TIMER_IRON_5000MS) & 0x0f ldi zCounter_Iron5000ms+1 ,(TIMER_IRON_5000MS>>4) & 0x0f ldi zCounter_Iron5000ms+2 ,(TIMER_IRON_5000MS>>8) & 0x0f ?exit: rtni ;----------------------------------END-----------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -