;*******************-Comment-**************************** ;*Program Name: KT.TXT * ;*Client: 空调控制器 * ;*System: 柜机 * ;*Subsystem: * ;*MCU: HITACHI HD64D3644 * ;*Oscillation: 10M * ;*Edition: 2003.04.24 * * * ;*******************---End---**************************** .HEADING "KT.TXT" ; .CPU 300H ;******************************************* ;* 中断向量定义 * ;******************************************* .SECTION VECT,CODE,LOCATE=H'0000 .ORG H'0000 ;中断向量表 .DATA.W RESET ;PAGE51 ;********************* .ORG H'000E ; .DATA.W RESET .ORG H'0010 .DATA.W RESET .ORG H'0012 .DATA.W RESET .ORG H'0014 .DATA.W RESET .ORG H'0016 .DATA.W RESET .ORG H'0018 .DATA.W RESET .ORG H'001A .DATA.W RESET .ORG H'001C .DATA.W RESET .ORG H'001E .DATA.W RESET .ORG H'0020 ;IRQ2 .DATA.W IRQ2 .ORG H'0022 ;IRQ3 .DATA.W RESET ; .ORG H'0024 .DATA.W RESET ;********************* .ORG H'0026 ;计数器A .DATA.W TIMEA .ORG H'002A .DATA.W TIMEW ;遥控器接收中断 .ORG H'002C .DATA.W RESET ; .DATA.W TIMEV ;蜂鸣器波形中断 ;********************************** .ORG H'002E .DATA.W RESET .ORG H'0030 .DATA.W RESET .ORG H'0032 .DATA.W RESET ;************************** ;**********RAM SET*********************** ;* 内存定义 * ;**************************************** .SECTION DA,DATA,LOCATE=H'FB80 DATA00 .EQU H'FB80 DATA01 .EQU H'FB81 DATA02 .EQU H'FB82 DATA03 .EQU H'FB83 DATA04 .EQU H'FB84 DATA05 .EQU H'FB85 DATA06 .EQU H'FB86 DATA07 .EQU H'FB87 DATA08 .EQU H'FB88 DATA09 .EQU H'FB89 DATA10 .EQU H'FB8A DATA11 .EQU H'FB8B ;*********** SLP_MIN .EQU H'FB90 SLP_NOW .EQU H'FB91 NHOUR .EQU H'FB92 NMIN .EQU H'FB93 TIM_MIN .EQU H'FB94 OPE_NOW .EQU H'FB95 OPE_MIN .EQU H'FB96 CLO_NOW .EQU H'FB97 CLO_MIN .EQU H'FB98 SEC_COU0 .EQU H'FB9A DATA_D .EQU H'FB9C EADDR .EQU H'FB9D DANLEN .EQU H'FB9E T2_COU .EQU H'FB9F ;******** DELAY0 .EQU H'FBA0 DELAY_5S .EQU H'FBA1 DELAY_5S0 .EQU H'FBA2 DELAY_30S .EQU H'FBA3 ; .EQU H'FBA4 DELAY8 .EQU H'FBA6 ; .EQU H'FBA8 DELAY9 .EQU H'FBA9 SCAN .EQU H'FBAA SCAN1 .EQU H'FBAB SCAN2 .EQU H'FBAC FAN_IN .EQU H'FBAD TEMP0 .EQU H'FBAE ; .EQU H'FBAF ;********** .ORG H'FBB0 TEMP1 .EQU H'FBB0 TEMP2 .EQU H'FBB1 TEMP3 .EQU H'FBB2 VUP .EQU H'FBB3 UPICNT .EQU H'FBB4 ADT1CNT .EQU H'FBB5 ADT2CNT .EQU H'FBB6 ADT3CNT .EQU H'FBB7 ADTMP1 .EQU H'FBB8 ADTMP2 .EQU H'FBBA ADTMP3 .EQU H'FBBC ADVUP .EQU H'FBBE ;*********** SEC_COU .EQU H'FBC0 FROZ_C1 .EQU H'FBC2 COUNT .EQU H'FBC4 CNT .EQU H'FBC5 DRY_COU .EQU H'FBC6 HUA_COU .EQU H'FBC8 F_COU .EQU H'FBCA HS_COU1 .EQU H'FBCC HS_COU .EQU H'FBCE ;*********** AD_T1 .EQU H'FBD0 AD_T2 .EQU H'FBD1 AD_T3 .EQU H'FBD2 T_COU .EQU H'FBD3 STEP_PAI .EQU H'FBD4 ;拍累计,8拍一步 STEP_PAI1 .EQU H'FBD5 STEP_BU .EQU H'FBD6 ;步数累计,指定步数(WORD) STEP_BU1 .EQU H'FBD8 STEP_NOW .EQU H'FBDA ;当前步数(WORD) STEP_NOW0 .EQU H'FBDC STEP_SET .EQU H'FBDE ;设定步数,指定步数(WORD) ;**** STEP_SET1 .EQU H'FBE0 STEP_NOW1 .EQU H'FBE2 ;当前步数(WORD) STEP_NOW10 .EQU H'FBE4 NEW_COU .EQU H'FBE6 FRCBAK .EQU H'FBE8 LRECBAK .EQU H'FBEA RECCNT .EQU H'FBEB MOT_TIM .EQU H'FBEC SCAN0 .EQU H'FBED SEC_CNT .EQU H'FBEE ;******* BUZCNT .EQU H'FBF0 SUO_COU .EQU H'FBF1 TEST_COU .EQU H'FBF2 KEY_CNT .EQU H'FBF4 SCAN3 .EQU H'FBF5 BUZ_COU .EQU H'FBF6 SAV_CNT .EQU H'FBF8 MIN_2 .EQU H'FBFA HANDC .EQU H'FBFC T1_COU .EQU H'FBFE T3_COU .EQU H'FBFF ;********* ; .EQU H'FC00 DELAY_5S1 .EQU H'FC02 BITCNT .EQU H'FC04 TXCODE .EQU H'FC05 TRTCNT .EQU H'FC06 TX_CNT .EQU H'FC07 TADDR .EQU H'FC08 SEND_COU .EQU H'FC0A SEC_COU1 .EQU H'FC0C ; .EQU H'FC0E ;********* REV00 .EQU H'FC10 REV01 .EQU H'FC11 REV02 .EQU H'FC12 REV03 .EQU H'FC13 REV04 .EQU H'FC14 REV05 .EQU H'FC15 REV06 .EQU H'FC16 REV07 .EQU H'FC17 REV08 .EQU H'FC18 REV09 .EQU H'FC19 REV10 .EQU H'FC1A REV11 .EQU H'FC1B ;********* .ORG H'FF00 FLAG0 .EQU H'FF00 MIN3 .BEQU 0,FLAG0 ;压机关三分钟保护 MIN30 .BEQU 1,FLAG0 ;压机开三分钟保护 SEC5 .BEQU 2,FLAG0 ;外风机延迟五秒关 SEC50 .BEQU 3,FLAG0 ;四通阀延迟5秒开 SEC30 .BEQU 4,FLAG0 ;四通阀延迟30秒关 FIRST .BEQU 5,FLAG0 KEY .BEQU 6,FLAG0 ON_OFF .BEQU 7,FLAG0 .ORG H'FF01 FLAG1 .EQU H'FF01 BUZ .BEQU 0,FLAG1 KEY1 .BEQU 1,FLAG1 KEY2 .BEQU 2,FLAG1 FZHA .BEQU 3,FLAG1 SEC1 .BEQU 4,FLAG1 MIN8 .BEQU 5,FLAG1 FLASH .BEQU 6,FLAG1 STEP_RES .BEQU 7,FLAG1 FLAG2 .EQU H'FF02 FANGDJ .BEQU 0,FLAG2 CAOGW .BEQU 1,FLAG2 HUA_CON1 .BEQU 2,FLAG2 WAIFJ .BEQU 3,FLAG2 YASJ .BEQU 4,FLAG2 SITF .BEQU 5,FLAG2 CHUSHI .BEQU 6,FLAG2 NEIFJ .BEQU 7,FLAG2 FLAG3 .EQU H'FF03 SEC10 .BEQU 0,FLAG3 MIN_8 .BEQU 1,FLAG3 ERROR1 .BEQU 2,FLAG3 ERROR2 .BEQU 3,FLAG3 ERROR3 .BEQU 4,FLAG3 ERROR4 .BEQU 5,FLAG3 ERROR5 .BEQU 6,FLAG3 HUA .BEQU 7,FLAG3 FLAG4 .EQU H'FF04 ; .BEQU 0,FLAG4 CLOSE .BEQU 1,FLAG4 WRITEE .BEQU 2,FLAG4 TEST .BEQU 3,FLAG4 MOT_RES .BEQU 4,FLAG4 ; .BEQU 5,FLAG4 TEST_RUN .BEQU 6,FLAG4 TEST_F .BEQU 7,FLAG4 FLAG5 .EQU H'FF05 KEY3 .BEQU 0,FLAG5 THREE_SEC .BEQU 1,FLAG5 BUZ_TWO .BEQU 2,FLAG5 ONLY_CO .BEQU 3,FLAG5 LOCK .BEQU 4,FLAG5 SEC_1 .BEQU 5,FLAG5 REC_OK .BEQU 6,FLAG5 LOW_OK .BEQU 7,FLAG5 FLAG6 .EQU H'FF06 LOW_FIVE .BEQU 0,FLAG6 REC1_OK .BEQU 1,FLAG6 COMP .BEQU 2,FLAG6 TRX_OK .BEQU 3,FLAG6 F_SEND .BEQU 4,FLAG6 F_TRX .BEQU 5,FLAG6 SEC2 .BEQU 6,FLAG6 DIAODIAN .BEQU 7,FLAG6 FLAG7 .EQU H'FF07 CAOGW0 .BEQU 0,FLAG7 CAOGW1 .BEQU 1,FLAG7 SHADIAN .BEQU 2,FLAG7 BEFORE .EQU H'FF09 REV8 .EQU H'FF10 REV7 .EQU H'FF11 REV6 .EQU H'FF12 REV5 .EQU H'FF13 REV4 .EQU H'FF14 REV3 .EQU H'FF15 REV2 .EQU H'FF16 REV1 .EQU H'FF17 REV0 .EQU H'FF18 ; .EQU H'FF19 JIAOY .EQU H'FF1A ;************* TRX0 .EQU H'FF20 TRX1 .EQU H'FF21 TRX2 .EQU H'FF22 TRX3 .EQU H'FF23 TRX4 .EQU H'FF24 TRX5 .EQU H'FF25 TRX6 .EQU H'FF26 TRX7 .EQU H'FF27 ;******RAM SET END******************** ;*****TIMEW INT SET****** TMRW .EQU H'FF80 TCRW .EQU H'FF81 TIERW .EQU H'FF82 TSRW .EQU H'FF83 TIOR0 .EQU H'FF84 TIOR1 .EQU H'FF85 TCNT .EQU H'FF86 GRA .EQU H'FF88 GRB .EQU H'FF8A GRC .EQU H'FF8C GRD .EQU H'FF8E ;*******ROM SET********* FLMCR1 .EQU H'FF90 FLMCR2 .EQU H'FF91 FLPWCR .EQU H'FF92 EBR1 .EQU H'FF93 FENR .EQU H'FF9B ;*****TIMEV INT SET****** TCRV0 .EQU H'FFA0 TCSRV .EQU H'FFA1 TCORA .EQU H'FFA2 TCORB .EQU H'FFA3 TCNTV .EQU H'FFA4 TCRV1 .EQU H'FFA5 ;*****TIMEA INT SET****** TMA .EQU H'FFA6 TCA .EQU H'FFA7 ;*****SCI3 INT SET****** SMR .EQU H'FFA8 BRR .EQU H'FFA9 SCR3 .EQU H'FFAA TDR .EQU H'FFAB SSR .EQU H'FFAC RDR .EQU H'FFAD ;*****A/D INT SET****** ADDRAH .EQU H'FFB0 ADDRAL .EQU H'FFB1 ADDRBH .EQU H'FFB2 ADDRBL .EQU H'FFB3 ADDRCH .EQU H'FFB4 ADDRCL .EQU H'FFB5 ADDRDH .EQU H'FFB6 ADDRDL .EQU H'FFB7 ADCSR .EQU H'FFB8 ADCR .EQU H'FFB9 ;*****WATCHDOG SET****** TCSRWD .EQU H'FFC0 TCWD .EQU H'FFC1 TMWD .EQU H'FFC2 ;*****IIC INT SET****** ICCR .EQU H'FFC4 ICSR .EQU H'FFC5 ICDR .EQU H'FFC6 SARX .EQU H'FFC6 ICMR .EQU H'FFC7 SAR .EQU H'FFC7 TSCR .EQU H'FFFC ;****ADDRESS BREAK SET**** ABRKCR .EQU H'FFC8 ABRKSR .EQU H'FFC9 BARH .EQU H'FFCA BARL .EQU H'FFCB BDRH .EQU H'FFCC BDRL .EQU H'FFCD ;*****I/O PORT SET****** PUCR1 .EQU H'FFD0 PUCR5 .EQU H'FFD1 PDR1 .EQU H'FFD4 PDR2 .EQU H'FFD5 PDR5 .EQU H'FFD8 PDR7 .EQU H'FFDA PDR8 .EQU H'FFDB PDRB .EQU H'FFDD PMR1 .EQU H'FFE0 PMR5 .EQU H'FFE1 PCR1 .EQU H'FFE4 PCR2 .EQU H'FFE5 PCR5 .EQU H'FFE8 PCR7 .EQU H'FFEA PCR8 .EQU H'FFEB ;*****SYSTEM SET****** SYSCR1 .EQU H'FFF0 SYSCR2 .EQU H'FFF1 MSTCR1 .EQU H'FFF9 ;*****INTERRUPT SET****** IEGR1 .EQU H'FFF2 IEGR2 .EQU H'FFF3 IENR1 .EQU H'FFF4 IRR1 .EQU H'FFF6 IWPR .EQU H'FFF8 ;******PROGRAM START***************************** ;* 程序开始 * ;************************************************ .SECTION MAINGO,CODE,LOCATE=H'0034 RESET MOV.L #H'FF70,ER7 ;设堆栈初始指针 ;*******INTRRRUPT HANDLE******** LDC #H'80,CCR ;中断关 ;**********SET PORT1************** MOV.B #H'F1,R0L MOV.B R0L,@PCR1 MOV.B #H'08,R0L MOV.B R0L,@PDR1 MOV.B #H'0C,R0L ;P1.6 IS IRQ2 MOV.B R0L,@PMR1 ;**********SET PORT2************** MOV.B #H'07,R0L MOV.B R0L,@PCR2 MOV.B #H'F8,R0L MOV.B R0L,@PDR2 ;**********SET PORT5************** MOV.B #H'FF,R0L MOV.B R0L,@PCR5 MOV.B #H'00,R0L MOV.B R0L,@PDR5 MOV.B #H'00,R0L MOV.B R0L,@PMR5 ;**********SET PORT7************** MOV.B #H'70,R0L MOV.B R0L,@PCR7 MOV.B #H'8F,R0L MOV.B R0L,@PDR7 ;**********SET PORT8************** MOV.B #H'E7,R0L MOV.B R0L,@PCR8 MOV.B #H'E0,R0L MOV.B R0L,@PDR8 ;**********SET PORTB************** ;**********A/D SET*************** ;A/D 口初始化 MOV.B #H'7E,R0L ;PAGE() MOV.B R0L,@ADCR MOV.B #H'07,R0L MOV.B R0L,@ADCSR ;********SET WATCHDOG************* MOV.B #H'FE,R0L MOV.B R0L,@TMWD ;***INTERRUPT CONTROL REGISTERS****** ;中断专用寄存器设置 MOV.B #H'70,R1L ;PAGE() MOV.B R1L,@IEGR1 ;IRQ2 ENABLE MOV.B #H'50,R1L MOV.B R1L,@IENR1 MOV.B #H'30,R1L MOV.B R1L,@IRR1 ;********SET TIMEA************* MOV.B #H'16,R1L ;() MOV.B R1L,@TMA ;32分频,0.8192mS一次中断 ;********SET TIMEV************* MOV.B #H'00,R1L MOV.B R1L,@TCNTV MOV.B #H'12,R1L MOV.B R1L,@TCORB MOV.B #B'11100011,R1L MOV.B R1L,@TCRV1 MOV.B #B'00010000,R1L MOV.B R1L,@TCSRV ;********************************** ;* RAM INIT * ;********************************** MOV.L #H'FB80,ER0 ;RAM FB80-FF80 INITRAM MOV.W #H'0000,R1 ; MOV.W R1,@ER0 ; ADDS.L #H'2,ER0 ; MOV.L #H'FF80,ER3 ; CMP.L ER3,ER0 ; BNE INITRAM ;********SET TIMEW************* BTST #H'03,@PDR8 BNE MAIN91 MOV.B #B'10001000,R0L ; MOV.B R0L,@TIOR0 MOV.B #B'11011000,R0L ; MOV.B R0L,@TIOR1 ; MOV.B #B'00100000,R0L ; MOV.B R0L,@TCRW MOV.B #B'01110000,R0L ; MOV.B R0L,@TSRW ; ; MOV.W #H'00,R0 ; MOV.W R0,@TCNT MOV.B #B'11001000,R0L MOV.B R0L,@TMRW ; ; MOV.B #B'01111000,R0L ; MOV.B R0L,@TIERW BSET #H'03,@TIERW ;**********SET PORT8************** MOV.B #H'E7,R0L MOV.B R0L,@PCR8 MOV.B #H'E0,R0L MOV.B R0L,@PDR8 JMP @MAIN90 MAIN91 BSET COMP BSET F_SEND MOV.B #B'10001000,R0L ; MOV.B R0L,@TIOR0 MOV.B #B'10001101,R0L ; MOV.B R0L,@TIOR1 ; MOV.B #B'00110000,R0L ; MOV.B R0L,@TCRW MOV.B #B'01110000,R0L ; MOV.B R0L,@TSRW ; MOV.W #H'00,R0 ; MOV.W R0,@TCNT MOV.B #B'11001000,R0L MOV.B R0L,@TMRW ; ; MOV.B #B'01110100,R0L ; MOV.B R0L,@TIERW BSET #H'02,@TIERW ;**********SET PORT8************** MOV.B #H'E7,R0L MOV.B R0L,@PCR8 MOV.B #H'E0,R0L MOV.B R0L,@PDR8 ;***************************** ; MOV.B #B'00000000,R2L ; MOV.B R2L,@TCRV0 ;************************************************** ;* 初始化值 * ;************************************************** MAIN90 BTST #H'00,@PDRB BNE MAIN00 MOV.B @SCAN0,R2L CMP.B #H'30,R2L BEQ MAIN0 INC.B R2L MOV.B R2L,@SCAN0 NOP NOP NOP JMP @MAIN90 MAIN00 BSET MIN3 ;上电有3分钟延时 BSET STEP_RES ;复位,膨胀阀回零 MOV.B #H'80,R1L MOV.B R1L,@AD_T1 MOV.B R1L,@AD_T2 MOV.B R1L,@AD_T3 ;初始化设A/D初值 ;************************* BSET #H'07,@REV5 BSET #H'07,@REV7 MOV.B #B'00000010,R1L MOV.B R1L,@REV0 BSET #H'06,@REV8 BCLR SHADIAN ;************************************************** ;* 上电读EEPROM * ;************************************************** LDC #H'00,CCR ;中断开 MOV.B #B'00100001,R0L MOV.B R0L,@ADCSR DT300 MOV.B @ADCSR,R0L BTST #H'7,R0L BEQ DT300 MOV.B #H'00,R0H MOV.B @ADDRBH,R0L MOV.B @ADT3CNT,R1H CMP.B #H'10,R1H BHS DT310 INC.B R1H MOV.B R1H,@ADT3CNT MOV.W @ADTMP3,R2 ADD.W R0,R2 MOV.W R2,@ADTMP3 DT390 MOV.W #H'3EB,R5 DT39E: NOP NOP NOP NOP NOP NOP NOP DEC.W #1,R5 BNE DT39E JMP @DT300 DT310 MOV.W @ADTMP3,R2 DIVXU.B R1H,R2 MOV.B R2L,@AD_T3 MOV.W #H'0,R0 MOV.W R0,@ADTMP3 MOV.B R0L,@ADT3CNT MOV.B @AD_T3,R1L CMP.B #H'1C,R1L BHI MAIN99 CMP.B #H'10,R1L BLO MAIN99 BSET ONLY_CO MAIN99 JSR @POWER BTST #H'03,@REV0 BNE MAIN8 BCLR ON_OFF JMP @MAIN88 MAIN8 BSET ON_OFF MAIN88 BTST #H'06,@REV5 BEQ MAIN7 BSET LOCK ;键盘锁定 JMP @MAIN77 MAIN7 BCLR LOCK MAIN77 MOV.B #H'00,R0L MOV.B R0L,@PCR2 MOV.B #H'F8,R0L MOV.B R0L,@PDR2 ;*******INTRRRUPT MASK***************************** LDC #H'00,CCR ;中断开 BSET BUZ_TWO JMP @MAIN ;************************************************** MAIN0 LDC #H'00,CCR ;中断开 BSET TEST BSET #H'05,@PDR8 BSET BUZ JSR @EIGHT_R BSET #H'00,@PDR5 JSR @EIGHT_R BCLR #H'00,@PDR5 BSET #H'01,@PDR5 JSR @EIGHT_R BCLR #H'01,@PDR5 BSET #H'02,@PDR5 JSR @EIGHT_R BCLR #H'02,@PDR5 BSET #H'03,@PDR5 JSR @EIGHT_R BCLR #H'03,@PDR5 BSET #H'04,@PDR5 JSR @EIGHT_R BCLR #H'04,@PDR5 BSET #H'05,@PDR5 JSR @EIGHT_R BCLR #H'05,@PDR5 BSET #H'06,@PDR5 JSR @EIGHT_R BCLR #H'06,@PDR5 BSET #H'07,@PDR5 JSR @EIGHT_R BCLR #H'07,@PDR5 BSET #H'01,@PDR8 JSR @EIGHT_R BCLR #H'01,@PDR8 BSET #H'05,@PDR7 JSR @EIGHT_R BCLR #H'05,@PDR7 BSET #H'04,@PDR7 JSR @EIGHT_R BCLR #H'04,@PDR7 BSET #H'00,@PDR1 JSR @EIGHT_R BCLR #H'00,@PDR1 BSET #H'00,@PDR8 JSR @EIGHT_R BCLR #H'00,@PDR8 BSET #H'07,@PDR1 JSR @EIGHT_R BCLR #H'07,@PDR1 BSET #H'06,@PDR7 JSR @EIGHT_R BCLR #H'06,@PDR7 BSET #H'04,@PDR1 JSR @EIGHT_R BCLR #H'04,@PDR1 BSET #H'05,@PDR1 JSR @EIGHT_R BCLR #H'05,@PDR1 BSET #H'06,@PDR1 JSR @EIGHT_R BCLR #H'06,@PDR1 BCLR #H'07,@PDR8 JSR @EIGHT_R BSET #H'07,@PDR8 BCLR #H'06,@PDR8 JSR @EIGHT_R BSET #H'06,@PDR8 BCLR #H'05,@PDR8 JSR @EIGHT_R JMP @MAIN0 ;************************************************** ;* 主程序(主循环) * ;************************************************** MAIN MOV.B #B'01010001,R1L ;看门狗设置 MOV.B R1L,@TCSRWD MOV.B #H'00,R1L ;看门狗 MOV.B R1L,@TCWD NOP NOP MOV.B #B'01010101,R1L MOV.B R1L,@TCSRWD JSR @AD_START ;A/D采样 JSR @ERROR_SET ;故障设置 JSR @MOTOR ;步进电机 JSR @PRE_DATA ;接收数据处理 JSR @K_TEST ;检测键 BTST TEST_RUN BEQ MAIN1 BCLR CLOSE BCLR ERROR1 BCLR ERROR2 BCLR ERROR3 BCLR ERROR4 MAIN1 JSR @SECOND_2 BTST CLOSE BNE MAIN JSR @K_SCAN ;ON/OFF键 JSR @RELAY ;继电器 JSR @SECOND ;时钟运转 JSR @TEMPER ;A/D值换算为温度值 BTST ON_OFF BNE MAIN6 BCLR MIN30 BCLR #H'07,@PDR1 BCLR #H'00,@PDR8 BCLR #H'06,@PDR7 BCLR YASJ BCLR SITF BCLR WAIFJ BSET #H'07,@PDR8 BCLR FLASH BCLR FANGDJ BCLR MIN_8 BCLR MIN8 BCLR HUA_CON1 BCLR CHUSHI MOV.W #H'00,R1 MOV.B R1L,@MIN_2 MOV.B R1L,@COUNT MOV.B R1L,@CNT MOV.W R1,@FROZ_C1 MOV.W R1,@DRY_COU MOV.B R1L,@HUA_COU MOV.W R1,@HS_COU1 MOV.W R1,@HS_COU BCLR HUA BTST CAOGW0 BEQ MAIN100 BSET SEC30 MOV.B #H'00,R1L MOV.B R1L,@FAN_IN ;室内风机运转标志(关机) MAIN100 BCLR CAOGW0 BCLR CAOGW1 MOV.B @BEFORE,R1L AND.B #B'00000111,R1L CMP.B #B'00000110,R1L BEQ MAIN10 MOV.B #H'00,R1L MOV.B R1L,@FAN_IN ;室内风机运转标志(关机) BCLR CAOGW MAIN10 BTST CAOGW BNE MAIN101 BTST #H'05,@PDR7 BNE MAIN101 BTST #H'01,@PDR8 BNE MAIN101 MOV.B #H'00,R1L MOV.B R1L,@FAN_IN ;室内风机运转标志(关机) MAIN101 BCLR NEIFJ JMP @MAIN MAIN6 JSR @HEALTH ;健康 JSR @K_FSU ;风速键 JSR @K_FZHA ;风栅键 JSR @CONTROL ;模式控制 JMP @MAIN ;******************************************************** ;* * ;* 定时器A中断 * ;* * ;******************************************************** TIMEA BCLR #H'06,@IRR1 PUSH.W R1 PUSH.W R2 PUSH.W R3 BTST TEST BEQ TA_0 MOV.W @SEC_CNT,R1 INC.W #H'01,R1 MOV.W R1,@SEC_CNT MOV.W @SEC_COU1,R1 CMP.W #H'727,R1 BEQ TA_T1 INC.W #H'01,R1 MOV.W R1,@SEC_COU1 JMP @TA_TEST TA_T1 MOV.W #H'00,R2 MOV.W R2,@SEC_COU1 BTST F_SEND BEQ TA_TEST JSR @SEND TA_TEST JSR @BUZZER POP.W R3 POP.W R2 POP.W R1 RTE TA_0 BTST TEST_F BNE TA_01 MOV.W @SEC_COU,R1 CMP.W #H'4B7,R1 BEQ TA_1 INC.W #H'01,R1 MOV.W R1,@SEC_COU JMP @TA_2 TA_1 BSET SEC1 MOV.W #H'00,R2 MOV.W R2,@SEC_COU JMP @TA_2 TA_01 MOV.B @SUO_COU,R1L CMP.B #D'10,R1L BEQ TA_010 INC.B R1L MOV.B R1L,@SUO_COU JMP @TA_2 TA_010 BSET SEC1 MOV.B #H'00,R2L MOV.B R2L,@SUO_COU JMP @TA_2 TA_2 MOV.W @F_COU,R1 CMP.W #H'262,R1 BEQ TA_21 INC.W #H'01,R1 MOV.W R1,@F_COU JMP @TA_3 TA_21 MOV.B #H'00,R1L MOV.B R1L,@F_COU BTST ERROR4 BNE TA_25 BTST ERROR3 BNE TA_24 BTST ERROR2 BNE TA_23 BTST ERROR1 BNE TA_22 BSET #H'05,@PDR8 BTST FLASH BEQ TA_3 BNOT #H'07,@PDR8 JMP @TA_3 TA_22 BNOT #H'07,@PDR8 BNOT #H'06,@PDR8 BNOT #H'05,@PDR8 JMP @TA_END TA_23 ; BNOT #H'07,@PDR8 BNOT #H'06,@PDR8 BNOT #H'05,@PDR8 JMP @TA_END TA_24 BNOT #H'07,@PDR8 ; BNOT #H'06,@PDR8 BNOT #H'05,@PDR8 JMP @TA_END TA_25 ; BNOT #H'07,@PDR8 ; BNOT #H'06,@PDR8 BNOT #H'05,@PDR8 JMP @TA_END TA_3 JSR @BUZZER TA_4 MOV.B @MOT_TIM,R1L INC.B R1L MOV.B R1L,@MOT_TIM TA_5 BTST THREE_SEC BEQ TA_50 MOV.W @TEST_COU,R1 CMP.W #H'17D7,R1 BEQ TA_6 INC.W #H'01,R1 MOV.W R1,@TEST_COU JMP @TA_6 TA_50 MOV.W #H'00,R2 MOV.W R2,@TEST_COU TA_6 BTST BUZ_TWO BEQ TA_7 MOV.W @BUZ_COU,R1 INC.W #H'01,R1 MOV.W R1,@BUZ_COU CMP.W #D'360,R1 BHI TA_61 CMP.W #D'120,R1 BHI TA_7 BSET BUZ JMP @TA_7 TA_61 BSET BUZ BCLR BUZ_TWO MOV.W #H'00,R0 MOV.W R0,@BUZ_COU TA_7 BTST REC_OK BNE TA_71 BTST REC1_OK BEQ TA_70 TA_71 MOV.W @HANDC,R1 INC.W #H'01,R1 MOV.W R1,@HANDC JMP @TA_8 TA_70 MOV.W #H'00,R2 MOV.W R2,@HANDC TA_8 MOV.B @SEC_COU0,R1L CMP.B #H'3D,R1L BEQ TA_80 INC.B R1L MOV.B R1L,@SEC_COU0 BRA TA_9 TA_80 BSET SEC_1 MOV.B #H'00,R1L MOV.B R1L,@SEC_COU0 TA_9 JSR @SECO1 MOV.W @SEC_COU1,R1 CMP.W #H'25B,R1 BEQ TA_91 INC.W #H'01,R1 MOV.W R1,@SEC_COU1 JMP @TA_10 TA_91 BSET SEC2 MOV.W #H'00,R2 MOV.W R2,@SEC_COU1 JMP @TA_10 TA_10 BTST WRITEE BEQ TA_END MOV.W @SAV_CNT,R1 CMP.W #H'4B7,R1 BEQ TA_11 INC.W #H'01,R1 MOV.W R1,@SAV_CNT JMP @TA_END TA_11 BCLR WRITEE MOV.W #H'00,R2 MOV.W R2,@SAV_CNT JSR @SAVEF ;***** TA_END ;************************** POP.W R3 POP.W R2 POP.W R1 RTE ;************************************************************ ;* 通讯接收 * ;************************************************************ IRQ2 NOP NOP RTE ;************************************************************ ;* 800MS 延时 * ;************************************************************ EIGHT_R MOV.W @SEC_CNT,R1 CMP.W #H'3E8,R1 BEQ EIGHT_R1 NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP JMP @EIGHT_R EIGHT_R1 MOV.W #H'00,R1 MOV.W R1,@SEC_CNT RTS ;************************************************************ ;* 开/关键 * ;************************************************************ K_SCAN ;电源开/关键 BTST COMP BNE NO_KEY1 BTST LOCK BNE NO_KEY1 BTST #H'00,@PDR2 BNE NO_KEY BTST #H'01,@PDR2 BEQ NO_KEY1 BTST #H'02,@PDR2 BEQ NO_KEY1 BTST #H'00,@PDRB BEQ NO_KEY1 BTST KEY BNE K_SCAN1 MOV.B #H'00,R2L MOV.B R2L,@SCAN BSET KEY RTS K_SCAN1 MOV.B @SCAN,R2L CMP.B #H'10,R2L BHS K_END INC.B R2L MOV.B R2L,@SCAN RTS NO_KEY BCLR KEY MOV.B @SCAN,R2L CMP.B #H'10,R2L BHS K_GO NO_KEY1 BCLR KEY MOV.B #H'00,R2L MOV.B R2L,@SCAN RTS K_GO MOV.B #H'00,R2L MOV.B R2L,@SCAN BSET BUZ BTST ON_OFF BNE K_CLOSE BSET #H'03,@REV0 BSET ON_OFF BCLR #H'07,@REV4 BSET WRITEE MOV.W #H'00,R2 MOV.W R2,@SAV_CNT K_END RTS K_CLOSE BCLR ON_OFF BCLR #H'06,@REV3 BCLR #H'07,@REV4 BCLR #H'07,@REV6 BCLR #H'03,@REV0 MOV.B #H'00,R1L MOV.B R1L,@COUNT BTST #H'05,@PDR7 BEQ K_CLOSE0 BSET MIN3 K_CLOSE0 BSET STEP_RES ;复位,膨胀阀回零 BCLR MOT_RES MOV.W #D'00,R1 MOV.W R1,@STEP_NOW MOV.B R1L,@STEP_PAI BSET #H'06,@PDR8 BSET WRITEE MOV.W #H'00,R2 MOV.W R2,@SAV_CNT RTS ;************************************************************ ;* 风速键 * ;************************************************************ K_FSU ;风速键 BTST COMP BNE NO_KFSU1 BTST LOCK BNE NO_KFSU1 BTST #H'02,@PDR2 BNE NO_KFSU BTST #H'01,@PDR2 BEQ NO_KFSU1 BTST #H'00,@PDR2 BEQ NO_KFSU1 BTST #H'00,@PDRB BEQ NO_KFSU1 BTST KEY1 BNE K_FSU1 MOV.B #H'00,R2L MOV.B R2L,@SCAN1 BSET KEY1 RTS K_FSU1 MOV.B @SCAN1,R2L CMP.B #H'10,R2L BHS K1_END INC.B R2L MOV.B R2L,@SCAN1 RTS NO_KFSU BCLR KEY1 MOV.B @SCAN1,R2L CMP.B #H'10,R2L BHS K_GO1 NO_KFSU1 MOV.B #H'00,R2L MOV.B R2L,@SCAN1 BCLR KEY1 JMP @K1_END K_GO1 MOV.B #H'00,R2L MOV.B R2L,@SCAN1 BSET BUZ MOV.B @REV8,R1L AND.B #B'11110000,R1L CMP.B #B'00010000,R1L BEQ K_HI AND.B #B'11110000,R1L CMP.B #B'10000000,R1L BEQ K_Mid AND.B #B'11110000,R1L CMP.B #B'00100000,R1L BEQ K_HI AND.B #B'11110000,R1L CMP.B #B'01000000,R1L BEQ K_Mid RTS K_Mid BSET #H'04,@REV8 BCLR #H'05,@REV8 BCLR #H'06,@REV8 BCLR #H'07,@REV8 BSET WRITEE MOV.W #H'00,R2 MOV.W R2,@SAV_CNT JMP @K1_END K_HI BSET #H'06,@REV8 BCLR #H'04,@REV8 BCLR #H'05,@REV8 BCLR #H'07,@REV8 BSET WRITEE MOV.W #H'00,R2 MOV.W R2,@SAV_CNT K1_END RTS ;************************************************************ ;* 风栅键 * ;************************************************************ K_FZHA ;风栅键 BTST COMP BNE NO_KFZHA1 BTST LOCK BNE NO_KFZHA1 BTST #H'01,@PDR2 BNE NO_KFZHA BTST #H'00,@PDR2 BEQ NO_KFZHA1 BTST #H'02,@PDR2 BEQ NO_KFZHA1 BTST #H'00,@PDRB BEQ NO_KFZHA1 BTST KEY2 BNE K_FZHA1 MOV.B #H'00,R2L MOV.B R2L,@SCAN2 BSET KEY2 RTS K_FZHA1 MOV.B @SCAN2,R2L CMP.B #H'10,R2L BHS K2_END INC.B R2L MOV.B R2L,@SCAN2 RTS NO_KFZHA BCLR KEY2 MOV.B @SCAN2,R2L CMP.B #H'10,R2L BHS K_GO2 NO_KFZHA1 MOV.B #H'00,R2L MOV.B R2L,@SCAN2 BCLR KEY2 RTS K_GO2 MOV.B #H'00,R2L MOV.B R2L,@SCAN2 BSET BUZ BTST FZHA BNE FZHA_CLOSE BSET FZHA BSET #H'07,@REV1 BSET WRITEE MOV.W #H'00,R2 MOV.W R2,@SAV_CNT JMP @K2_END FZHA_CLOSE BCLR FZHA BCLR #H'07,@REV1 BSET WRITEE MOV.W #H'00,R2 MOV.W R2,@SAV_CNT K2_END RTS ;************************************************************ ;* 演示,缩时键 * ;************************************************************ K_TEST BTST #H'00,@PDRB BNE NO_KTEST BTST #H'01,@PDR2 BEQ NO_KTEST1 BTST #H'00,@PDR2 BEQ NO_KTEST1 BTST #H'02,@PDR2 BEQ NO_KTEST1 BTST KEY3 BNE K_TEST2 BSET THREE_SEC BSET KEY3 RTS K_TEST1 MOV.W #H'00,R2 MOV.W R2,@TEST_COU K_TEST2 RTS NO_KTEST BCLR THREE_SEC BCLR KEY3 MOV.W @TEST_COU,R1 CMP.W #H'F,R1 BLO K_TEST1 CMP.W #H'727,R1 BLO K_SHOW JMP @K_SUO NO_KTEST1 BCLR THREE_SEC BCLR KEY3 MOV.W #H'00,R2 MOV.W R2,@TEST_COU RTS K_SUO BSET BUZ BTST TEST_F BNE SUO_CLOSE BSET TEST_F JMP @K_TEST1 SUO_CLOSE BCLR TEST_F JMP @K_TEST1 K_SHOW BSET BUZ BTST TEST_RUN BNE RUN_CLOSE BSET TEST_RUN JMP @K_TEST1 RUN_CLOSE BCLR TEST_RUN BSET #H'07,@PDR8 JMP @K_TEST1 ;************************************* ; A/D 采样 * ;************************************* AD_START BTST SEC_1 BNE AD_START0 JMP @AD_END AD_START0 BCLR SEC_1 JSR @ADT1 JSR @ADT2 JSR @ADT3 AD_END RTS ;*************************************************** ; GET TEMP1 FROM AN3 ;*************************************************** ADT1 MOV.B #B'00100011,R0L MOV.B R0L,@ADCSR ADT100 MOV.B @ADCSR,R0L BTST #H'7,R0L BEQ ADT100 MOV.B @ADDRDH,R0L MOV.B #H'00,R0H MOV.B @ADT1CNT,R1H CMP.B #H'10,R1H BHS ADT110 INC.B R1H MOV.B R1H,@ADT1CNT MOV.W @ADTMP1,R2 ADD.W R0,R2 MOV.W R2,@ADTMP1 JMP @ADT190 ADT110 MOV.W @ADTMP1,R2 DIVXU.B R1H,R2 MOV.B R2L,@AD_T1 MOV.W #H'00,R0 MOV.W R0,@ADTMP1 MOV.B R0L,@ADT1CNT MOV.B @T1_COU,R1L INC.B R1L MOV.B R1L,@T1_COU ADT190 RTS ;*************************************************** ; GET TEMP2 FROM AN2 ;*************************************************** ADT2 MOV.B #B'00100010,R0L MOV.B R0L,@ADCSR ADT200 MOV.B @ADCSR,R0L BTST #H'7,R0L BEQ ADT200 MOV.B @ADDRCH,R0L MOV.B #H'00,R0H MOV.B @ADT2CNT,R1H CMP.B #H'10,R1H BHS ADT210 INC.B R1H MOV.B R1H,@ADT2CNT MOV.W @ADTMP2,R2 ADD.W R0,R2 MOV.W R2,@ADTMP2 JMP @ADT290 ADT210 MOV.W @ADTMP2,R2 DIVXU.B R1H,R2 MOV.B R2L,@AD_T2 MOV.W #H'0,R0 MOV.W R0,@ADTMP2 MOV.B R0L,@ADT2CNT MOV.B @T2_COU,R1L INC.B R1L MOV.B R1L,@T2_COU ADT290 RTS ;*************************************************** ; GET TEMP3 FROM AN1 ;*************************************************** ADT3 MOV.B #B'00100001,R0L MOV.B R0L,@ADCSR ADT300 MOV.B @ADCSR,R0L BTST #H'7,R0L BEQ ADT300 MOV.B #H'00,R0H MOV.B @ADDRBH,R0L MOV.B @ADT3CNT,R1H CMP.B #H'10,R1H BHS ADT310 INC.B R1H MOV.B R1H,@ADT3CNT MOV.W @ADTMP3,R2 ADD.W R0,R2 MOV.W R2,@ADTMP3 JMP @ADT390 ADT310 MOV.W @ADTMP3,R2 DIVXU.B R1H,R2 MOV.B R2L,@AD_T3 MOV.W #H'0,R0 MOV.W R0,@ADTMP3 MOV.B R0L,@ADT3CNT ; MOV.B @DANLEN,R1L ; INC.B R1L ; MOV.B R1L,@DANLEN MOV.B @T3_COU,R1L INC.B R1L MOV.B R1L,@T3_COU ADT390 RTS ;*************************************************** ; GET VUP FROM AN0 ;*************************************************** ADUPI MOV.B #B'00100000,R0L MOV.B R0L,@ADCSR ADUPI0 MOV.B @ADCSR,R0L BTST #H'7,R0L BEQ ADUPI0 MOV.B @ADDRAH,R0L MOV.B #H'00,R0H MOV.B @UPICNT,R1H CMP.B #H'10,R1H BHS ADUPI10 INC.B R1H MOV.B R1H,@UPICNT MOV.W @ADVUP,R2 ADD.W R0,R2 MOV.W R2,@ADVUP JMP @ADUPI90 ADUPI10 MOV.W @ADVUP,R2 DIVXU.B R1H,R2 MOV.B R2L,@VUP MOV.W #H'0,R0 MOV.W R0,@ADVUP MOV.B R0L,@UPICNT ADUPI90 RTS ;****************************************** ;* 故障设置 * ;****************************************** ERROR_SET BTST TEST_RUN BNE ERR_END MOV.B @AD_T1,R1L CMP.B #H'F5,R1L BHI ERR_1 CMP.B #H'10,R1L BLO ERR_1 MOV.B #H'00,R1L MOV.B R1L,@T1_COU BTST ERROR4 BEQ ERROR_S1 BSET #H'05,@PDR8 BSET #H'06,@PDR8 BSET #H'07,@PDR8 BCLR ERROR4 JMP @ERROR_S1 ERR_1 BTST ERROR4 BNE ERR_10 MOV.B @T1_COU,R1L CMP.B #H'26,R1L BHS ERR_11 JMP @ERROR_S1 ERR_11 BSET ERROR4 BSET #H'05,@PDR8 BSET #H'06,@PDR8 BSET #H'07,@PDR8 ERR_10 JMP @ERROR_END ERROR_S1 BTST ONLY_CO BNE ERROR_S2 MOV.B @AD_T3,R1L CMP.B #H'1C,R1L BHI ERROR_S10 CMP.B #H'10,R1L BLO ERROR_S10 JMP @ERROR_S2 ERROR_S10 BTST HUA BNE ERROR_S2 MOV.B @AD_T2,R1L CMP.B #H'F5,R1L BHI ERR_2 CMP.B #H'10,R1L BLO ERR_2 MOV.B #H'00,R1L MOV.B R1L,@T2_COU BTST ERROR3 BEQ ERROR_S2 BSET #H'05,@PDR8 BSET #H'06,@PDR8 BSET #H'07,@PDR8 BCLR ERROR3 JMP @ERROR_S2 ERR_2 BTST ERROR3 BNE ERR_20 MOV.B @T2_COU,R1L CMP.B #H'26,R1L BHI ERR_21 JMP @ERROR_S2 ERR_21 BSET ERROR3 BSET #H'05,@PDR8 BSET #H'06,@PDR8 BSET #H'07,@PDR8 ERR_20 JMP @ERROR_END ERROR_S2 MOV.B @AD_T3,R1L CMP.B #H'F5,R1L BHI ERR_3 CMP.B #H'8,R1L BLO ERR_3 MOV.B #H'00,R1L MOV.B R1L,@T3_COU BTST ERROR2 BEQ ERR_4 BSET #H'05,@PDR8 BSET #H'06,@PDR8 BSET #H'07,@PDR8 BCLR ERROR2 JMP @ERR_4 ERR_3 BTST ERROR2 BNE ERR_30 MOV.B @T3_COU,R1L CMP.B #H'26,R1L BHS ERR_31 JMP @ERR_4 ERR_31 BSET ERROR2 BSET #H'05,@PDR8 BSET #H'06,@PDR8 BSET #H'07,@PDR8 ERR_30 JMP @ERROR_END ERR_4 BTST ERROR1 BEQ ERR_40 JMP @ERROR_END ERR_40 BCLR CLOSE JMP @ERR_END ERROR_END BCLR #H'06,@PDR1 BCLR #H'05,@PDR1 BCLR #H'04,@PDR1 BCLR #H'07,@PDR1 BCLR #H'05,@PDR7 BCLR #H'04,@PDR7 BCLR #H'00,@PDR8 BCLR #H'06,@PDR7 BCLR #H'00,@PDR1 BCLR #H'01,@PDR8 MOV.B #H'00,R1L MOV.B R1L,@PDR5 BTST CLOSE BNE ERR_END BSET #H'05,@PDR8 BSET #H'06,@PDR8 BSET #H'07,@PDR8 MOV.B #H'00,R1L MOV.B R1L,@FAN_IN MOV.B R1L,@T1_COU MOV.B R1L,@T2_COU MOV.B R1L,@T3_COU BSET CLOSE BSET MIN3 ERR_END RTS ;************************************************************* ;* 睡眠、定时设定 * ;************************************************************* SLEEP_SET MOV.B @DATA05,R1L AND.B #B'01000000,R1L CMP.B #B'00000000,R1L BEQ SLEEP_NO1 JMP @TIME_SET SLEEP_NO1 MOV.B #H'00,R1L MOV.B R1L,@SLP_NOW MOV.B #H'00,R1L MOV.B R1L,@SLP_MIN ;***** TIME_SET MOV.B @DATA03,R2L ;现在时刻 AND.B #B'00001111,R2L MOV.B @DATA03,R1L SHLR.B R1L SHLR.B R1L SHLR.B R1L SHLR.B R1L AND.B #B'00000011,R1L MOV.B #D'10,R1H MULXU.B R1H,R1 ADD.B R1L,R2L MOV.B R2L,@NHOUR MOV.B @DATA04,R2L AND.B #B'00001111,R2L MOV.B @DATA04,R1L SHLR.B R1L SHLR.B R1L SHLR.B R1L SHLR.B R1L AND.B #B'00000111,R1L MOV.B #D'10,R1H MULXU.B R1H,R1 ADD.B R1L,R2L MOV.B R2L,@NMIN MOV.B @DATA06,R1L AND.B #B'10000000,R1L CMP.B #B'00000000,R1L BNE TIME_SET1 MOV.B #H'00,R1L MOV.B R1L,@OPE_NOW MOV.B R1L,@OPE_MIN JMP @TIME_SET2 TIME_SET1 MOV.B @DATA05,R2L ;定时开 AND.B #B'00001111,R2L MOV.B @DATA05,R1L SHLR.B R1L SHLR.B R1L SHLR.B R1L SHLR.B R1L AND.B #B'00000011,R1L MOV.B #D'10,R1H MULXU.B R1H,R1 ADD.B R1L,R2L MOV.B R2L,@OPE_NOW MOV.B @DATA06,R2L AND.B #B'00001111,R2L MOV.B @DATA06,R1L SHLR.B R1L SHLR.B R1L SHLR.B R1L SHLR.B R1L AND.B #B'00000111,R1L MOV.B #D'10,R1H MULXU.B R1H,R1 ADD.B R1L,R2L MOV.B R2L,@OPE_MIN RTS TIME_SET2 MOV.B @DATA08,R1L AND.B #B'10000000,R1L CMP.B #B'00000000,R1L BNE TIME_SET3 MOV.B #H'00,R1L MOV.B R1L,@CLO_NOW MOV.B R1L,@CLO_MIN RTS TIME_SET3 MOV.B @DATA07,R2L ;定时关 AND.B #B'00001111,R2L MOV.B @DATA07,R1L SHLR.B R1L SHLR.B R1L SHLR.B R1L SHLR.B R1L AND.B #B'00000011,R1L MOV.B #D'10,R1H MULXU.B R1H,R1 ADD.B R1L,R2L MOV.B R2L,@CLO_NOW MOV.B @DATA08,R2L AND.B #B'00001111,R2L MOV.B @DATA08,R1L SHLR.B R1L SHLR.B R1L SHLR.B R1L SHLR.B R1L AND.B #B'00000111,R1L MOV.B #D'10,R1H MULXU.B R1H,R1 ADD.B R1L,R2L MOV.B R2L,@CLO_MIN RTS ;************************************************ ;* A/D值换算为温度值程序 * ;************************************************ TEMPER MOV.B @REV0,R1L SHLR.B R1L SHLR.B R1L SHLR.B R1L SHLR.B R1L ADD.B #D'36,R1L MOV.B R1L,@TEMP0 ;**** MOV.W #H'3000,R3 ;**** MOV.B @T_COU,R1L INC.B R1L MOV.B R1L,@T_COU CMP.B #D'1,R1L BEQ TEMPER1 CMP.B #D'2,R1L BEQ TEMPER2 CMP.B #D'3,R1L BEQ TEMPER3 MOV.B #D'1,R1L MOV.B R1L,@T_COU TEMPER1 JMP @TEMPER10 TEMPER2 JMP @TEMPER20 TEMPER3 JMP @TEMPER30 ;**** TEMPER10 MOV.W @R3,R1 MOV.B @AD_T1,R2L CMP.B #H'1C,R2L BLO TEMPER16 CMP.B R1H,R2L BHS TEMPER12 INC.W #H'02,R3 JMP @TEMPER10 TEMPER12 CMP.B #H'C5,R2L BHS TEMPER15 ADD.B #D'20,R1L TEMPER15: MOV.B R1L,@TEMP1 JMP @TEMPER19 TEMPER16: MOV.B #D'100,R1L MOV.B R1L,@TEMP1 TEMPER19: BTST #H'07,@REV3 BEQ TEMPER199 MOV.B @REV7,R0L AND.B #B'00111111,R0L ADD.B #D'25,R0L MOV.B R0L,@TEMP1 TEMPER199 RTS ;**** TEMPER20 MOV.W @R3,R1 MOV.B @AD_T2,R2L CMP.B #H'1C,R2L BLO TEMPER26 CMP.B R1H,R2L BHS TEMPER22 INC.W #H'02,R3 JMP @TEMPER20 TEMPER22 CMP.B #H'C5,R2L BHS TEMPER25 ADD.B #D'20,R1L TEMPER25: MOV.B R1L,@TEMP2 JMP @TEMPER29 TEMPER26: MOV.B #D'100,R1L MOV.B R1L,@TEMP2 TEMPER29: RTS ;**** TEMPER30 MOV.W @R3,R1 MOV.B @AD_T3,R2L CMP.B #H'1C,R2L BLO TEMPER36 CMP.B R1H,R2L BHS TEMPER32 INC.W #H'02,R3 JMP @TEMPER30 TEMPER32 CMP.B #H'C5,R2L BHS TEMPER35 ADD.B #D'20,R1L TEMPER35: MOV.B R1L,@TEMP3 JMP @TEMPER39 TEMPER36: MOV.B #D'100,R1L MOV.B R1L,@TEMP3 TEMPER39: RTS ;************************************************************* ;* 时钟处理程序2 * ;************************************************************* SECOND_2 ;与时钟有关的处理程序[MAIN] BTST SEC2 BNE SECOND_21 RTS SECOND_21 BCLR SEC2 BTST F_SEND BEQ SECOND_22 MOV.B @TX_CNT,R1L INC.B R1L MOV.B R1L,@TX_CNT CMP.B #H'01,R1L BEQ SECOND_23 CMP.B #H'03,R1L BEQ SECOND_23 CMP.B #H'07,R1L BEQ SECOND_24 JMP @SECOND_22 SECOND_24 BCLR F_SEND MOV.B #H'00,R1L MOV.B R1L,@TX_CNT SECOND_23 JSR @SEND SECOND_22 BTST F_TRX BEQ SECOND_29 MOV.B @SEND_COU,R1L INC.B R1L MOV.B R1L,@SEND_COU CMP.B #H'3C,R1L BLS SECOND_29 BCLR F_TRX MOV.B #H'00,R1L MOV.B R1L,@SEND_COU BCLR ON_OFF BCLR #H'06,@REV3 BCLR #H'07,@REV4 BCLR #H'07,@REV6 BCLR #H'03,@REV0 MOV.B #H'00,R1L MOV.B R1L,@COUNT BTST #H'05,@PDR7 BEQ SECOND_28 BSET MIN3 SECOND_28 BSET #H'06,@PDR8 JSR @SAVEF BTST ON_OFF BEQ SECOND_29 BSET STEP_RES ;复位,膨胀阀回零 BCLR MOT_RES MOV.W #D'00,R1 MOV.W R1,@STEP_NOW MOV.B R1L,@STEP_PAI SECOND_29 RTS ;************************************************************* ;* 时钟处理程序 * ;************************************************************* SECOND ;与时钟有关的处理程序[MAIN] BTST SEC1 BNE SECOND1 RTS SECOND1 BCLR SEC1 BTST ON_OFF BEQ SECOND2 BTST TEST_RUN BNE SECOND4 JSR @CHU_TERM2 ;除霜条件 JSR @CHU_TERM1 ;除霜条件 JSR @CHU_WORK ;除霜动作 BTST HUA BEQ SECOND3 RTS SECOND3 JSR @FU_DIAN ;辅助电加热 ; JSR @EIGHT_MIN ;压机启动八分钟计时 JSR @COOL_PRO ;故障设置 SECOND4 JSR @FROZEN ;防冻结保护 JSR @DRY_SWITCH ;抽湿时,室外风机开10分停5分 JSR @MOTOR_SET ;步进电机角度设置 SECOND2 JSR @WAI_RE ;外加热 JSR @NEW_WIND ;换新风 JSR @FIVE_SEC ;五秒钟延迟 JSR @FIVE_SEC0 ;五秒钟延迟 JSR @THIRTY_SEC ;三十秒钟延迟 JSR @TIME_MODE ;睡眠、定时处理 JSR @THREE_MIN ;压机三分钟延迟 JSR @THREE_MIN0 ;压机三分钟延迟 RTS ;************************** ;************************************************ ;* 控制模式处理 * ;************************************************ CONTROL MOV.B @REV0,R1L AND.B #B'00001000,R1L CMP.B #B'00000000,R1L BNE CONTROL1 MOV.B #H'00,R1L MOV.B R1L,@FAN_IN ;室内风机运转标志(关机) BCLR HUA MOV.B @BEFORE,R1L AND.B #B'00001000,R1L MOV.B R1L,@BEFORE BCLR ON_OFF BCLR MIN30 BCLR #H'03,@REV0 MOV.B #H'00,R1L MOV.B R1L,@COUNT BCLR #H'07,@PDR1 BCLR #H'00,@PDR8 BCLR #H'06,@PDR7 BCLR YASJ BCLR SITF BCLR WAIFJ ;关机继电器全关 BCLR FANGDJ MOV.W #H'00,R1 MOV.W R1,@FROZ_C1 JMP @CONTROL2 CONTROL1 BSET ON_OFF JSR @MODE_SETUP CONTROL2 RTS ;*************************************************** ;* 控制模式处理(子程序) * ;*************************************************** MODE_SETUP MOV.B @REV0,R2L AND.B #B'00000111,R2L CMP.B #B'00000110,R2L BNE MODE_SETUP4 BTST ONLY_CO BNE MODE_SETUP4 JMP @MODE_HEAT MODE_SETUP4 BCLR SHADIAN BCLR CAOGW BCLR CAOGW0 BCLR CAOGW1 MOV.B #H'00,R1L MOV.B R1L,@COUNT CMP.B #B'00000010,R2L BNE MODE_SETUP1 JMP @MODE_COOL MODE_SETUP1 CMP.B #B'00000011,R2L BNE MODE_SETUP2 JMP @MODE_DRY MODE_SETUP2 CMP.B #B'00000101,R2L BNE MODE_SETUP3 JMP @MODE_FAN MODE_SETUP3 RTS ;********************************** MODE_COOL ;制冷模式 MOV.B @BEFORE,R1L AND.B #B'00000111,R1L CMP.B #B'00000010,R1L BEQ COOL_NO_3MIN BTST #H'05,@PDR7 BEQ COOL_NO_3MIN BCLR HUA BCLR MIN30 BSET MIN3 BCLR YASJ BCLR #H'05,@PDR7 BSET SEC5 BCLR WAIFJ BCLR SITF BSET #H'07,@PDR8 COOL_NO_3MIN MOV.B @BEFORE,R1L BCLR #H'00,R1L BSET #H'01,R1L BCLR #H'02,R1L MOV.B R1L,@BEFORE JSR @COOL_MODE RTS ;**************************** MODE_DRY ;抽湿模式 MOV.B @BEFORE,R1L AND.B #B'00000111,R1L CMP.B #B'00000011,R1L BEQ DRY_NO_3MIN BTST #H'05,@PDR7 BEQ DRY_NO_3MIN BCLR HUA BCLR MIN30 BSET MIN3 BCLR YASJ BCLR #H'05,@PDR7 BSET SEC5 BCLR WAIFJ BCLR SITF BSET #H'07,@PDR8 DRY_NO_3MIN MOV.B @BEFORE,R1L BSET #H'00,R1L BSET #H'01,R1L BCLR #H'02,R1L MOV.B R1L,@BEFORE JSR @DRY_MODE RTS ;************************** MODE_HEAT ;制热模式 MOV.B @BEFORE,R1L AND.B #B'00000111,R1L CMP.B #B'00000110,R1L BEQ HEAT_NO_3MIN MODE_HEAT1 MOV.B #H'00,R1L MOV.B R1L,@FAN_IN BTST #H'05,@PDR7 BEQ HEAT_NO_3MIN BCLR MIN30 BSET MIN3 BCLR YASJ BCLR #H'05,@PDR7 BSET SEC5 BCLR WAIFJ BCLR SITF BSET #H'07,@PDR8 HEAT_NO_3MIN MOV.B @BEFORE,R1L BCLR #H'00,R1L BSET #H'01,R1L BSET #H'02,R1L MOV.B R1L,@BEFORE JSR @HEAT_MODE RTS ;********* MODE_FAN MOV.B @BEFORE,R1L AND.B #B'00000111,R1L CMP.B #B'00000101,R1L BEQ FAN_NO_3MIN BTST #H'05,@PDR7 BEQ FAN_NO_3MIN BCLR HUA BCLR MIN30 BSET MIN3 BCLR YASJ BCLR WAIFJ BCLR SITF FAN_NO_3MIN BTST TEST_RUN BNE FAN_NO_3MIN0 BSET #H'07,@PDR8 FAN_NO_3MIN0 BCLR FLASH MOV.B @BEFORE,R1L BSET #H'00,R1L BCLR #H'01,R1L BSET #H'02,R1L MOV.B R1L,@BEFORE JSR @FAN_MODE ;通风模式 RTS ;************************** COOL_MODE ;制冷模式 BSET NEIFJ MOV.B @REV8,R1L AND.B #B'11110000,R1L CMP.B #B'10000000,R1L BEQ COOL_MODE0 ;设定自动风 JMP @COOL_MODE00 COOL_MODE0 JMP @COOL_IN_AUTO ;设定自动风 ; ;**** COOL_MODE00 CMP.B #B'00010000,R1L BEQ COOL_MODE1 ;设定风速中 JMP @COOL_MODE2 COOL_MODE1 JMP @COOL_IN_Mid ;设定风速中 COOL_MODE2 CMP.B #B'01000000,R1L BEQ COOL_MODE3 ;设定风速高 JMP @COOL_MODE4 COOL_MODE3 JMP @COOL_IN_HI ;设定风速高 COOL_MODE4 CMP.B #B'00100000,R1L BEQ COOL_MODE5 ;设定风速中 JMP @COOL_MODE6 COOL_MODE5 JMP @COOL_IN_Mid ;设定风速中 COOL_MODE6 JMP @COOL_OUT ;************************ COOL_IN_AUTO MOV.B @FAN_IN,R2L MOV.B @TEMP1,R1L MOV.B @TEMP0,R1H SUB.B R1H,R1L BMI COOL_IN_Mid1 CMP.B #D'04,R1L BHS COOL_IN_HI1 CMP.B #D'02,R1L BLO COOL_IN_Mid1 COOL_IN2 CMP.B #B'01000000,R2L BEQ COOL_IN_HI CMP.B #B'00010000,R2L BEQ COOL_IN_Mid JMP @COOL_IN3 COOL_IN_Mid1 CMP.B #B'00010000,R2L BEQ COOL_OUT JMP @COOL_IN3 COOL_IN_HI1 CMP.B #B'01000000,R2L BEQ COOL_OUT JMP @COOL_IN3 COOL_IN3 MOV.B @FAN_IN,R2L MOV.B @TEMP1,R1L MOV.B @TEMP0,R1H SUB.B R1H,R1L BMI COOL_IN_Mid CMP.B #D'04,R1L BHS COOL_IN_HI CMP.B #D'02,R1L BLO COOL_IN_Mid COOL_IN_HI MOV.B #B'01000000,R1L MOV.B R1L,@FAN_IN JMP @COOL_OUT COOL_IN_Mid MOV.B #B'00010000,R1L MOV.B R1L,@FAN_IN ;****************************** COOL_OUT BTST TEST_RUN BEQ COOL_OUT0 ; BSET YASJ ; BSET NEIFJ ; BSET WAIFJ JMP @COOL_YA_CLOSE2 COOL_OUT0 BTST MIN30 BEQ COOL_OUT1 RTS COOL_OUT1 ;**** MOV.B @TEMP0,R1L MOV.B @TEMP1,R1H ADD.B #D'01,R1L CMP.B R1L,R1H BHI COOL_YA_OPEN ADD.B #D'02,R1H CMP.B R1L,R1H BLS COOL_YA_CLOSE JMP @COOL_OUT_FAN COOL_YA_OPEN BTST FANGDJ BNE COOL_YA_CLOSE BTST YASJ BNE COOL_OUT_FAN BSET WAIFJ BSET YASJ BCLR SITF JMP @COOL_OUT_FAN COOL_YA_CLOSE BCLR WAIFJ BCLR YASJ BCLR SITF BCLR MIN8 BCLR FLASH RTS COOL_OUT_FAN BTST FANGDJ BNE COOL_YA_CLOSE COOL_YA_CLOSE2 BCLR SITF NOP RTS ;************************************* DRY_MODE MOV.B #B'00010000,R1L MOV.B R1L,@FAN_IN ;固定成中速风 BSET NEIFJ ;**** DRY_OUT BTST CHUSHI BNE DRY_YA_OPEN DRY_YA_CLOSE BCLR YASJ BCLR WAIFJ BCLR SITF RTS DRY_YA_OPEN BTST TEST_RUN BNE DRY_YA_OPEN2 BTST FANGDJ BNE DRY_YA_CLOSE BTST YASJ BNE DRY_YA_CLOSE1 DRY_YA_OPEN1 BSET YASJ BSET WAIFJ DRY_YA_OPEN2 BCLR SITF DRY_YA_CLOSE1 RTS ;************************** FAN_MODE MOV.B @REV8,R1L AND.B #B'11110000,R1L CMP.B #B'01000000,R1L BEQ FAN_IN_HI ;设定风速高 CMP.B #B'00010000,R1L BEQ FAN_IN_Mid ;设定风速中 FAN_IN_Mid MOV.B #B'00010000,R1L MOV.B R1L,@FAN_IN JMP @FAN_OUT FAN_IN_HI MOV.B #B'01000000,R1L MOV.B R1L,@FAN_IN FAN_OUT BCLR SITF BCLR YASJ BCLR WAIFJ BSET NEIFJ RTS ;************************************** HEAT_MODE BTST TEST_RUN BNE HEAT_MODE1 BTST #H'05,@PDR7 BNE HEAT_MODE1 JMP @HEAT_OUT0 HEAT_MODE1 BSET SHADIAN ; BCLR LOW_OK MOV.B @REV8,R1L AND.B #B'11110000,R1L CMP.B #B'01000000,R1L BNE HEAT_MODE3 JMP @HEAT_IN_HI0 ;设定风速高 HEAT_MODE3 CMP.B #B'00010000,R1L BNE HEAT_MODE4 JMP @HEAT_IN_Mid0 ;设定风速中 HEAT_MODE4 CMP.B #B'10000000,R1L BNE HEAT_MODE5 JMP @HEAT_IN_AUTO HEAT_MODE5 CMP.B #B'00100000,R1L BEQ HEAT_IN_Mid0 JMP @HEAT_OUT HEAT_IN_HI0 BTST TEST_RUN BNE HEAT_IN_HI MOV.B @FAN_IN,R2L MOV.B @TEMP2,R1L CMP.B #D'52,R1L BHS HEAT_IN_HI CMP.B #D'30,R1L BLO HEAT_IN_LOW HEAT_IN1 CMP.B #B'01000000,R2L BEQ HEAT_IN_HI CMP.B #B'00001000,R2L BEQ HEAT_IN_LOW CMP.B #B'00010000,R2L BEQ HEAT_IN_Mid JMP @HEAT_IN_LOW HEAT_IN_Mid0 BTST TEST_RUN BNE HEAT_IN_Mid MOV.B @FAN_IN,R2L MOV.B @TEMP2,R1L CMP.B #D'45,R1L BHS HEAT_IN_Mid CMP.B #D'30,R1L BLO HEAT_IN_LOW HEAT_IN2 CMP.B #B'00010000,R2L BEQ HEAT_IN_Mid CMP.B #B'00001000,R2L BEQ HEAT_IN_LOW JMP @HEAT_IN_LOW HEAT_IN_LOW ;******** CMP.B #B'00000000,R2L BNE HEAT_IN_LOW0 BTST LOW_OK BNE HEAT_IN_LOW0 BSET LOW_FIVE MOV.B #B'00010000,R1L MOV.B R1L,@FAN_IN JMP @HEAT_OUT ;******** HEAT_IN_LOW0 MOV.B #B'00001000,R1L MOV.B R1L,@FAN_IN JMP @HEAT_OUT HEAT_IN_Mid BCLR LOW_OK MOV.B #B'00010000,R1L MOV.B R1L,@FAN_IN JMP @HEAT_OUT HEAT_IN_HI BCLR LOW_OK MOV.B #B'01000000,R1L MOV.B R1L,@FAN_IN JMP @HEAT_OUT HEAT_IN_AUTO MOV.B @FAN_IN,R2L MOV.B @TEMP2,R1L CMP.B #D'52,R1L BHS HEAT_IN_HI CMP.B #D'48,R1L BHS HEAT_IN_Mid1 CMP.B #D'45,R1L BHS HEAT_IN_Mid CMP.B #D'30,R1L BHS HEAT_IN_Mid2 JMP @HEAT_IN_LOW HEAT_IN_Mid1 CMP.B #B'01000000,R2L BEQ HEAT_IN_HI CMP.B #B'00010000,R2L BEQ HEAT_IN_Mid JMP @HEAT_IN_Mid HEAT_IN_Mid2 CMP.B #B'00001000,R2L BEQ HEAT_IN_LOW CMP.B #B'00010000,R2L BEQ HEAT_IN_Mid JMP @HEAT_IN_LOW ;**** ;******* HEAT_OUT0 BTST TEST_RUN BEQ HEAT_OUT9 ; BSET NEIFJ ; BSET YASJ ; BSET WAIFJ BSET SITF RTS HEAT_OUT9 BCLR NEIFJ BTST CAOGW0 BNE HT_OUT0 ; BTST WAIFJ ; BNE HEAT_OUT92 BTST SHADIAN BNE HEAT_OUT92 MOV.B #B'00000000,R1L MOV.B R1L,@FAN_IN JMP @HEAT_OUT91 HEAT_OUT92 BTST MIN3 BNE HEAT_OUT BTST LOW_OK BNE MILLOW BSET LOW_FIVE MOV.B #B'00010000,R1L MOV.B R1L,@FAN_IN JMP @HEAT_OUT91 HT_OUT1 BSET NEIFJ JMP @HEAT_MODE1 HT_OUT0 BTST CAOGW1 BNE HT_OUT1 MILLOW MOV.B #B'00001000,R1L MOV.B R1L,@FAN_IN HEAT_OUT91 BSET NEIFJ ;**** HEAT_OUT BTST MIN3 BNE HEAT_OUT1 BSET SITF HEAT_OUT1 MOV.B @TEMP0,R1L MOV.B @TEMP1,R1H ADD.B #D'01,R1H CMP.B R1H,R1L BHI HEAT_YA_OPEN ;********* ADD.B #D'02,R1L CMP.B R1H,R1L BLS HEAT_YA_CLOSE JMP @HEAT_OUT_FAN HEAT_YA_OPEN MOV.B @COUNT,R1L CMP.B #H'00,R1L BEQ HEAT_FIRST CMP.B #H'01,R1L BEQ HEAT_YA_OPEN0 CMP.B #H'02,R1L BEQ HEAT_YA_OPEN0 JMP @HEAT_YA_OPEN0 HEAT_FIRST INC.B R1L MOV.B R1L,@COUNT JMP @HEAT_YA_OPEN0 HEAT_YA_OPEN0 BTST YASJ BNE HEAT_YA_OPEN1 BSET YASJ BSET WAIFJ BCLR FLASH HEAT_YA_OPEN1 JMP @HEAT_OUT_FAN HEAT_YA_CLOSE BTST MIN30 BEQ HEAT_YA_CLOSE1 RTS HEAT_YA_CLOSE1 MOV.B @COUNT,R1L CMP.B #H'00,R1L BEQ HEAT_YA_CLOSE2 CMP.B #H'01,R1L BEQ HEAT_FIRST1 CMP.B #H'02,R1L BEQ HEAT_YA_CLOSE2 JMP @HEAT_YA_CLOSE2 HEAT_FIRST1 INC.B R1L MOV.B R1L,@COUNT HEAT_YA_CLOSE2 BCLR YASJ BCLR WAIFJ BCLR FLASH BTST CAOGW1 BNE HEAT_YA_CLOSE3 BTST CAOGW0 BNE HEAT_YA_CLOSE3 BCLR NEIFJ RTS HEAT_YA_CLOSE3 BCLR CAOGW1 RTS ;**** HEAT_OUT_FAN BTST YASJ BEQ HEAT_OUT_Stop ;**** JSR @HEAT_GUORE BTST CAOGW0 BNE HEAT_YA_CLOSE9 BSET YASJ BTST CAOGW BNE HEAT_OUT_Stop BSET WAIFJ RTS HEAT_YA_CLOSE9 BTST MIN30 BEQ HEAT_YA_CLOSE91 RTS HEAT_YA_CLOSE91 MOV.B @COUNT,R1L CMP.B #H'00,R1L BEQ HEAT_YA_CLOSE92 CMP.B #H'01,R1L BEQ HEAT_FIRST91 CMP.B #H'02,R1L BEQ HEAT_YA_CLOSE92 JMP @HEAT_YA_CLOSE92 HEAT_FIRST91 INC.B R1L MOV.B R1L,@COUNT HEAT_YA_CLOSE92 BCLR YASJ BCLR WAIFJ BCLR FLASH RTS ;***** HEAT_OUT_Stop BCLR WAIFJ RTS ;************************************************ ;* 过热保护 * ;************************************************ HEAT_GUORE BTST HUA BNE HEAT_GUORE2 MOV.B @TEMP2,R1L CMP.B #D'80,R1L BHS HEAT_GUORE9 BCLR CAOGW0 CMP.B #D'71,R1L BHI HEAT_GUORE1 CMP.B #D'70,R1L BLS HEAT_GUORE2 HEAT_GUORE0 BTST CAOGW BNE HEAT_GUORE1 JMP @HEAT_GUORE2 HEAT_GUORE1 BSET CAOGW RTS HEAT_GUORE9 BSET CAOGW0 BSET CAOGW1 BCLR CAOGW RTS HEAT_GUORE2 BCLR CAOGW RTS ;************************************************************* ;* 睡眠、定时处理 * ;************************************************************* TIME_MODE BTST COMP BNE TIME_MODE2 MOV.B @REV3,R1L AND.B #B'01000000,R1L CMP.B #B'00000000,R1L BEQ TIME_MODE1 JSR @SLEEP_MODE TIME_MODE1 MOV.B #H'00,R1L MOV.B R1L,@SLP_NOW MOV.B #H'00,R1L MOV.B R1L,@SLP_MIN JSR @DING_MODE TIME_MODE2 RTS ;***************************** SLEEP_MODE MOV.B @SLP_MIN,R1L CMP.B #D'60,R1L BEQ SLEEP_GO1 INC.B R1L MOV.B R1L,@SLP_MIN RTS SLEEP_GO1 MOV.B #H'00,R1L MOV.B R1L,@SLP_MIN ;************************ MOV.W @SLP_NOW,R1 INC.W #H'01,R1 MOV.W R1,@SLP_NOW MOV.W #D'480,R2 CMP.W R2,R1 BNE SLEEP_GO2 JMP @SLEEP_END SLEEP_GO2 MOV.B @REV0,R3L AND.B #B'11100000,R3L CMP.B #B'01000000,R3L BEQ SLEEP_COOL ;COOL CMP.B #B'01100000,R3L BEQ SLEEP_COOL ;DRY CMP.B #B'11000000,R3L BEQ SLEEP_HEAT ;HEAT RTS SLEEP_COOL MOV.W #D'60,R2 CMP.W R2,R1 BEQ SLEEP_COOL1 MOV.W #D'120,R2 CMP.W R2,R1 BEQ SLEEP_COOL1 RTS SLEEP_COOL1 MOV.B @REV0,R1L AND.B #B'11110000,R1L CMP.B #B'11110000,R1L BLO SLEEP_COOL2 RTS SLEEP_COOL2 MOV.B @REV0,R1L ADD.B #B'00010000,R1L MOV.B R1L,@REV0 JSR @TEMPER RTS ;**** SLEEP_HEAT MOV.W #D'60,R2 CMP.W R2,R1 BEQ SLEEP_HEAT1 MOV.W #D'120,R2 CMP.W R2,R1 BEQ SLEEP_HEAT1 MOV.W #D'360,R2 CMP.W R2,R1 BEQ SLEEP_HEAT3 RTS SLEEP_HEAT1 MOV.B @REV0,R1L AND.B #B'11110000,R1L CMP.B #B'00010000,R1L BHI SLEEP_HEAT2 RTS SLEEP_HEAT2 MOV.B @REV0,R1L ADD.B #B'11100000,R1L MOV.B R1L,@REV0 JSR @TEMPER RTS SLEEP_HEAT3 MOV.B @REV0,R1L AND.B #B'11110000,R1L CMP.B #B'11110000,R1L BLO SLEEP_HEAT4 RTS SLEEP_HEAT4 MOV.B @REV0,R1L ADD.B #B'00010000,R1L MOV.B R1L,@REV0 JSR @TEMPER RTS ;********** SLEEP_END BCLR #H'06,@REV3 BCLR #H'07,@REV6 BSET #H'06,@PDR8 MOV.B @REV0,R1L AND.B #B'11110000,R1L MOV.B R1L,@REV0 ;********** RTS ;***************************** DING_MODE ;定时模式 MOV.B @REV6,R1L AND.B #B'10000000,R1L CMP.B #B'10000000,R1L BEQ CLOSE_MODE MOV.B #H'00,R1L MOV.B R1L,@CLO_NOW MOV.B R1L,@CLO_MIN MOV.B @REV4,R1L AND.B #B'10000000,R1L CMP.B #B'10000000,R1L BEQ DING_MODE0 MOV.B #H'00,R1L MOV.B R1L,@OPE_NOW MOV.B R1L,@OPE_MIN BSET #H'06,@PDR8 RTS DING_MODE0 JMP @OPEN_MODE ;****************** CLOSE_MODE BCLR #H'06,@PDR8 ;定时灯亮 MOV.B @TIM_MIN,R1L CMP.B #D'60,R1L BEQ CLOSE_GO1 INC.B R1L MOV.B R1L,@TIM_MIN RTS CLOSE_GO1 MOV.B #H'00,R1L MOV.B R1L,@TIM_MIN MOV.B @NMIN,R2L INC.B R2L MOV.B R2L,@NMIN MOV.B #D'60,R1L CMP.B R1L,R2L BEQ CLOSE_MODE2 JMP @CLOSE_MODE1 CLOSE_MODE2 MOV.B #H'00,R1L MOV.B R1L,@NMIN MOV.B @NHOUR,R2L INC.B R2L MOV.B R2L,@NHOUR MOV.B #D'24,R1L CMP.B R1L,R2L BEQ CLOSE_MODE3 JMP @CLOSE_MODE1 CLOSE_MODE3 MOV.B #H'00,R1L MOV.B R1L,@NHOUR JMP @CLOSE_MODE1 CLOSE_MODE1 MOV.B @NHOUR,R2L MOV.B @CLO_NOW,R2H CMP.B R2L,R2H BEQ CLOSE_MODE0 RTS CLOSE_MODE0 MOV.B @NMIN,R2L MOV.B @CLO_MIN,R2H CMP.B R2L,R2H BEQ CLOSE_MODEEND RTS CLOSE_MODEEND BCLR ON_OFF BCLR #H'03,@REV0 BTST #H'05,@PDR7 BEQ CLOSE_MODEEND0 BSET MIN3 MOV.B #H'00,R1L MOV.B R1L,@COUNT CLOSE_MODEEND0 BSET STEP_RES ;复位,膨胀阀回零 BCLR MOT_RES MOV.W #D'00,R1 MOV.W R1,@STEP_NOW MOV.B R1L,@STEP_PAI BSET #H'06,@PDR8 BCLR #H'07,@REV6 RTS ;****************** OPEN_MODE BCLR #H'06,@PDR8 ;定时灯亮 BCLR #H'06,@REV3 BTST ON_OFF BEQ OPEN_MODE00 BSET #H'07,@PDR8 BCLR ON_OFF BCLR #H'03,@REV0 BTST #H'05,@PDR7 BEQ OPEN_MODE01 BSET MIN3 MOV.B #H'00,R1L MOV.B R1L,@COUNT OPEN_MODE01 BSET STEP_RES ;复位,膨胀阀回零 BCLR MOT_RES MOV.W #D'00,R1 MOV.W R1,@STEP_NOW MOV.B R1L,@STEP_PAI ;**** OPEN_MODE00 MOV.B @TIM_MIN,R1L CMP.B #D'60,R1L BEQ OPEN_GO1 INC.B R1L MOV.B R1L,@TIM_MIN RTS OPEN_GO1 MOV.B #H'00,R1L MOV.B R1L,@TIM_MIN MOV.B @NMIN,R2L INC.B R2L MOV.B R2L,@NMIN MOV.B #D'60,R1L CMP.B R1L,R2L BEQ OPEN_MODE2 JMP @OPEN_MODE1 OPEN_MODE2 MOV.B #H'00,R1L MOV.B R1L,@NMIN MOV.B @NHOUR,R2L INC.B R2L MOV.B R2L,@NHOUR MOV.B #D'24,R1L CMP.B R1L,R2L BEQ OPEN_MODE3 JMP @OPEN_MODE1 OPEN_MODE3 MOV.B #H'00,R1L MOV.B R1L,@NHOUR OPEN_MODE1 MOV.B @NHOUR,R2L MOV.B @OPE_NOW,R2H CMP.B R2L,R2H BEQ OPEN_MODE0 RTS OPEN_MODE0 MOV.B @NMIN,R2L MOV.B @OPE_MIN,R2H CMP.B R2L,R2H BEQ OPEN_MODEEND RTS OPEN_MODEEND BSET ON_OFF BSET #H'03,@REV0 BSET #H'06,@PDR8 BCLR #H'07,@REV4 RTS ;****************************************** ;* 8分钟计时 * ;****************************************** EIGHT_MIN BTST MIN8 BNE MIN8_GO MOV.W #H'00,R1 MOV.W R1,@DELAY8 BCLR MIN8 RTS MIN8_GO MOV.W @DELAY8,R1 CMP.W #D'480,R1 BEQ MIN8_GO2 INC.W #H'01,R1 MOV.W R1,@DELAY8 RTS MIN8_GO2 BSET MIN_8 BCLR MIN8 MOV.W #H'00,R1 MOV.W R1,@DELAY8 RTS ;****************************************** ;* 制冷剂泄漏保护 * ;****************************************** COOL_PRO BTST MIN_8 BNE COOL_PRO1 RTS COOL_PRO1 BTST ONLY_CO BNE COOL_PRO8 MOV.B @TEMP2,R1L MOV.B @TEMP1,R1H CMP.B R1H,R1L BHI COOL_PRO9 ADD.B #D'03,R1L CMP.B R1H,R1L BHI COOL_PRO2 JMP @COOL_PRO8 COOL_PRO9 ADD.B #D'03,R1H CMP.B R1L,R1H BHI COOL_PRO2 COOL_PRO8 MOV.B #H'00,R1L MOV.B R1L,@MIN_2 BCLR ERROR1 BCLR MIN_8 RTS COOL_PRO2 MOV.B @MIN_2,R1L CMP.B #D'120,R1L BEQ COOL_PRO3 INC.B R1L MOV.B R1L,@MIN_2 BCLR ERROR1 RTS COOL_PRO3 BSET ERROR1 BCLR MIN_8 MOV.B #H'00,R1L MOV.B R1L,@MIN_2 RTS ;****************************************** ;* 3分钟延时 * ;****************************************** THREE_MIN BTST MIN3 BNE MIN_GO MOV.B #H'00,R1L MOV.B R1L,@DELAY9 RTS MIN_GO MOV.B @DELAY9,R1L CMP.B #D'180,R1L BEQ MIN_END INC.B R1L MOV.B R1L,@DELAY9 RTS MIN_END BCLR MIN3 MOV.B #H'00,R1L MOV.B R1L,@DELAY9 RTS ;****************************************** ;* 3分钟延时 * ;****************************************** THREE_MIN0 BTST MIN30 BNE MIN_GO0 MOV.B #H'00,R1L MOV.B R1L,@DELAY0 RTS MIN_GO0 MOV.B @DELAY0,R1L CMP.B #D'180,R1L BEQ MIN_END0 INC.B R1L MOV.B R1L,@DELAY0 RTS MIN_END0 BCLR MIN30 MOV.B #H'00,R1L MOV.B R1L,@DELAY0 RTS ;****************************************** ;* 5秒延时 * ;****************************************** FIVE_SEC BTST SEC5 BNE SEC5_GO00 MOV.B #H'00,R1L MOV.B R1L,@DELAY_5S RTS SEC5_GO00 MOV.B @DELAY_5S,R1L CMP.B #D'5,R1L BEQ SEC5_END0 INC.B R1L MOV.B R1L,@DELAY_5S RTS SEC5_END0 BCLR SEC5 MOV.B #H'00,R1L MOV.B R1L,@DELAY_5S RTS ;****************************************** ;* 5秒延时 * ;****************************************** FIVE_SEC0 BTST SEC10 BNE SEC5_GO0 MOV.B #H'00,R1L MOV.B R1L,@DELAY_5S0 RTS SEC5_GO0 MOV.B @DELAY_5S0,R1L CMP.B #D'5,R1L BEQ SEC5_END CMP.B #D'10,R1L BEQ SEC5_END1 INC.B R1L MOV.B R1L,@DELAY_5S0 RTS SEC5_END BCLR SEC50 INC.B R1L MOV.B R1L,@DELAY_5S0 RTS SEC5_END1 BCLR SEC10 MOV.B #H'00,R1L MOV.B R1L,@DELAY_5S0 RTS ;****************************************** ;* 1秒计时 * ;****************************************** SECO1 MOV.B @REV0,R1L AND.B #B'00000111,R1L CMP.B #B'00000110,R1L BNE LF_END ;制热 BTST ON_OFF BEQ LF_END BTST LOW_FIVE BNE LF_1 MOV.W #H'00,R1 MOV.W R1,@DELAY_5S1 RTS LF_1 MOV.W @DELAY_5S1,R1 CMP.W #H'4B7,R1 BEQ LF_2 INC.W #H'01,R1 MOV.W R1,@DELAY_5S1 RTS LF_2 BSET LOW_OK JMP @LF1_END LF_END BCLR LOW_OK LF1_END BCLR LOW_FIVE MOV.W #H'00,R1 MOV.W R1,@DELAY_5S1 RTS ;****************************************** ;* 30秒延时 * ;****************************************** THIRTY_SEC BTST SEC30 BNE SEC30_GO MOV.B #H'00,R1L MOV.B R1L,@DELAY_30S RTS SEC30_GO MOV.B @DELAY_30S,R1L CMP.B #D'30,R1L BEQ SEC30_END0 INC.B R1L MOV.B R1L,@DELAY_30S RTS SEC30_END0 BCLR SEC30 MOV.B #H'00,R1L MOV.B R1L,@DELAY_30S RTS ;************************************************ ;* 防冻结处理 * ;************************************************ FROZEN BTST ONLY_CO BNE FROZEN_END MOV.B @TEMP2,R3L MOV.B @BEFORE,R1L AND.B #B'00000111,R1L CMP.B #B'00000010,R1L BEQ FROZEN1 CMP.B #B'00000011,R1L BEQ FROZEN1 FROZEN_END BCLR FANGDJ MOV.W #H'00,R1 MOV.W R1,@FROZ_C1 RTS FROZEN1 CMP.B #D'25,R3L BHS FROZEN_END ;FROZEN RESTORE CMP.B #D'18,R3L BLS FROZEN10 RTS FROZEN10 MOV.W @FROZ_C1,R1 CMP.W #D'180,R1 BEQ FROZEN_ONE ;发生情况3分钟 INC.W #1,R1 MOV.W R1,@FROZ_C1 RTS FROZEN_ONE BSET FANGDJ RTS ;**************************** ;************************************************************* ;* 除湿开10停5处理 * ;************************************************************* DRY_SWITCH MOV.B @BEFORE,R1L AND.B #B'00000111,R1L CMP.B #B'00000011,R1L BNE DRY_SWITCH0 JMP @DRY_SWITCH1 DRY_SWITCH0 BCLR CHUSHI MOV.W #H'00,R1 MOV.W R1,@DRY_COU RTS DRY_SWITCH1 MOV.W @DRY_COU,R1 INC.W #H'01,R1 MOV.W R1,@DRY_COU CMP.W #D'600,R1 BHI DRY_SWITCH2 BSET CHUSHI RTS DRY_SWITCH2 CMP.W #D'900,R1 BHI DRY_SWITCH0 BCLR CHUSHI RTS ;************************************************************* ;* 辅助电加热处理 * ;************************************************************* FU_DIAN BTST ONLY_CO BNE FU_DIAN_END MOV.B @BEFORE,R1L AND.B #B'00000111,R1L CMP.B #B'00000110,R1L BEQ FU_DIAN1 FU_DIAN_END BCLR #H'06,@PDR7 ;BCLR #H'01,@FLAG6 RTS FU_DIAN1 MOV.B @REV7,R1L AND.B #B'10000000,R1L CMP.B #B'10000000,R1L BEQ FU_DIAN_END ; BTST NEIFJ ; BEQ FU_DIAN_END MOV.B @FAN_IN,R1L AND.B #B'11111000,R1L CMP.B #B'00001000,R1L BEQ FU_DIAN_END AND.B #B'11111000,R1L CMP.B #B'00000000,R1L BEQ FU_DIAN_END ; CMP.B #B'00010000,R1L ; BEQ FU_DIAN4 ; JMP FU_DIAN5 ;FU_DIAN4 ; BTST LOW_FIVE ; BNE FU_DIAN_END FU_DIAN5 MOV.B @TEMP1,R1L CMP.B #D'41,R1L BHS FU_DIAN2 MOV.B @TEMP2,R1H CMP.B #D'60,R1H BHS FU_DIAN3 BSET #H'06,@PDR7 ;BSET #H'01,@FLAG6 RTS FU_DIAN2 CMP.B #D'43,R1L BHS FU_DIAN_END NOP RTS FU_DIAN3 CMP.B #D'62,R1H BHS FU_DIAN_END NOP RTS ;************************************************************* ;* 室外压机加热处理 * ;************************************************************* WAI_RE BTST ONLY_CO BNE WAI_RE_END MOV.B @REV0,R1L AND.B #B'00000111,R1L CMP.B #B'00000110,R1L BEQ WAI_RE1 WAI_RE_END BCLR #H'00,@PDR1 RTS WAI_RE1 BTST #H'05,@PDR7 BNE WAI_RE_END MOV.B @TEMP3,R1L CMP.B #D'17,R1L BHS WAI_RE2 BSET #H'00,@PDR1 ;BSET #H'03,@FLAG6 RTS WAI_RE2 CMP.B #D'20,R1L BHS WAI_RE_END NOP RTS ;************************************ ;* 化霜条件1 * ;************************************ CHU_TERM1 BTST ONLY_CO BNE TERM_END BTST HUA BNE TERM_END0 MOV.B @BEFORE,R1L AND.B #B'00000111,R1L CMP.B #B'00000110,R1L BEQ TERM1 TERM_END BCLR HUA TERM_END0 MOV.W #H'00,R1 MOV.W R1,@HS_COU1 RTS TERM1 BTST #H'05,@PDR7 BNE TERM2 JMP @TERM_END TERM2 MOV.W @HS_COU1,R1 CMP.W #D'600,R1 BEQ TERM_GO1 CMP.W #D'2700,R1 BEQ TERM_GO INC.W #H'01,R1 MOV.W R1,@HS_COU1 RTS TERM_GO1 MOV.B @COUNT,R2L CMP.B #H'01,R2L BEQ TERM_GO9 INC.W #H'01,R1 MOV.W R1,@HS_COU1 RTS TERM_GO9 INC.B R2L MOV.B R2L,@COUNT TERM_GO BTST HUA_CON1 BNE TERM_SET RTS TERM_SET BSET HUA MOV.B #H'01,R1L MOV.B R1L,@CNT MOV.W #H'00,R1 MOV.W R1,@HS_COU1 RTS ;************************************ ;* 化霜条件2 * ;************************************ CHU_TERM2 BTST ONLY_CO BNE TERM2_END BTST HUA BNE TERM2_END MOV.B @BEFORE,R1L AND.B #B'00000111,R1L CMP.B #B'00000110,R1L BNE TERM2_END MOV.B @TEMP3,R1L CMP.B #D'13,R1L BHS TERM2_END MOV.W @HS_COU,R1 CMP.W #D'300,R1 BEQ TERM2_OK INC.W #1,R1 MOV.W R1,@HS_COU RTS TERM2_OK BSET HUA_CON1 RTS TERM2_END BCLR HUA_CON1 MOV.W #H'00,R1 MOV.W R1,@HS_COU RTS ;************************************ ;* 化霜动作 * ;************************************ CHU_WORK BTST HUA BNE CHU_0 RTS CHU_0 BSET FLASH BCLR #H'06,@PDR7 MOV.B #H'00,R1L MOV.B R1L,@FAN_IN BCLR #H'06,@PDR1 BCLR #H'05,@PDR1 BCLR #H'04,@PDR1 MOV.B @CNT,R1L CMP.B #H'01,R1L BEQ CHU_1 CMP.B #H'02,R1L BEQ CHU_2 CMP.B #H'03,R1L BEQ CHU_3 JMP @CHU_WORK1 CHU_1 BCLR #H'05,@PDR7 ;BCLR YASJ BSET #H'04,@PDR7 ;BSET SITF BSET #H'01,@PDR8 ;BSET WAIFJ MOV.B @HUA_COU,R1L CMP.B #D'30,R1L BEQ CHU_11 INC.B R1L MOV.B R1L,@HUA_COU RTS CHU_11 MOV.B #H'02,R1L MOV.B R1L,@CNT MOV.B #H'00,R1L MOV.B R1L,@HUA_COU RTS CHU_2 BCLR #H'05,@PDR7 ;BCLR YASJ BCLR #H'04,@PDR7 ;BCLR SITF BCLR #H'01,@PDR8 ;BCLR WAIFJ MOV.B @HUA_COU,R1L CMP.B #D'10,R1L BEQ CHU_22 INC.B R1L MOV.B R1L,@HUA_COU RTS CHU_22 MOV.B #H'03,R1L MOV.B R1L,@CNT MOV.B #H'00,R1L MOV.B R1L,@HUA_COU RTS CHU_3 BSET #H'05,@PDR7 ;BSET YASJ BCLR #H'04,@PDR7 ;BCLR SITF BCLR #H'01,@PDR8 ;BCLR WAIFJ MOV.W @HUA_COU,R1 CMP.W #D'540,R1 BEQ CHU_33 INC.W #1,R1 MOV.W R1 ,@HUA_COU MOV.B @TEMP3,R2L CMP.B #D'43,R2L BHS CHU_33 RTS CHU_33 MOV.B #H'04,R1L MOV.B R1L,@CNT MOV.B #H'00,R1L MOV.B R1L,@HUA_COU RTS CHU_WORK1 CMP.B #H'04,R1L BEQ CHU_4 CMP.B #H'05,R1L BEQ CHU_5 CMP.B #H'06,R1L BEQ CHU_6 RTS CHU_4 BCLR #H'05,@PDR7 ;BCLR YASJ BCLR #H'04,@PDR7 ;BCLR SITF BCLR #H'01,@PDR8 ;BCLR WAIFJ MOV.B @HUA_COU,R1L CMP.B #D'20,R1L BEQ CHU_44 INC.B R1L MOV.B R1L,@HUA_COU RTS CHU_44 MOV.B #H'05,R1L MOV.B R1L,@CNT MOV.B #H'00,R1L MOV.B R1L,@HUA_COU RTS CHU_5 BCLR #H'05,@PDR7 ;BCLR YASJ BSET #H'04,@PDR7 ;BSET SITF BSET #H'01,@PDR8 ;BSET WAIFJ MOV.B @HUA_COU,R1L CMP.B #D'02,R1L BEQ CHU_55 INC.B R1L MOV.B R1L,@HUA_COU RTS CHU_55 MOV.B #H'06,R1L MOV.B R1L,@CNT MOV.B #H'00,R1L MOV.B R1L,@HUA_COU RTS CHU_6 BSET #H'05,@PDR7 ;BSET YASJ BSET #H'04,@PDR7 ;BSET SITF BSET #H'01,@PDR8 ;BSET WAIFJ BSET MIN30 MOV.B #H'00,R1L MOV.B R1L,@CNT MOV.B #H'00,R1L MOV.B R1L,@HUA_COU ;恢复除霜 BCLR HUA BCLR FLASH BCLR #H'07,@PDR8 RTS ;************************************************ ;* 换新风控制程序 * ;************************************************ NEW_WIND MOV.B @REV0,R1L BTST #H'03,R1L BNE NEW_1 NEW_END BCLR #H'00,@PDR8 NEW_END1 MOV.W #H'00,R1 MOV.W R1,@NEW_COU RTS NEW_1 BTST #H'06,@REV7 BNE NEW_3 MOV.W #H'00,R1 MOV.W R1,@NEW_COU BTST #H'02,@REV8 BNE NEW_4 BCLR #H'00,@PDR8 ;BCLR #H'01,@FLAG3 RTS NEW_3 MOV.W @NEW_COU,R1 ;自动换新风 INC.W #H'01,R1 MOV.W R1,@NEW_COU CMP.W #D'600,R1 BHI NEW_33 BSET #H'00,@PDR8 ;BSET #H'01,@FLAG3 RTS NEW_33 CMP.W #D'3600,R1 BHI NEW_END1 BCLR #H'00,@PDR8 ;BCLR #H'01,@FLAG3 RTS NEW_4 BSET #H'00,@PDR8 ;BSET #H'01,@FLAG3 ;连续换新风 RTS ;************************************************ ;* 健康控制程序 * ;************************************************ HEALTH BTST #H'07,@REV5 BNE HEALTH_1 BTST HUA BNE HEALTH_1 MOV.B @FAN_IN,R1L AND.B #B'11111000,R1L CMP.B #B'00000000,R1L BEQ HEALTH_1 BSET #H'07,@PDR1 ;BSET #H'02,@FLAG6 RTS HEALTH_1 BCLR #H'07,@PDR1 ;BCLR #H'02,@FLAG6 RTS ;************************************************ ;* 继电器控制程序 * ;************************************************ RELAY BTST TEST_RUN BNE RELAY_RUN BTST HUA BEQ RELAY_00 RTS RELAY_RUN BTST ON_OFF BNE RELAY_RUN0 BSET #H'07,@PDR8 JMP @RELAY_RUN1 RELAY_RUN0 BCLR #H'07,@PDR8 RELAY_RUN1 BTST #H'05,@PDR7 BEQ RELAY_RUN2 BSET MIN3 RELAY_RUN2 BCLR #H'05,@PDR7 BCLR #H'04,@PDR7 BCLR #H'06,@PDR7 BCLR #H'00,@PDR1 BCLR #H'01,@PDR8 BCLR FLASH JMP @RELAY_NEI RELAY_00 BTST YASJ BNE RELAY0 BTST #H'05,@PDR7 BEQ RELAY011 BTST MIN30 BNE RELAY012 BSET MIN3 MOV.B #H'00,R1L MOV.B R1L,@DELAY9 BCLR #H'05,@PDR7 BSET #H'07,@PDR8 BSET SEC5 BTST #H'01,@PDR8 BEQ RELAY_01 JMP @RELAY_WAI RELAY_01 BSET SEC30 JMP @RELAY_WAI RELAY011 BCLR FLASH BSET #H'07,@PDR8 JMP @RELAY_WAI RELAY012 JMP @RELAY_SI RELAY0 BTST #H'05,@PDR7 BEQ RELAY01 BTST WAIFJ BNE RELAY_WAI BSET #H'05,@PDR7 BCLR #H'07,@PDR8 BCLR #H'01,@PDR8 BSET #H'04,@PDR7 BSET NEIFJ JMP @RELAY_NEI RELAY01 BTST MIN3 BNE RELAY010 BSET MIN30 MOV.B #H'00,R1L MOV.B R1L,@DELAY0 BTST #H'01,@PDR8 BNE RELAY02 ;************************ BTST CAOGW BEQ RELAY0100 BCLR #H'01,@PDR8 JMP @RELAY03 ;************************ RELAY0100 BSET #H'01,@PDR8 BSET SEC5 JMP @RELAY_SI RELAY010 BCLR #H'05,@PDR7 BTST #H'01,@PDR8 BEQ RELAY018 BTST SEC5 BNE RELAY018 BCLR #H'01,@PDR8 BSET SEC30 RELAY018 MOV.B @BEFORE,R1L AND.B #B'00000111,R1L CMP.B #B'00000011,R1L BEQ RELAY019 BSET FLASH JMP @RELAY_SI RELAY019 BSET #H'07,@PDR8 BCLR FLASH JMP @RELAY_SI RELAY02 BTST SEC5 BEQ RELAY03 JMP @RELAY_SI RELAY03 BSET #H'05,@PDR7 MOV.B @BEFORE,R1L AND.B #B'00000111,R1L CMP.B #B'00000010,R1L BEQ RELAY034 CMP.B #B'00000011,R1L BEQ RELAY034 JMP @RELAY033 RELAY034 BSET MIN8 RELAY033 BCLR FLASH BCLR #H'07,@PDR8 BSET SEC10 BSET SEC50 JMP @RELAY_SI ;*** RELAY_WAI BTST WAIFJ BNE RELAY_W1 BTST #H'01,@PDR8 BEQ RELAY_W3 BTST SEC5 BEQ RELAY_W2 JMP @RELAY_SI RELAY_W2 BCLR #H'01,@PDR8 BSET SEC30 BTST NEIFJ BNE RELAY_SI MOV.B #H'00,R1L MOV.B R1L,@FAN_IN JMP @RELAY_SI RELAY_W3 BTST SEC5 BEQ RELAY_W4 JMP @RELAY_SI RELAY_W4 BTST CAOGW BEQ RELAY_SI BCLR CAOGW BTST NEIFJ BNE RELAY_SI MOV.B #H'00,R1L MOV.B R1L,@FAN_IN JMP @RELAY_SI RELAY_W1 BTST #H'01,@PDR8 BNE RELAY_SI BSET #H'01,@PDR8 JMP @RELAY_SI RELAY_SI BTST SITF BNE RELAY_S2 BTST #H'04,@PDR7 BNE RELAY_S3 JMP @RELAY_NEI RELAY_S3 BTST MIN3 BEQ RELAY_S30 BTST #H'05,@PDR7 BNE RELAY_NEI BTST #H'01,@PDR8 BNE RELAY_NEI BTST SEC30 BNE RELAY_NEI RELAY_S30 BCLR #H'04,@PDR7 JMP @RELAY_NEI RELAY_S2 BTST #H'04,@PDR7 BNE RELAY_NEI BTST #H'05,@PDR7 BEQ RELAY_NEI BTST #H'01,@PDR8 BEQ RELAY_NEI BTST SEC50 BNE RELAY_NEI BSET #H'04,@PDR7 RELAY_NEI MOV.B @FAN_IN,R1L AND.B #B'11111000,R1L CMP.B #B'01000000,R1L BEQ RELAY_HI AND.B #B'11111000,R1L CMP.B #B'00100000,R1L BEQ RELAY_Mid AND.B #B'11111000,R1L CMP.B #B'00010000,R1L BEQ RELAY_Mid AND.B #B'11111000,R1L CMP.B #B'00001000,R1L BEQ RELAY_LOW AND.B #B'11111000,R1L CMP.B #B'00000000,R1L BEQ RELAY_OFF RTS RELAY_HI BSET #H'06,@PDR1 BCLR #H'05,@PDR1 BCLR #H'04,@PDR1 RTS RELAY_Mid BCLR #H'06,@PDR1 BSET #H'05,@PDR1 BCLR #H'04,@PDR1 RTS RELAY_LOW BCLR #H'06,@PDR1 BCLR #H'05,@PDR1 BSET #H'04,@PDR1 RTS RELAY_OFF BCLR LOW_OK BCLR #H'06,@PDR1 BCLR #H'05,@PDR1 BCLR #H'04,@PDR1 RTS ;***************STEP MOTRO*********************** ;* 电子膨胀阀驱动程序(PORT5口低4位) * ;************************************************ MOTOR_RUN BTST CLOSE BNE MOTOR_RUN9 BTST STEP_RES BNE MOTOR_RESET BTST ON_OFF BNE MOTOR_RUN99 RTS MOTOR_RUN99 BTST #H'06,@REV1 BNE MOTOR_RUN90 MOV.W #H'2FF0,R2 MOV.B @STEP_PAI,R1L MOV.B #D'00,R1H ADD.W R1,R2 MOV.B @R2,R1L CMP.B #H'01,R1L BNE MOTOR_RUN90 MOV.B @PDR5,R3L AND.B #B'11110000,R3L ADD.B R3L,R1L MOV.B R1L,@PDR5 MOTOR_RUN9 RTS MOTOR_RESET: BTST MOT_RES BNE MOTOR_RESET200 MOV.B @STEP_PAI,R1L CMP.B #D'01,R1L BLS MOTOR_RESET100 DEC.B R1L MOV.B R1L,@STEP_PAI JMP @MOTOR_RESET110 MOTOR_RESET100: MOV.B #D'08,R1L MOV.B R1L,@STEP_PAI MOV.W @STEP_NOW,R1 INC.W #D'1,R1 MOV.W R1,@STEP_NOW MOV.W #D'140,R2 CMP.W R2,R1 BHS MOTOR_RESET120 MOTOR_RESET110: MOV.W #H'2FF0,R2 MOV.B @STEP_PAI,R1L MOV.B #D'00,R1H ADD.W R1,R2 MOV.B @R2,R1L MOV.B @PDR5,R3L AND.B #B'11110000,R3L ADD.B R3L,R1L MOV.B R1L,@PDR5 RTS MOTOR_RUN90 JMP @MOTOR_RUN100 MOTOR_RESET120 BSET MOT_RES MOV.W #H'00,R1 MOV.W R1,@STEP_NOW RTS MOTOR_RESET200: MOV.B @STEP_PAI,R1L CMP.B #D'08,R1L BHS MOTOR_RESET210 INC.B R1L MOV R1L,@STEP_PAI JMP @MOTOR_RESET220 MOTOR_RESET210: MOV.B #D'01,R1L MOV.B R1L,@STEP_PAI MOV.W @STEP_NOW,R1 INC.W #D'1,R1 MOV.W R1,@STEP_NOW MOV.W #D'80,R2 CMP.W R2,R1 BHS MOTOR_RESET300 MOTOR_RESET220: MOV.W #H'2FF0,R2 MOV.B @STEP_PAI,R1L MOV.B #D'00,R1H ADD.W R1,R2 MOV.B @R2,R1L MOTOR_RESET230 MOV.B @PDR5,R3L AND.B #B'11110000,R3L ADD.B R3L,R1L MOV.B R1L,@PDR5 RTS MOTOR_RESET300 BCLR STEP_RES BCLR MOT_RES MOV.W #D'00,R1 MOV.W R1,@STEP_NOW MOV.B #D'00,R1L MOV.B R1L,@STEP_PAI MOV.B #B'00000001,R1L JMP @MOTOR_RESET230 ;**** MOTOR_RUN100: BTST MOT_RES BNE MOTOR_RUN101 MOV.W #D'50,R1 MOV.W R1,@STEP_NOW BSET MOT_RES MOTOR_RUN101 MOV.W @STEP_SET,R1 MOV.W @STEP_NOW,R2 CMP.W R1,R2 BLO MOTOR_ZHENG100 CMP.W R1,R2 BHS MOTOR_FAN100 RTS ;**** MOTOR_ZHENG100: MOV.B @STEP_PAI,R1L CMP.B #D'08,R1L BHS MOTOR_ZHENG110 INC.B R1L MOV R1L,@STEP_PAI JMP @MOTOR_ZHENG120 MOTOR_ZHENG110: MOV.B #D'01,R1L MOV.B R1L,@STEP_PAI MOV.W @STEP_NOW,R1 INC.W #D'1,R1 MOV.W R1,@STEP_NOW MOV.W @STEP_SET,R2 CMP.W R2,R1 BHS MOTOR_ZHENG200 MOTOR_ZHENG120: MOV.W #H'2FF0,R2 MOV.B @STEP_PAI,R1L MOV.B #D'00,R1H ADD.W R1,R2 MOV.B @R2,R1L MOV.B @PDR5,R3L AND.B #B'11110000,R3L ADD.B R3L,R1L MOV.B R1L,@PDR5 RTS MOTOR_ZHENG200: MOV.W @STEP_NOW,R1 MOV.W R1,@STEP_NOW0 RTS ;**** MOTOR_FAN100: MOV.B @STEP_PAI,R1L CMP.B #D'01,R1L BLS MOTOR_FAN110 DEC.B R1L MOV.B R1L,@STEP_PAI JMP @MOTOR_FAN120 MOTOR_FAN110: MOV.B #D'08,R1L MOV.B R1L,@STEP_PAI MOV.W @STEP_NOW0,R1 DEC.W #D'1,R1 MOV.W R1,@STEP_NOW0 MOV.W @STEP_BU,R2 CMP.W R2,R1 BLS MOTOR_FAN200 MOTOR_FAN120: MOV.W #H'2FF0,R2 MOV.B @STEP_PAI,R1L MOV.B #D'00,R1H ADD.W R1,R2 MOV.B @R2,R1L MOV.B @PDR5,R3L AND.B #B'11110000,R3L ADD.B R3L,R1L MOV.B R1L,@PDR5 RTS MOTOR_FAN200 MOV.W @STEP_NOW0,R1 MOV.W R1,@STEP_NOW RTS ;***************STEP MOTRO*********************** ;* 电子膨胀阀 * ;************************************************ MOTOR MOV.B @MOT_TIM,R1L CMP #D'15,R1L BNE MOT_END MOV.B #D'00,R1L MOV.B R1L,@MOT_TIM JSR @MOTOR1_RUN ;左右 JSR @MOTOR_RUN ;上下 MOT_END RTS ;***************STEP MOTRO*********************** ;* 电子膨胀阀驱动程序(PORT5口高4位) * ;************************************************ MOTOR1_RUN BTST CLOSE BNE MOTOR1_RUN9 BTST ON_OFF BNE MOTOR1_RUN00 MOV.B @STEP_PAI1,R1L CMP.B #D'02,R1L BNE MOTOR1_RUN100 BCLR FZHA RTS MOTOR1_RUN00 BTST #H'07,@REV1 BNE MOTOR1_RUN100 MOV.B @STEP_PAI1,R1L CMP.B #D'02,R1L BNE MOTOR1_RUN100 BCLR FZHA MOTOR1_RUN9 RTS ;**** MOTOR1_RUN100: BSET FZHA MOV.B @STEP_PAI1,R1L CMP.B #D'08,R1L BHS MOTOR1_ZHENG110 INC.B R1L MOV R1L,@STEP_PAI1 JMP @MOTOR1_ZHENG120 MOTOR1_ZHENG110: MOV.B #D'01,R1L MOV.B R1L,@STEP_PAI1 MOTOR1_ZHENG120: MOV.W #H'2EF0,R2 MOV.B @STEP_PAI1,R1L MOV.B #D'00,R1H ADD.W R1,R2 MOV.B @R2,R1L MOV.B @PDR5,R3L AND.B #B'00001111,R3L ADD.B R3L,R1L MOV.B R1L,@PDR5 RTS ;******************************* MOTOR_SET MOV.W #D'120,R1 MOV.W R1,@STEP_SET MOV.W R1,@STEP_SET1 MOV.W #D'00,R1 MOV.W R1,@STEP_BU MOV.W R1,@STEP_BU1 RTS ;******************************************************** ;* * ;* 接收数据处理 * ;* * ;******************************************************** PRE_DATA MOV.W @HANDC,R1 CMP.W #H'4B7,R1 BEQ PRE_DATA0 JMP @PRE_END PRE_DATA0 MOV.W #H'00,R2 MOV.W R2,@HANDC BTST REC_OK BNE PRE_DATA1 BTST REC1_OK BNE PRE_DATA2 JMP @PRE_END PRE_DATA1 BCLR REC_OK BCLR FIRST JSR @LOAD JSR @SAVEF JMP @PRE_END PRE_DATA2 BCLR REC1_OK BTST CLOSE BEQ PRE_DATA21 JSR @SEND JMP @PRE_END PRE_DATA21 JSR @MLOAD MOV.L #H'FB89,ER3 MOV.B @ER3,R1L MOV.B @JIAOY,R1H CMP.B R1L,R1H BNE PRE_DATA3 JMP @PRE_DATA4 PRE_DATA3 JSR @SAVEF PRE_DATA4 MOV.L #H'FB89,ER3 MOV.B @ER3,R1L MOV.B R1L,@JIAOY PRE_END RTS ;******************************************************** ;* * ;* 遥控接收 * ;* * ;******************************************************** TIMEW PUSH.W R0 PUSH.W R1 PUSH.W R2 PUSH.W R3 TMRX000 BTST COMP BNE TMRX010 BTST #H'03,@TSRW ; BEQ TMRX010 ; BCLR #H'03,@TSRW ; ; BTST #H'03,@TIERW ; BEQ TMRX031 JMP @TMRX100 ;rec hand IC TMRX010 ; BTST #H'02,@TSRW ; BEQ TMRX020 ; BCLR #H'02,@TSRW ; ; BTST #H'02,@TIERW BEQ TMRX031 JMP @TMRX200 TMRX020 BTST #H'01,@TSRW BEQ TMRX030 BCLR #H'01,@TSRW JMP @TMRX300 TMRX030 BTST #H'07,@TSRW BEQ TMRX031 BCLR #H'07,@TSRW BCLR #H'07,@TIERW JMP @TIMEW_END TMRX031 JMP @TIMEW_END TMRX100 BTST CLOSE BEQ TMRX101 JMP @TMRX113 TMRX101 MOV.W @TCNT,R0 MOV.W R0,@FRCBAK MOV.W @FRCBAK,R0 MOV.B R0H,R0L MOV.B @LRECBAK,R1L SUBX.B R1L,R0L MOV.B R0H,@LRECBAK CMP.B #H'39,R0L ;39--45 HEAD BLO TMRX110 CMP.B #H'45,R0L BHI TMRX113 MOV.B #H'01,R0L MOV.B R0L,@RECCNT JMP @TIMEW_END TMRX113 MOV.B #H'00,R0L MOV.B R0L,@RECCNT JMP @TIMEW_END TMRX110 MOV.B @RECCNT,R1H CMP.B #H'00,R1H BEQ TMRX113 CMP.B #H'04,R0L BLO TMRX130 CMP.B #H'0B,R0L BHI TMRX130 ANDC #B'11111110,CCR JMP @TMRX140 TMRX130 CMP.B #H'0D,R0L BLO TMRX113 CMP.B #H'14,R0L BHI TMRX113 ORC #B'00000001,CCR TMRX140 MOV.B @REV11,R0L ROTXL.B R0L MOV.B R0L,@REV11 MOV.B @REV10,R0L ROTXL.B R0L MOV.B R0L,@REV10 MOV.B @REV09,R0L ROTXL.B R0L MOV.B R0L,@REV09 MOV.B @REV08,R0L ROTXL.B R0L MOV.B R0L,@REV08 MOV.B @REV07,R0L ROTXL.B R0L MOV.B R0L,@REV07 MOV.B @REV06,R0L ROTXL.B R0L MOV.B R0L,@REV06 MOV.B @REV05,R0L ROTXL.B R0L MOV.B R0L,@REV05 MOV.B @REV04,R0L ROTXL.B R0L MOV.B R0L,@REV04 MOV.B @REV03,R0L ROTXL.B R0L MOV.B R0L,@REV03 MOV.B @REV02,R0L ROTXL.B R0L MOV.B R0L,@REV02 MOV.B @REV01,R0L ROTXL.B R0L MOV.B R0L,@REV01 MOV.B @REV00,R0L ROTXL.B R0L MOV.B R0L,@REV00 MOV.B @RECCNT,R0L CMP.B #D'96,R0L BLO TMRX150 BTST FIRST BNE VERIFY0 BSET FIRST JMP @VERIFY00 VERIFY0 BCLR FIRST VERIFY00 MOV.B @REV00,R1L CMP.B #H'18,R1L BNE TMRX160 MOV.B @REV01,R1L CMP.B #H'27,R1L BNE TMRX160 MOV.B #H'00,R1L MOV.W #H'FC12,R2 VERIFY MOV.B @R2,R1H AND.B #B'00001111,R1H ADD.B R1H,R1L MOV.B @R2,R1H SHLR.B R1H SHLR.B R1H SHLR.B R1H SHLR.B R1H ADD.B R1H,R1L INC.W #H'01,R2 MOV.L #H'FC1B,ER3 CMP.W R3,R2 BNE VERIFY MOV.B @REV11,R1H CMP.B R1L,R1H BEQ VERIFY1 JMP @TMRX113 TMRX160 MOV.B #H'00,R1L MOV.B R1L,@REV00 MOV.B R1L,@REV01 JMP @TMRX113 VERIFY1 MOV.L #H'FC10,ER2 MOV.L #H'FB80,ER1 PUT2 MOV.B @ER2+,R3L MOV.B R3L,@ER1 ADDS.L #H'01,ER1 MOV.L #H'FC1B,ER3 CMP.L ER3,ER2 BNE PUT2 BTST FIRST BNE VERIFY11 BTST REC_OK BNE VERIFY9 VERIFY11 MOV.B @REV02,R2L AND.B #B'00000111,R2L CMP.B #B'00000110,R2L BNE VERIFY12 BTST ONLY_CO BNE VERIFY9 VERIFY12 BSET BUZ BSET REC_OK MOV.W #H'00,R2 MOV.W R2,@HANDC VERIFY9 JMP @TMRX113 TMRX150 INC.B R0L MOV.B R0L,@RECCNT JMP @TIMEW_END TMRX200 MOV.W @TCNT,R0 ; MOV.W R0,@FRCBAK ; MOV.W @FRCBAK,R0 MOV.B R0H,R0L MOV.B @LRECBAK,R1L SUBX.B R1L,R0L MOV.B R0H,@LRECBAK CMP.B #H'75,R0L ;75--A0 HEAD BLO TMRX210 CMP.B #H'A0,R0L BHI TMRX213 MOV.B #H'01,R0L MOV.B R0L,@RECCNT JMP @TIMEW_END TMRX213 MOV.B #H'00,R0L MOV.B R0L,@RECCNT JMP @TIMEW_END TMRX210 MOV.B @RECCNT,R1H CMP.B #H'00,R1H BEQ TMRX213 CMP.B #D'20,R0L BLO TMRX2300 CMP.B #D'60,R0L BHS TMRX230 ORC #B'00000001,CCR JMP @TMRX240 TMRX2300 JMP @TIMEW_END TMRX230 CMP.B #D'60,R0L BLO TMRX213 CMP.B #D'100,R0L BHI TMRX213 ANDC #B'11111110,CCR TMRX240 MOV.B @REV09,R0L ROTXL.B R0L MOV.B R0L,@REV09 MOV.B @REV08,R0L ROTXL.B R0L MOV.B R0L,@REV08 MOV.B @REV07,R0L ROTXL.B R0L; MOV.B R0L,@REV07 MOV.B @REV06,R0L ROTXL.B R0L MOV.B R0L,@REV06 MOV.B @REV05,R0L ROTXL.B R0L MOV.B R0L,@REV05 MOV.B @REV04,R0L ROTXL.B R0L MOV.B R0L,@REV04 MOV.B @REV03,R0L ROTXL.B R0L MOV.B R0L,@REV03 MOV.B @REV02,R0L ROTXL.B R0L MOV.B R0L,@REV02 MOV.B @REV01,R0L ROTXL.B R0L MOV.B R0L,@REV01 MOV.B @REV00,R0L ROTXL.B R0L MOV.B R0L,@REV00 MOV.B @RECCNT,R0L ; CMP.B #D'40,R0L CMP.B #D'80,R0L BLO TMRX250 MOV.B #H'00,R1L MOV.W #H'FC10,R2 VERIFY2 MOV.B @R2,R1H ADD.B R1H,R1L INC.W #H'01,R2 MOV.L #H'FC19,ER3 CMP.W R3,R2 BNE VERIFY2 MOV.B @REV09,R1H CMP.B R1L,R1H BEQ VERIFY21 JMP @TMRX213 VERIFY21 BCLR F_SEND MOV.B #H'00,R1L MOV.B R1L,@TX_CNT MOV.L #H'FC10,ER2 MOV.L #H'FB80,ER1 PUT22 MOV.B @ER2+,R3L MOV.B R3L,@ER1 ADDS.L #H'01,ER1 MOV.L #H'FC1A,ER3 CMP.L ER3,ER2 BNE PUT22 VERIFY211 MOV.B @REV00,R2L AND.B #B'00000111,R2L CMP.B #B'00000110,R2L BNE VERIFY212 BTST ONLY_CO BNE VERIFY29 VERIFY212 BSET REC1_OK MOV.W #H'47A,R2 MOV.W R2,@HANDC VERIFY29 JMP @TMRX213 TMRX250 INC.B R0L MOV.B R0L,@RECCNT JMP @TIMEW_END TMRX300 BTST COMP BNE TMRX310 BTST BUZ BEQ TMRX301 MOV.W @TCNT,R0 ADD.W #H'115,R0 MOV.W R0,@GRB TMRX301 JMP @TIMEW_END TMRX310 BTST TRX_OK BNE TMRX320 MOV.B #B'10001000,R0L ; MOV.B R0L,@TIOR0 MOV.B #B'10001101,R0L ; MOV.B R0L,@TIOR1 BCLR #H'01,@TIERW BSET #H'02,@TIERW JMP @TIMEW_END TMRX320 MOV.W @TADDR,R2 CMP.W #H'FF28,R2 BEQ TMRX360 MOV.B @TRTCNT,R1L CMP.B #H'03,R1L BEQ TMRX350 MOV.B @TRTCNT,R1L CMP.B #H'02,R1L BEQ TMRX341 CMP.B #H'01,R1L BEQ TMRX330 MOV.B #B'10011000,R0L MOV.B R0L,@TIOR0 MOV.W @TCNT,R0 ADD.W #H'7500,R0 MOV.W R0,@GRB MOV.B #H'01,R1L MOV.B R1L,@TRTCNT JMP @TIMEW_END TMRX330 MOV.B #B'10101000,R0L ; MOV.B R0L,@TIOR0 MOV.W @TCNT,R0 ADD.W #H'1400,R0 MOV.W R0,@GRB MOV.B #H'02,R1L MOV.B R1L,@TRTCNT MOV.W @TADDR,R2 MOV.B @R2,R1L MOV.B R1L,@TXCODE JMP @TIMEW_END TMRX340 MOV.W @TADDR,R2 MOV.B @R2,R1L MOV.B R1L,@TXCODE TMRX341 MOV.B @BITCNT,R1L CMP.B #H'8,R1L BNE TMRX343 MOV.B #H'0,R1L MOV.B R1L,@BITCNT MOV.W @TADDR,R2 ADD.W #H'1,R2 MOV.W R2,@TADDR CMP.W #H'FF28,R2 BNE TMRX340 JMP @TMRX350 TMRX360 BCLR TRX_OK BSET F_TRX MOV.B #H'00,R1L MOV.B R1L,@BITCNT MOV.B R1L,@TRTCNT MOV.B R1L,@SEND_COU MOV.W #H'FF20,R1 MOV.W R1,@TADDR MOV.B #B'10001000,R0L ; MOV.B R0L,@TIOR0 MOV.B #B'10001101,R0L ; MOV.B R0L,@TIOR1 BCLR #H'01,@TIERW BSET #H'02,@TIERW JMP @TIMEW_END TMRX343 ADD.B #H'1,R1L MOV.B R1L,@BITCNT MOV.B @TXCODE,R1H SHAL.B R1H MOV.B R1H,@TXCODE BCS TC_ONE MOV.B #B'10011000,R0L MOV.B R0L,@TIOR0 MOV.W @TCNT,R0 ADD.W #H'3C00,R0 ;SEND '0' MOV.W R0,@GRB MOV.B #H'03,R1L MOV.B R1L,@TRTCNT JMP @TIMEW_END TC_ONE MOV.B #B'10011000,R0L MOV.B R0L,@TIOR0 MOV.W @TCNT,R0 ADD.W #H'1400,R0 ;SEND '1' MOV.W R0,@GRB MOV.B #H'03,R1L MOV.B R1L,@TRTCNT JMP @TIMEW_END TMRX350 MOV.B #B'10101000,R0L ; MOV.B R0L,@TIOR0 MOV.W @TCNT,R0 ADD.W #H'1400,R0 MOV.W R0,@GRB MOV.B #H'02,R1L MOV.B R1L,@TRTCNT JMP @TIMEW_END TIMEW_END POP.W R3 POP.W R2 POP.W R1 POP.W R0 RTE ;******************************************** ;* 手机码接收有效置位 * ;******************************************** LOAD MOV.B @DATA02,R1L AND.B #B'00001000,R1L CMP.B #B'00001000,R1L BEQ LOAD10 BTST #H'03,@REV0 BEQ LOAD11 BSET STEP_RES ;复位,膨胀阀回零 BCLR MOT_RES MOV.W #D'00,R1 MOV.W R1,@STEP_NOW MOV.B R1L,@STEP_PAI ; MOV.B @DATA03,R1L ; AND.B #B'01111111,R1L ; MOV.B R1L,@DATA03 LOAD00 BCLR ON_OFF MOV.B #H'00,R1L MOV.B R1L,@COUNT ; BCLR MIN30 BTST #H'05,@PDR7 BEQ LOAD01 BSET MIN3 LOAD01 BSET #H'07,@PDR8 BCLR #H'03,@REV0 JMP @LOAD11 LOAD10 BSET ON_OFF LOAD11 JSR @SLEEP_SET LDC #H'80,CCR ;中断关 NOP NOP MOV.L #H'FB82,ER2 MOV.L #H'FF19,ER1 LOAD2 MOV.B @ER2+,R3L MOV.B R3L,@-ER1 MOV.L #H'FB8B,ER3 CMP.L ER3,ER2 BNE LOAD2 LDC #H'00,CCR ;中断开 BTST #H'06,@REV5 BEQ LOAD_END BSET LOCK ;键盘锁定 RTS LOAD_END BCLR LOCK RTS ;******************************************** ;* 面板码接收有效置位 * ;******************************************** MLOAD MOV.B @DATA00,R1L AND.B #B'00001000,R1L CMP.B #B'00001000,R1L BEQ MLOAD10 BTST #H'03,@REV0 BEQ MLOAD11 BSET STEP_RES ;复位,膨胀阀回零 BCLR MOT_RES MOV.W #D'00,R1 MOV.W R1,@STEP_NOW MOV.B R1L,@STEP_PAI ; MOV.B @DATA01,R1L ; AND.B #B'01111111,R1L ; MOV.B R1L,@DATA01 MLOAD00 BCLR ON_OFF MOV.B #H'00,R1L MOV.B R1L,@COUNT BTST #H'05,@PDR7 BEQ MLOAD01 BSET MIN3 MLOAD01 BCLR #H'03,@REV0 JMP @MLOAD11 MLOAD10 BSET ON_OFF MLOAD11 LDC #H'80,CCR ;中断关 NOP NOP MOV.L #H'FB80,ER2 MOV.L #H'FF19,ER1 MLOAD2 MOV.B @ER2+,R3L MOV.B R3L,@-ER1 MOV.L #H'FB89,ER3 CMP.L ER3,ER2 BNE MLOAD2 LDC #H'00,CCR ;中断开 JSR @SEND RTS ;******************************************************** ;* 准备发送码 * ;******************************************************** SEND MOV.B @TEMP0,R1L MOV.B #D'20,R1H SUB.B R1H,R1L MOV.B R1L,@TRX0 ;设定温度 MOV.B @TEMP1,R1L MOV.B R1L,@TRX1 ;室内温度 MOV.B @REV0,R1L AND.B #B'00001111,R1L MOV.B @REV8,R1H AND.B #B'11110000,R1H ADD.B R1H,R1L MOV.B R1L,@TRX2 ;模式,风速 BTST FLASH BNE SEND01 BTST #H'07,@PDR8 BEQ SEND02 MOV.B #H'00,R1L JMP @SEND09 SEND01 MOV.B #H'80,R1L JMP @SEND09 SEND02 MOV.B #H'40,R1L JMP @SEND09 SEND09 BTST TEST BEQ SEND08 ADD.B #H'20,R1L SEND08 MOV.B #H'00,R1H BTST ERROR4 BNE SEND11 BTST ERROR3 BNE SEND12 BTST ERROR2 BNE SEND13 BTST ERROR1 BNE SEND14 JMP @SEND15 SEND11 MOV.B #H'01,R1H JMP @SEND15 SEND12 MOV.B #H'02,R1H JMP @SEND15 SEND13 MOV.B #H'03,R1H JMP @SEND15 SEND14 MOV.B #H'04,R1H JMP @SEND15 SEND15 ADD.B R1H,R1L ;故障 MOV.B R1L,@TRX3 BTST TEST_F ;缩时 BNE SEND2 BCLR #H'04,@TRX4 JMP @SEND3 SEND2 BSET #H'04,@TRX4 SEND3 BTST #H'07,@REV5 ;健康 ; BTST #H'00,@PDR8 BEQ SEND31 BCLR #H'05,@TRX4 JMP @SEND4 SEND31 BSET #H'05,@TRX4 SEND4 BTST DIAODIAN BEQ SEND41 BSET #H'03,@TRX4 JMP @SEND5 SEND41 BCLR #H'03,@TRX4 SEND5 BTST #H'07,@REV1 ;横摆 BNE SEND51 BCLR #H'01,@TRX4 JMP @SEND6 SEND51 BSET #H'01,@TRX4 SEND6 BTST #H'06,@REV1 ;竖摆 BNE SEND61 BCLR #H'02,@TRX4 JMP @SEND7 SEND61 BSET #H'02,@TRX4 SEND7 BTST #H'06,@REV7 BNE SEND71 BTST #H'02,@REV8 BNE SEND72 BCLR #H'06,@TRX4 BCLR #H'07,@TRX4 JMP @SEND8 SEND71 BSET #H'06,@TRX4 BCLR #H'07,@TRX4 JMP @SEND8 SEND72 BSET #H'07,@TRX4 BCLR #H'06,@TRX4 SEND8 BTST ONLY_CO BNE SEND81 BCLR #H'00,@TRX4 JMP @SEND82 SEND81 BSET #H'00,@TRX4 SEND82 MOV.B #H'00,R1L MOV.B R1L,@TRX5 MOV.B R1L,@TRX6 MOV.B @REV8,R1H AND.B #B'00000011,R1H ADD.B R1H,R1L MOV.B R1L,@TRX5 BTST TEST_RUN BNE SEND83 JMP @SEND84 SEND83 BSET #H'02,@TRX5 SEND84 BTST LOCK BNE SEND85 JMP @SEND86 SEND85 BSET #H'04,@TRX5 SEND86 MOV.B @REV7,R1L AND.B #B'10000000,R1L CMP.B #B'10000000,R1L BNE SEND87 JMP @SEND88 SEND87 BSET #H'03,@TRX5 SEND88 MOV.B #H'00,R1L MOV.W #H'FF20,R2 SEND99 MOV.B @R2,R1H ADD.B R1H,R1L INC.W #H'01,R2 MOV.L #H'FF27,ER3 CMP.W R3,R2 BNE SEND99 MOV.B R1L,@TRX7 MOV.W #H'FF20,R1 MOV.W R1,@TADDR BSET TRX_OK MOV.B #B'10101000,R0L ; MOV.B R0L,@TIOR0 MOV.B #B'10001000,R0L ; MOV.B R0L,@TIOR1 MOV.W @TCNT,R0 ADD.W #H'7500,R0 MOV.W R0,@GRB BSET #H'01,@TIERW BCLR #H'02,@TIERW RTS ;******************************************************** ;* * ;* 蜂鸣器波形 * ;* * ;******************************************************** TIMEV ; PUSH.W R1 ; PUSH.W R2 ;**** ; BLD #7,@TCSRV ; BCC TVCORA ; BCLR #7,@TCSRV ; MOV.B #H'48,R1L ; MOV.B R1L,@TCORA ; JMP @TVQE ;TVCORA ; BLD #6,@TCSRV ; BCC TVQE ; BCLR #6,@TCSRV ; MOV.B #H'24,R1L ; MOV.B R1L,@TCORB ; NOP ;TVQE ; POP.W R2 ; POP.W R1 RTE ;******************************************************** ;* * ;* 蜂鸣器响应子程序 * ;* * ;******************************************************** BUZZER BTST COMP BNE BUZZER_END BTST BUZ BNE BUZZER100 BCLR #H'01,@TIERW MOV.B #B'10001000,R0L ; MOV.B R0L,@TIOR0 RTS BUZZER100 MOV.B @BUZCNT,R1L INC.B R1L MOV.B R1L,@BUZCNT CMP.B #D'120,R1L BHS BUZZER110 BSET #H'01,@TIERW MOV.B #B'10111000,R0L ; MOV.B R0L,@TIOR0 ; CMP.B #H'02,R1L BHS BUZZER_END MOV.W @TCNT,R0 ADD.W #H'115,R0 MOV.W R0,@GRB JMP @BUZZER_END BUZZER110 BCLR #H'01,@TIERW MOV.B #B'10001000,R0L ; MOV.B R0L,@TIOR0 ; BCLR.B BUZ MOV.B #H'00,R1L MOV.B R1L,@BUZCNT JMP @BUZZER_END BUZZER_END RTS ;************************************************ ;* 读:初始上电 * ;************************************************ POWER ; PUSH.W R0 ; PUSH.W R1 PUSH.W R2 PUSH.W R3 PUSH.W R4 MOV.B #H'07,R0L MOV.B R0L,@PCR2 MOV.B #H'10,R1L SHLL.B R1L MOV.B R1L,@EADDR JSR @READ93 MOV.B @DATA_D,R1L BTST #H'00,R1L BEQ POWER9 BTST #H'01,R1L BEQ POWER9 BTST #H'02,R1L BEQ POWER9 BCLR DIAODIAN JMP @RWT_END POWER9 BSET DIAODIAN BTST ONLY_CO BNE POWER90 MOV.B R1L,@REV0 JMP @POWER91 POWER90 MOV.B R1L,R2L AND.B #B'00000111,R2L CMP.B #B'00000110,R2L BNE POWER901 BCLR #H'03,R1L BCLR #H'02,R1L BSET #H'01,R1L BCLR #H'00,R1L POWER901 MOV.B R1L,@REV0 POWER91 MOV.B #H'11,R1L SHLL.B R1L MOV.B R1L,@EADDR JSR @READ93 MOV.B @DATA_D,R1L AND.B #B'11000000,R1L MOV.B R1L,@REV1 MOV.B #H'12,R1L SHLL.B R1L MOV.B R1L,@EADDR JSR @READ93 MOV.B @DATA_D,R1L AND.B #B'11000000,R1L MOV.B R1L,@REV5 MOV.B #H'13,R1L SHLL.B R1L MOV.B R1L,@EADDR JSR @READ93 MOV.B @DATA_D,R1L AND.B #B'11000000,R1L BTST ONLY_CO BEQ POWER92 BSET #H'07,R1L POWER92 MOV.B R1L,@REV7 MOV.B #H'14,R1L SHLL.B R1L MOV.B R1L,@EADDR JSR @READ93 MOV.B @DATA_D,R1L AND.B #B'11110100,R1L MOV.B R1L,@REV8 RWT_END MOV.B #H'00,R0L MOV.B R0L,@PCR2 MOV.B #H'F8,R0L MOV.B R0L,@PDR2 POP.W R4 POP.W R3 POP.W R2 POP.W R1 POP.W R0 RTS ;************************************************ ;* 写EEPROM * ;************************************************ SAVEF MOV.B #H'07,R0L MOV.B R0L,@PCR2 MOV.B #H'10,R1L SHLL.B R1L MOV.B R1L,@EADDR MOV.B @REV0,R1L BTST #H'07,@REV4 BNE SAVEF0 BTST #H'07,@REV6 BNE SAVEF1 JMP @SAVEF2 SAVEF0 BSET #H'03,R1L JMP @SAVEF2 SAVEF1 BCLR #H'03,R1L SAVEF2 MOV.B R1L,@DATA_D JSR @WRITE93 MOV.B #H'11,R1L SHLL.B R1L MOV.B R1L,@EADDR MOV.B @REV1,R1L AND.B #B'11000000,R1L MOV.B R1L,@DATA_D JSR @WRITE93 MOV.B #H'12,R1L SHLL.B R1L MOV.B R1L,@EADDR MOV.B @REV5,R1L AND.B #B'11000000,R1L MOV.B R1L,@DATA_D JSR @WRITE93 MOV.B #H'13,R1L SHLL.B R1L MOV.B R1L,@EADDR MOV.B @REV7,R1L AND.B #B'11000000,R1L MOV.B R1L,@DATA_D JSR @WRITE93 MOV.B #H'14,R1L SHLL.B R1L MOV.B R1L,@EADDR MOV.B @REV8,R1L AND.B #B'11110100,R1L MOV.B R1L,@DATA_D JSR @WRITE93 SAV_END MOV.B #H'00,R0L MOV.B R0L,@PCR2 MOV.B #H'F8,R0L MOV.B R0L,@PDR2 RTS ;************************************************ ;* * ;* READ 93C46 * ;* * ;************************************************ READ93 BSET #H'00,@PCR2 BCLR.B #H'01,@PDR2 BSET.B #H'02,@PDR2 MOV.B #B'11000000,R4L MOV.B #H'03,R4H JSR @SHOUT ; SHIFT OUT ADDRESS, MSB FIRST. MOV.B @EADDR,R4L MOV.B #H'07,R4H JSR @SHOUT BCLR #H'00,@PCR2 READ080: JSR @SHIN MOV.B R5L,@DATA_D BSET #H'00,@PCR2 BCLR.B #H'02,@PDR2 BCLR.B #H'01,@PDR2 RTS ;************************************************ ;* * ;* DATA SHIFT OUT * ;* * ;************************************************ SHOUT: NOP EE50: BCLR.B #H'01,@PDR2 JSR @DELAY SHAL.B R4L BCC EE60 BSET.B #H'00,@PDR2 BRA EE70 EE60: BCLR.B #H'00,@PDR2 EE70: NOP BSET.B #H'01,@PDR2 JSR @DELAY DEC.B R4H BNE EE50 BCLR.B #H'01,@PDR2 RTS ;************************************************ ;* * ;* DATA SHIFT IN * ;* * ;************************************************ SHIN: BCLR.B #H'01,@PDR2 JSR @DELAY MOV.B #H'08,R4H SHIN30: BSET.B #H'01,@PDR2 JSR @DELAY NOP BTST.B #H'00,@PDR2 BEQ SHIN40 MOV.B #H'1,R5H BLD #H'0,R5H BRA SHIN50 SHIN40: MOV.B #H'0,R5H BLD #H'0,R5H SHIN50: BCLR.B #H'01,@PDR2 JSR @DELAY ROTXL.B R5L NOP DEC.B R4H BNE SHIN30 RTS ;**************************************************** ;* * ;* ENABLE WRITE * ;* * ;**************************************************** EWEN: ; Enable erase/write. ; Erase/write remains enabled until disabled with EWDS. ; Returns nothing. Destroys B, DPTR. BSET.B #H'02,@PDR2 JSR @DELAY ; Shift out start bit (1), op code (00) and 11. MOV.B #B'10011000,R4L MOV.B #H'0A,R4H JSR @SHOUT JSR @DELAY BCLR.B #H'02,@PDR2 JSR @DELAY RTS ;**************************************************** ;* * ;* DISABLE WRITE * ;* * ;**************************************************** EWDS: ; Disable erase/write. ; Returns nothing. Destroys B, DPTR. BSET.B #H'02,@PDR2 JSR @DELAY ; Shift out start bit (1), op code (00) and 00. MOV.B #B'10000000,R4L MOV.B #H'0A,R4H JSR @SHOUT JSR @DELAY BCLR.B #H'02,@PDR2 JSR @DELAY RTS ;**************************************************** ;* * ;* WRITE AT93C46 * ;* * ;**************************************************** WRITE93 BSET #H'00,@PCR2 JSR @EWEN BSET.B #H'02,@PDR2 JSR @DELAY MOV.B #B'10100000,R4L MOV.B #H'03,R4H JSR @SHOUT ; Shift out address, MSB first. JSR @DELAY MOV.B @EADDR,R4L MOV.B #H'07,R4H JSR @SHOUT L1: ; Shift out data, MSB first. MOV.B @DATA_D,R4L MOV.B #H'08,R4H JSR @SHOUT BCLR.B #H'02,@PDR2 JSR @DELAY BSET.B #H'02,@PDR2 BCLR #H'00,@PCR2 JSR @DELAY WREADY: ; BTST.B #H'00,@PDR2 ; BEQ WREADY JSR @DELAY1 BCLR.B #H'02,@PDR2 JSR @DELAY BSET #H'00,@PCR2 JSR @EWDS BCLR.B #H'00,@PDR2 BCLR.B #H'01,@PDR2 RTS ;----------------------------- ; ;************************************************ ;* * ;* DELAY SUB * ;* * ;************************************************ DELAY: MOV.B #H'5,R5H L098E: NOP DEC.B R5H BNE L098E RTS ;************************************************ ;* * ;* DELAY1 SUB(500微秒) * ;* * ;************************************************ DELAY1: MOV.W #H'271,R5 DEL500: NOP DEC.W #H'01,R5 BNE DEL500 RTS ;******室内管温温度表******************************** .SECTION CAN_AD,DATA,LOCATE=H'3000 .DATA.W H'E700 ;-20DU .DATA.W H'E601 .DATA.W H'E402 .DATA.W H'E303 .DATA.W H'E204 .DATA.W H'E005 .DATA.W H'DF06 .DATA.W H'DD07 .DATA.W H'DB08 .DATA.W H'DA09 .DATA.W H'D80A ;-10 DU .DATA.W H'D60B .DATA.W H'D40C .DATA.W H'D20D .DATA.W H'D00E .DATA.W H'CE0F .DATA.W H'CC10 .DATA.W H'CA11 .DATA.W H'C812 .DATA.W H'C513 .DATA.W H'C300 ;0 DU .DATA.W H'C101 .DATA.W H'BE02 .DATA.W H'BC03 .DATA.W H'B904 .DATA.W H'B705 .DATA.W H'B406 .DATA.W H'B107 .DATA.W H'AF08 .DATA.W H'AC09 .DATA.W H'A90A ;10 DU .DATA.W H'A70B .DATA.W H'A40C .DATA.W H'A10D .DATA.W H'9E0E .DATA.W H'9B0F .DATA.W H'9910 .DATA.W H'9611 .DATA.W H'9312 .DATA.W H'9013 .DATA.W H'8D14 ;20 DU .DATA.W H'8A15 .DATA.W H'8716 .DATA.W H'8517 .DATA.W H'8218 .DATA.W H'7F19 .DATA.W H'7C1A .DATA.W H'791B .DATA.W H'771C .DATA.W H'741D .DATA.W H'711E ;30 DU .DATA.W H'6F1F .DATA.W H'6C20 .DATA.W H'6921 .DATA.W H'6722 .DATA.W H'6423 .DATA.W H'6224 .DATA.W H'5F25 .DATA.W H'5D26 .DATA.W H'5A27 .DATA.W H'5828 ;40 DU .DATA.W H'5629 .DATA.W H'532A .DATA.W H'512B .DATA.W H'4F2C .DATA.W H'4D2D .DATA.W H'4B2E .DATA.W H'492F .DATA.W H'4730 .DATA.W H'4531 .DATA.W H'4332 ;50 DU .DATA.W H'4133 .DATA.W H'3F34 .DATA.W H'3D35 .DATA.W H'3C36 .DATA.W H'3A37 .DATA.W H'3838 .DATA.W H'3739 .DATA.W H'353A .DATA.W H'343B .DATA.W H'323C ;60 DU .DATA.W H'313D .DATA.W H'2F3E .DATA.W H'2E3F .DATA.W H'2C40 .DATA.W H'2B41 .DATA.W H'2A42 .DATA.W H'2943 .DATA.W H'2844 .DATA.W H'2645 .DATA.W H'2546 ;70 DU .DATA.W H'2447 .DATA.W H'2348 .DATA.W H'2249 .DATA.W H'214A .DATA.W H'204B .DATA.W H'1F4C .DATA.W H'1E4D .DATA.W H'1D4E .DATA.W H'1D4F .DATA.W H'1C50 ;80 DU .DATA.W H'1064 ;100 DU ;********************************* ;***************STEP MOTRO*********************** ;* 电子膨胀阀驱动表(PORT8口高4位) * ;************************************************ .SECTION MOTORRUN,DATA,LOCATE=H'2FF0 .DATA.B H'01 .DATA.B H'09 .DATA.B H'08 .DATA.B H'0C .DATA.B H'04 .DATA.B H'06 .DATA.B H'02 .DATA.B H'03 .DATA.B H'01 ;励磁 .DATA.B H'01 ;励磁 ;***************************************************** .SECTION MOTORRUN1,DATA,LOCATE=H'2EF0 .DATA.B H'10 ;励磁 .DATA.B H'30 ;高四位用于摆页 PORT5.4-7 .DATA.B H'20 .DATA.B H'60 .DATA.B H'40 .DATA.B H'C0 .DATA.B H'80 .DATA.B H'90 .DATA.B H'10 ;励磁 .DATA.B H'10 ;励磁 ;***************************************************** .END