📄 fz_jfxdg290.asm
字号:
GOON_LED_2:
MOV A,CTIME
JMP GOON_LEDGO1
GOON_LED_1:
MOV A,ATIME
JMP GOON_LEDGO1
GOON_LEDGO1:
ADD Z,A ;加偏移量
MOVC
MOV V1,A
MOV A,R
MOV V2,A
MOV A,V2
MOV G1,A
CALL RUN164
BSET P2.2
JMP OUT_LED
GOON_LED1:
INCMS U1
MOV A,V1
MOV G1,A
CALL RUN164
BSET P2.1
JMP OUT_LED
GOON_LED2:
INCMS U1
BTS1 BFTIME ;检测是否过了2秒
JMP GOON_LED2_2
MOV A,#0FFH
BTS1 BHEAT
JMP GOON_LED2_A
AND A,#8FH
GOON_LED2_A:
BTS1 BO2
JMP GOON_LED2_B1
AND A,#73H
JMP GOON_LED2_B
GOON_LED2_B1:
BTS1 BFAN
JMP GOON_LED2_B
AND A,#73H
GOON_LED2_B:
MOV J1,A
MOV A,#0FFH
BTS1 BHEAT
JMP GOON_LED2_Z
AND A,#0CFH ;034IRIEROIGGF
JMP GOON_LED2_V
GOON_LED2_Z:
OR A,#8FH
GOON_LED2_V:
BTS1 BO2
JMP GOON_LED2_D
AND A,#7BH
JMP GOON_LED2_S
GOON_LED2_D:
BTS1 BFAN
JMP GOON_LED2_C
AND A,#7BH
JMP GOON_LED2_S
GOON_LED2_C:
; AND A,#73H
GOON_LED2_S:
MOV J2,A
CALL RUNLED
BTS1 BDIDIDI
JMP GOON_LED2_1
MOV J3,A
BTS1 P0.3 ;P1.1
JMP NEXT_DOOR
BTS1 BOPD2
JMP NEXT_DOOR
BCLR J3.6
MOV A,J3
; JMP GOON_LED2_1
NEXT_DOOR:
BTS1 P0.2;//!P0.2
JMP GOON_LED2_1
BTS1 BOPD1
JMP GOON_LED2_1
BCLR J3.3
MOV A,J3
JMP GOON_LED2_1
GOON_LED2_2:
MOV A,#0FFH
BTS1 BHEAT
JMP GOON_LED2_E
AND A,#8FH
GOON_LED2_E:
BTS1 BO2
JMP GOON_LED2_F1
AND A,#73H
JMP GOON_LED2_F
GOON_LED2_F1:
BTS1 BFAN
JMP GOON_LED2_F
AND A,#73H
JMP GOON_LED2_F
GOON_LED2_F:
GOON_LED2_1:
MOV G1,A
CALL RUN164
BSET P2.3
JMP OUT_LED
GOON_LED3:
INCMS U1
BTS0 BPOWLEDOFF
JMP OUT_LED
BTS1 BFTIME ;检测是否过了2秒
JMP GOON_LED3_2
MOV A,#0FFH
BTS1 BAUTOKEY60
JMP GOON_LED3_A
AND A,#8CH
GOON_LED3_A:
BTS1 BPOWERKEY
JMP GOON_LED3_B
AND A,#0F0H
GOON_LED3_B:
MOV J1,A
BTS0 BCLEARKEY
JMP LEDOOO
BTS0 BDRYKEY
JMP LEDOOO
BTS0 BHEATKEY
JMP LEDOOO
JMP LEDOOO1
LEDOOO:
BTS1 BPOWERKEY
JMP LEDOOO1
AND A,#0F0H
JMP GOON_LED3_D
LEDOOO1:
MOV A,#0FFH
BTS1 BAUTOKEY60
JMP GOON_LED3_C
AND A,#0CFH
JMP GOON_LED3_Z
GOON_LED3_C:
AND A,#8FH
GOON_LED3_Z:
BTS1 BPOWERKEY
JMP GOON_LED3_D
AND A,#0F0H
GOON_LED3_D:
MOV J2,A
CALL RUNLED
JMP GOON_LED3_1
GOON_LED3_2:
MOV A,#0FFH
BTS1 BPOWERKEY
JMP GOON_LED3_A1
AND A,#0F3H
GOON_LED3_A1:
BTS1 BAUTOKEY60
JMP GOON_LED3_B1
AND A,#8CH
JMP GOON_LED3_1
GOON_LED3_B1:
BTS0 BCLEARKEY
JMP GOON_LED3_1_A
BTS0 BDRYKEY
JMP GOON_LED3_1_A
BTS0 BHEATKEY
JMP GOON_LED3_1_A
JMP GOON_LED3_1
GOON_LED3_1_A:
MOV A,#0FFH
AND A,#0F0H ;**********************************************
GOON_LED3_1:
MOV G1,A
CALL RUN164
BSET P2.0
JMP OUT_LED
GOON_LED5:
CLR U1
BTS1 BFTIME ;检测是否过了2秒
JMP OUT_LED
INCMS L2
MOV A,#40D
CMPRS A,L2
JMP OUT_LED1
CLR L2
INCMS L6
MOV A,#05D
CMPRS A,L6
JMP OUT_LED1
CLR L6
OUT_LED1:
MOV A,L6
ADD PCL,A
JMP LED_A
JMP LED_B
JMP LED_C
JMP LED_D
JMP LED_E
LED_A:
MOV A,#11111110B
JMP LED_ABCD
LED_B:
MOV A,#11111100B
JMP LED_ABCD
LED_C:
MOV A,#10011100B
JMP LED_ABCD
LED_D:
MOV A,#10000000B
JMP LED_ABCD
LED_E:
MOV A,#11111111B
LED_ABCD:
MOV G1,A
CALL RUN164
BSET P2.4
BSET P5.6
OUT_LED:
RET
;=============LED显示程序完成
;============LED子程序1
RUNLED:
INCMS L3
MOV A,#50D
CMPRS A,L3
JMP GOON_LED4_1B
DECMS L3
INCMS L4
MOV A,#50D
CMPRS A,L4
JMP GOON_LED4_1C
CLR L4
CLR L3
GOON_LED4_1B:
MOV A,J1
RET
GOON_LED4_1C:
MOV A,J2
RET
;============LED子程序1
;=============LED子程序
RUN164:
BTS1 G1.0
BCLR P5.1;//?P5.1
BTS1 G1.1
BCLR P4.1;//?P4.1
BTS1 G1.2
BCLR P4.6;//?P4.6
BTS1 G1.3
BCLR P4.4;//?P4.4
BTS1 G1.4
BCLR P5.2;//?P5.2
BTS1 G1.5
BCLR P5.3;//?P5.3
BTS1 G1.6
BCLR P5.4;//?P5.4
BTS1 G1.7
BCLR P5.0;//?P5.0
BTS0 G1.0
BSET P5.1;//?P5.1
BTS0 G1.1
BSET P4.1;//?P4.1
BTS0 G1.2
BSET P4.6;//?P4.6
BTS0 G1.3
BSET P4.4;//?P4.4
BTS0 G1.4
BSET P5.2;//?P5.2
BTS0 G1.5
BSET P5.3;//?P5.3
BTS0 G1.6
BSET P5.4;//?P5.4
BTS0 G1.7
BSET P5.0;//?P5.0
RET
;=============LED子程序
;==============工作程序
WORK:
BTS0 BDIDIDI
JMP OUT_WORK
BTS1 TIME_100MSF
JMP OUT_WORK
BTS1 B2S
JMP OUT_WORK
;************停2S程序
INCMS S1
MOV A,#40D
CMPRS A,S1
JMP OUT_WORK
DECMS S1 ;两秒已经过去,条过年停两秒程序
;************停2S程序
;**********一分钟子程序
BSET BFTIME
INCMS W1
MOV A,#190D ;20S
CMPRS A,W1
JMP OUT_WORK
CLR W1
INCMS W2
MOV A,#3D ;1MIN
CMPRS A,W2
JMP OUT_WORK
CLR W2
;**********一分钟子程序
WORK1:
BTS1 BAUTOKEY60
JMP CLEAN_WORK
;************臭氧消毒工作30MIN
BTS0 BO2OVER1
JMP WORK_HEAT
BSET BO2 ;开臭氧标志
BSET BHEAT
MOV A,ATIME
SUB A,#30D
MOV ATIME,A
DECMS ATIME
JMP AUTO_WORK
BSET BO2OVER1 ;臭氧工作完毕
AUTO_WORK:
MOV A,#30D
ADD ATIME,A ;加番30D
JMP OUT_WORK
;************臭氧消毒工作30MIN
;*************风机工作30MIN
WORK_HEAT:
BCLR BO2 ;时间够了关臭氧标志
BCLR BHEAT ;开消毒标志
BSET BFAN ;开风机标志
DECMS ATIME
JMP OUT_WORK
WORK_HEAT_1:
BCLR BO2
BCLR BFAN
BCLR BHEAT
BSET BDONE ;工作完毕
; BSET BOFF
; BSET BOFF1
JMP OUT_WORK
;*************风机工作30MIN
CLEAN_WORK:
BTS1 BCLEARKEY
JMP CLEAN_WORK1
;*************臭氧工作(CTIME-20)MIN{CTIME为用户设定}
BTS0 BO2OVER
JMP CLEAN_WORK_1
BSET BO2
MOV A,CTIME
SUB A,#20D
MOV CTIME,A ;CTIME减20MIN就是臭氧工作的时间
DECMS CTIME
JMP O2_1
BSET BO2OVER
O2_1:
MOV A,#20D
ADD CTIME,A ;加番20以便下次减
JMP OUT_WORK
;*************臭氧工作(CTIME-20)MIN{CTIME为用户设定}
;************风机工作20MIN
CLEAN_WORK_1:
BCLR BO2
BSET BFAN
DECMS CTIME
JMP OUT_WORK
BCLR BFAN
BSET BDONE ;工作完毕
; BSET BOFF1
; BSET BOFF
JMP OUT_WORK
;************风机工作20MIN
CLEAN_WORK1:
BTS1 BDRYKEY
JMP CLEAN_WORK2
;*************风机工作CTIME1 MIN (CTIME1为用户设定)
BSET BFAN
DECMS CTIME1
JMP OUT_WORK
BCLR BFAN
BSET BDONE ;工作完毕
; BSET BOFF1
; BSET BOFF
JMP OUT_WORK
;*************风机工作CTIME1 MIN (CTIME1为用户设定)
CLEAN_WORK2:
BTS1 BHEATKEY
JMP OUT_WORK
;*************风机工作CTIME1 MIN (CTIME1为用户设定)
BSET BHEAT
DECMS CTIME2
JMP OUT_WORK
BCLR BHEAT
BSET BDONE ;工作完毕
; BSET BOFF1
; BSET BOFF
JMP OUT_WORK
;*************风机工作CTIME1 MIN (CTIME1为用户设定)
OUT_WORK:
RET
;============工作程序完成
;=============继电器程序
JDQ:
BTS1 TIME_100MSF
JMP OUT_JDQ
BTS1 BFTIME
JMP OUT_JDQ ;两秒标志后才能启动
BTS1 BHEAT
BCLR BOPD2
BTS1 BO2
BCLR BOPD1
BTS1 BFAN
BCLR BOPD1
BTS0 BHEAT
BSET BOPD2
BTS0 BO2
BSET BOPD1
BTS0 BFAN
BSET BOPD1 ;检测上门或下门工作程序
BTS0 BDIDIDI
JMP OUT_JDQ
JDQ_1:
; BTS1 BOPD1
; JMP NEXT_JDQ1
; BCLR BHEAT
NEXT_JDQ1:
; BTS1 BOPD2
; JMP NEXT_JDQ2
; BCLR BFAN
; BCLR BO2
NEXT_JDQ2:
BTS0 BOFF
JMP CLEAR_ALL
BTS0 BDONE
JMP CLEAR_ALL
; BTS0 BOPD1
; JMP JDQ_JDQ
BTS0 BO2
BSET P4.3
BTS0 BFAN
BSET P4.0 ;P1.0
BTS1 BO2
BCLR P4.3
BTS1 BFAN
BCLR P4.0 ;P1.0
BTS0 BHEAT
BSET P4.2
BTS1 BHEAT
BCLR P4.2
JMP OUT_JDQ
CLEAR_ALL:
BCLR P4.3
BCLR P4.2
BCLR P4.0 ;P1.0
OUT_JDQ:
RET
;=============继电器程序完成
;============测试程序
CHECK:
BTS0 BCHECK
JMP OUT_CHECK
BTS1 TIME_10MSF
JMP OUT_CHECK
BCLR P2.0
BCLR P2.1
BCLR P2.2
BCLR P2.3
BCLR P2.4
BCLR P5.6
MOV A,C1
ADD PCL,A
JMP CHECKA_1
JMP CHECKA_2
JMP CHECKA_3
JMP CHECKA_4
JMP CHECKA_5
JMP CHECKA_6
JMP CHECKA_7
JMP CHECKA_8
JMP CHECKA_9
CHECKA_1:
MOV A,#08FH
MOV G1,A
CALL RUN164
BSET P2.3
JMP CHECKA_0
CHECKA_2:
MOV A,#073H
MOV G1,A
CALL RUN164
BSET P2.3
JMP CHECKA_0
CHECKA_3:
MOV A,#10000000B
MOV G1,A
CALL RUN164
BSET P2.4
JMP CHECKA_0
CHECKA_4:
MOV A,#10000000B
MOV G1,A
CALL RUN164
BSET P2.2
JMP CHECKA_0
CHECKA_5:
MOV A,#10000000B
MOV G1,A
CALL RUN164
BSET P2.1
JMP CHECKA_0
CHECKA_6:
MOV A,#0FCH
MOV G1,A
CALL RUN164
BSET P2.0
JMP CHECKA_0
CHECKA_7:
MOV A,#10000000B
MOV G1,A
CALL RUN164
BSET P5.6
JMP CHECKA_0
CHECKA_8:
MOV A,#8FH
MOV G1,A
CALL RUN164
BSET P2.0
JMP CHECKA_0
CHECKA_9:
MOV A,#0F3H
MOV G1,A
CALL RUN164
BSET P2.0
CHECKA_0:
INCMS C2
MOV A,#50D
CMPRS A,C2
JMP OUT_CHECK
CLR C2
INCMS C1
MOV A,#9D
CMPRS A,C1
JMP OUT_CHECK
CLR C1
INCMS C3
MOV A,#2D
CMPRS A,C3
JMP OUT_CHECK
BSET BCHECK
CLR C3
OUT_CHECK:
RET
;============测试程序完成
;===========检测保险门程序
FUSE:
BTS1 TIME_10MSF
JMP OUT_FUSE
BTS1 BFTIME
JMP OUT_FUSE
FUSEPPP:
BTS1 P0.3 ;检测下门P1.1
JMP NEXT_FUSE2
BTS1 BHEAT
JMP NEXT_FUSE2
BSET BGOTO1
BSET BHEATF
BCLR P4.2
BSET BDIDIDI
JMP NEXT_FUSE2A
NEXT_FUSE2:
BCLR BDIDIDI
BTS1 BGOTO1
JMP NEXT_FUSE2A
BCLR BGOTO1
BTS0 BHEATF
BSET P4.2
BTS1 BHEATF
BCLR P4.2
NEXT_FUSE2A:
BTS1 P0.2;//!P0.2
JMP NEXT_FUSE3
BTS1 BO2
JMP NEXT_FUSE4
BSET BGOTO2
BSET BO2F
BCLR P4.3
BSET BDIDIDI
NEXT_FUSE4:
BTS1 BFAN
JMP OUT_FUSE
BSET BGOTO2
BSET BFANF
BCLR P4.0
BSET BDIDIDI
JMP OUT_FUSE
NEXT_FUSE3:
BTS1 BGOTO2
JMP OUT_FUSE
BCLR BGOTO2
BTS1 BO2F
BCLR P4.3
BTS1 BO2F
JMP OPIU
BTS1 BFAN
BSET P4.3
OPIU:
BTS1 BFANF
BCLR P4.0 ;P1.0
BTS0 BFANF
BSET P4.0 ;P1.0
OUT_FUSE:
BTS1 BDIDIDI
JMP OUT_FUSE1
BTS1 BAUTOKEY60
JMP OUT_FUSE1
BTS0 P0.3 ;P1.1
JMP NEXT_OUT_FUSE
BTS1 BHEAT
BCLR P4.2
BTS0 BHEAT
BSET P4.2
NEXT_OUT_FUSE:
BTS0 P0.2;//!P0.2
JMP OUT_FUSE1
BTS1 BO2
BCLR P4.3
BTS0 BO2
BSET P4.3
BTS1 BFAN
BCLR P4.0 ;P1.0
BTS0 BFAN
BSET P4.0 ;P1.0
OUT_FUSE1:
RET
;===========检测保险门程序完成
START:
; ========================脚位初始化
MOV A,#00000000B
B0MOV DAM,A
MOV A,#11111111B
MOV P2M,A
MOV A,#11111111B
MOV P5M,A
MOV A,#11011111B
MOV P4M,A
MOV A,#00100000B
MOV P4CON,A ;P4.5,做AD输入
MOV A,#00000111B
MOV P0UR,A
;========================脚位初始化完成
B0BCLR FDAENB
BSET P4.4;//?P4.4
BSET P4.6;//?P4.6
BSET P5.3;//?P5.3
BSET P5.4;//?P5.4
BSET P5.2;//?P5.2
BSET P5.0;//?P5.0
BSET P5.1;//?P5.1
BSET P4.1
;BSET P5.1;//?P5.1
;BSET P4.7
;NOP
;BCLR P5.1;//?P5.1
;BCLR P4.7
;NOP
BCLR P2.4
BCLR P2.3
BCLR P2.2
BCLR P2.1
BCLR P2.0
BCLR P5.6
/*BSET P2.2
BCLR P4.4;//?P4.4
BCLR P4.6;//?P4.6
BCLR P5.3;//?P5.3
BCLR P5.4;//?P5.4
BCLR P5.2;//?P5.2
BCLR P5.0;//?P5.0
BCLR P4.4;
BCLR P5.1;//?P5.1*/
;BTS1 P0.1
;;NOP
;BTS1 P0.0
;NOP
;NOP
;BTS1 P0.1
;BSET P4.7
/*MOV A,#0FCH
;MOV A,#73H
;AND A,#8FH
MOV G1,A
CALL RUN164
BSET P2.0
NOP*/
;B0SET FADS
; B0BSET FADENB
; NOP
; NOP
; NOP
; NOP
; NOP
;BSET P2.4
;BSET P2.3
;BSET P2.2
/*BSET P2.1
;BSET P2.0
;BSET P5.6
NOP
BCLR P4.4;//?P4.4
BCLR P4.6;//?P4.6
BCLR P5.3;//?P5.3
BCLR P5.4;//?P5.4
BCLR P5.2;//?P5.2
BCLR P5.0;//?P5.0
BCLR P4.1;//?P4.1
BCLR P5.1;//?P5.1
*/
;NOP
;MOV A,#00000011B
;B0MOV DAM,A
;B0BSET FDAENB
;NOP
;======================测试
;======================测试完成
;=========================清除所有内存
CLR_RAM:
MOV A, #0
B0MOV Y, A ; Y = 1, bank 1
MOV A, #07FH
B0MOV Z, A ; Y = 7FH, 最后的内存地址
CLR_YZ_BUF:
@RST_WDT ;清看门狗
CLR @YZ ; 清@YZ
DECMS Z ; Y – 1, if Y= 0, finish the routine
JMP CLR_YZ_BUF ; Not zero
CLR @YZ
END_CLR:
;================;清除所有内存完成
;MOV A,#00000111B
;MOV STKP,A ;清堆栈
BSET B2DI
;================;设定定时器
MOV A,#11110000B ;两分频,计时器开始
MOV TC0M,A
BSET FGIE ;开全中断
BCLR FTC0IRQ ;先清t0中断标志
BSET FTC0IEN ;开t0中断
MOV A,TIME_REACH ;计时器初值,0.125ms的初值
MOV TC0C,A
;================;设定定时器完成
;MOV A,#10H
;MOV G1,A
;CALL RUN164
;BCLR P4.6;//?P4.6
;NOP
ON_MACHINE:
BCLR TIME_2MSF
BTS1 TIME_2MS
JMP OUT_SET_2MSF
BCLR TIME_2MS
BSET TIME_2MSF ;由计时断处知道2MS标志再设定下面程序用的2MS标志
OUT_SET_2MSF:
BCLR TIME_10MSF
BTS1 TIME_10MS
JMP OUT_SET_10MSF
BCLR TIME_10MS
BSET TIME_10MSF ;由计时断处知道10MS标志再设定下面程序用的10MS标志
OUT_SET_10MSF:
BCLR TIME_100MSF
BTS1 TIME_100MS
JMP OUT_SET_100MSF
BCLR TIME_100MS
BSET TIME_100MSF ;由计时断处知道100MS标志再设定下面程序用的100MS标志
OUT_SET_100MSF:
CALL CHECK ;检测程序
CALL BUZ ;蜂鸣器程序
BTS1 BCHECK
JMP ON_MACHINE
CALL READKEY ;读键程序
CALL READTIMEKEY ;读数码时间键
CALL WORK ;工作程序
CALL FUSE ;检测程序
CALL JDQ ;继电器程序
CALL LED ;LED显示程序
JMP ON_MACHINE ;跳到开机
ORG 066AH
TAB1:
DW 8484H
DW 84BDH
DW 84C8H
DW 8498H
DW 84B1H
DW 8492H
DW 8482H
DW 84BCH
DW 8480H
DW 8490H
DW 0BD84H
DW 0BDBDH
DW 0BDC8H
DW 0BD98H
DW 0BDB1H
DW 0BD92H
DW 0BD82H
DW 0BDBCH
DW 0BD80H
DW 0BD90H
DW 0C884H
DW 0C8BDH
DW 0C8C8H
DW 0C898H
DW 0C8B1H
DW 0C892H
DW 0C882H
DW 0C8BCH
DW 0C880H
DW 0C890H
DW 9884H
DW 98BDH
DW 98C8H
DW 9898H
DW 98B1H
DW 9892H
DW 9882H
DW 98BCH
DW 9880H
DW 9890H
DW 0B184H
DW 0B1BDH
DW 0B1C8H
DW 0B198H
DW 0B1B1H
DW 0B192H
DW 0B182H
DW 0B1BCH
DW 0B180H
DW 0B190H
DW 9284H
DW 92BDH
DW 92C8H
DW 9298H
DW 92B1H
DW 9292H
DW 9282H
DW 92BCH
DW 9280H
DW 9290H
DW 8284H
DW 82BDH
DW 82C8H
DW 8298H
DW 82B1H
DW 8292H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -