📄 333l.asm
字号:
JNB FREQ.6,PULSE5J
JNB FREQ.7,PULSE1J
JMP RETT0
;***************************************
;***************************************
PULSE1:
JNB PUL.0,PULSE10
DJNZ R1,RETT0
MOV R1,#01
CLR PUL.0
JMP RETT0
PULSE10:
DJNZ R2,RETT0
MOV R2,#10
SETB PUL.0
JMP RETT0
;***************************************
PULSE2:
JNB PUL.0,PULSE20
DJNZ R1,RETT0
MOV R1,#20
CLR PUL.0
JMP RETT0
PULSE20:
DJNZ R2,RETT0
MOV R2,#03
SETB PUL.0
JMP RETT0
;***************************************
PULSE3:
JNB PUL.0,PULSE30
DJNZ R1,RETT0
MOV R1,#02
CLR PUL.0
JMP RETT0
PULSE30:
DJNZ R2,RETT0
MOV R2,#02
SETB PUL.0
JMP RETT0
;***************************************
PULSE4:
JNB PUL.0,PULSE40
DJNZ R1,RETT0
MOV R1,#05
CLR PUL.0
JMP RETT0
PULSE40:
DJNZ R2,RETT0
MOV R2,#05
SETB PUL.0
JMP RETT0
;**************************************
RETT0:
MOV TH0,#03CH
MOV TL0,#0B0H
POP PSW
POP ACC
RETI
;***************************************
PULSE5:
JNB PUL.0,PULSE50
DJNZ R1,RETT0
MOV R1,#10
CLR PUL.0
JMP RETT0
PULSE50:
DJNZ R2,RETT0
MOV R2,#10
SETB PUL.0
JMP RETT0
;***************************************
PULSE6:
JNB PUL.0,PULSE60
DJNZ R1,RETT0
MOV R1,#10
CLR PUL.0
JMP RETT0
PULSE60:
DJNZ R2,RETT0
MOV R2,#01
SETB PUL.0
JMP RETT0
;***************************************
PULSE7:
JNB PUL.0,PULSE70
DJNZ R1,RETT0
MOV R1,#20
CLR PUL.0
JMP RETT0
PULSE70:
DJNZ R2,RETT0
MOV R2,#01
SETB PUL.0
JMP RETT0
;********************************************************************
; P1 P2 P3 P4 LED CONT
;********************************************************************
T1INT:
PUSH ACC
PUSH PSW
JNB DBUF1.0,D_P1
JNB DBUF1.1,D_P21
JNB DBUF1.2,D_P22
JNB DBUF1.3,D_P23A
JNB DBUF1.4,D_P31A
JNB DBUF1.5,D_P32A
JNB DBUF1.6,D_P33A
JNB DBUF1.7,D_P41A
JNB DBUF2.0,D_P42A
JNB DBUF2.1,D_P43A
JNB DBUF2.2,D_P44A
JMP RETT1
D_P23A:
JMP D_P23
D_P31A:
JMP D_P31
D_P32A:
JMP D_P32
D_P33A:
JMP D_P33
D_P41A:
JMP D_P41
D_P42A:
JMP D_P42
D_P43A:
JMP D_P43
D_P44A:
JMP D_P44
;************************************** P1 状态显示(只有1种状态)
D_P1:
MOV P2,#0FFH
JB DISP.0,ON_P1
JMP OFF_P1
ON_P1:
DJNZ SEC3,RETT1
MOV SEC3,#15
CLR P2.3
CLR DISP.0
OFF_P1:
DJNZ SEC4,RETT1
MOV SEC4,#05
SETB P2.3
SETB DISP.0
JMP RETT1
;************************************** P2状态的第1种显示
D_P21:
MOV P2,#0FFH
JB DISP.0,ON_P21
JMP OFF_P21
ON_P21:
DJNZ SEC3,RETT1
MOV SEC3,#15
CLR P2.4 ;闪1下
CLR DISP.0
OFF_P21:
DJNZ SEC4,RETT1
MOV SEC4,#05
SETB P2.4
SETB DISP.0
JMP RETT1
;************************************** P2状态的第2种显示
D_P22:
MOV P2,#0FFH
JB DISP.0,ON_P22
JMP OFF_P22
ON_P22:
DJNZ SEC4,RETT1
MOV SEC4,#05
CPL P2.4
DJNZ SEC5,RETT1
MOV SEC5,#03 ;闪2下
SETB P2.4
CLR DISP.0
JMP RETT1
OFF_P22:
DJNZ SEC3,RETT1
MOV SEC3,#15
SETB P2.4
SETB DISP.0
JMP RETT1
;**************************************
RETT1:
MOV TH1,#03CH
MOV TL1,#0B0H
POP PSW
POP ACC
RETI
;************************************** P2的第3种状态
D_P23:
MOV P2,#0FFH
JB DISP.0,ON_P23
JMP OFF_P23
ON_P23:
DJNZ SEC4,RETT1
MOV SEC4,#05
CPL P2.4
DJNZ SEC5,RETT1
MOV SEC5,#04 ;闪3下
SETB P2.4
CLR DISP.0
JMP RETT1
OFF_P23:
DJNZ SEC3,RETT1
MOV SEC3,#15
SETB P2.4
SETB DISP.0
JMP RETT1
;************************************** P3状态的第1种显示
D_P31:
MOV P2,#0FFH
JB DISP.0,ON_P31
JMP OFF_P31
ON_P31:
DJNZ SEC3,RETT1
MOV SEC3,#15
CLR P2.5 ;闪1下
CLR DISP.0
OFF_P31:
DJNZ SEC4,RETT1
MOV SEC4,#05
SETB P2.5
SETB DISP.0
JMP RETT1
;************************************** P3状态的第2种显示
D_P32:
MOV P2,#0FFH
JB DISP.0,ON_P32
JMP OFF_P22
ON_P32:
DJNZ SEC4,RETT1
MOV SEC4,#05
CPL P2.5
DJNZ SEC5,RETT1
MOV SEC5,#03 ;闪2下
SETB P2.5
CLR DISP.0
JMP RETT1
OFF_P32:
DJNZ SEC3,RETT1
MOV SEC3,#15
SETB P2.5
SETB DISP.0
JMP RETT1
;************************************** P3的第3种状态
D_P33:
MOV P2,#0FFH
JB DISP.0,ON_P33
JMP OFF_P33
ON_P33:
DJNZ SEC4,RETT10
MOV SEC4,#05
CPL P2.5
DJNZ SEC5,RETT10
MOV SEC5,#04 ;闪3下
SETB P2.5
CLR DISP.0
JMP RETT1
OFF_P33:
DJNZ SEC3,RETT10
MOV SEC3,#15
SETB P2.5
SETB DISP.0
JMP RETT1
;**************************************
RETT10:
JMP RETT1
;************************************** P4状态的第1种显示
D_P41:
MOV P2,#0FFH
JB DISP.0,ON_P41
JMP OFF_P41
ON_P41:
DJNZ SEC3,RETT10
MOV SEC3,#15
CLR P2.6 ;闪1下
CLR DISP.0
OFF_P41:
DJNZ SEC4,RETT10
MOV SEC4,#05
SETB P2.6
SETB DISP.0
JMP RETT1
;************************************** P4状态的第2种显示
D_P42:
MOV P2,#0FFH
JB DISP.0,ON_P42
JMP OFF_P42
ON_P42:
DJNZ SEC4,RETT10
MOV SEC4,#05
CPL P2.6
DJNZ SEC5,RETT10
MOV SEC5,#03 ;闪2下
SETB P2.6
CLR DISP.0
JMP RETT1
OFF_P42:
DJNZ SEC3,RETT10
MOV SEC3,#15
SETB P2.6
SETB DISP.0
JMP RETT1
;************************************** P4的第3种状态
D_P43:
MOV P2,#0FFH
JB DISP.0,ON_P43
JMP OFF_P43
ON_P43:
DJNZ SEC4,RETT10
MOV SEC4,#05
CPL P2.6
DJNZ SEC5,RETT10
MOV SEC5,#04 ;闪3下
SETB P2.6
CLR DISP.0
JMP RETT1
OFF_P43:
DJNZ SEC3,RETT10
MOV SEC3,#15
SETB P2.6
SETB DISP.0
JMP RETT1
;************************************** P4的第4种状态
D_P44:
MOV P2,#0FFH
JB DISP.0,ON_P44
JMP OFF_P44
ON_P44:
DJNZ SEC4,RETT100
MOV SEC4,#05
CPL P2.6
DJNZ SEC5,RETT100
MOV SEC5,#05 ;闪4下
SETB P2.6
CLR DISP.0
JMP RETT1
OFF_P44:
DJNZ SEC3,RETT100
MOV SEC3,#15
SETB P2.6
SETB DISP.0
JMP RETT1
;**************************************
RETT100:
JMP RETT1
;********************************************************************
; 系统时间,控制T0,T1内容
;********************************************************************
T2INT:
PUSH ACC
PUSH PSW
CLR T2CON.7
JNB SWITCH,START_TIME ;SWITCH-P3.4
JMP STOP_TIME ;如果时间为00,则不计时
START_TIME:
CLR SYS.1
DJNZ SEC1,RETT2
MOV SEC1,#10 ;500MS
DJNZ SEC2,RETT2
MOV SEC2,#06 ;3SEC
MOV A,FREQ
RL A
MOV FREQ,A
;CPL LED2.4
DJNZ SEC30,RETT2 ;30SEC
MOV SEC30,#10
CALL SPK_DEL1 ;蜂鸣器叫1声
DJNZ SEC40,RETT2 ;1MIN
MOV SEC40,#02
DJNZ MIN,DISP_MIN ;系统时间减1
MOV LED1,#00100001B ;0
MOV LED2,#00010100B ;0
JMP STOP
;**************************************
RETT2:
POP PSW
POP ACC
RETI
;======================================
DISP_MIN:
CALL ADJMIN
JMP RETT2
STOP_TIME:
SETB LED2.4
SETB SYS.1
JMP RETT2
;************************************** 蜂鸣器响5下后退中断出
STOP:
MOV R5,#05
BUZZ:
CLR SPK
CALL SPK_DEL
SETB SPK
CALL SPK_DEL
DJNZ R5,BUZZ
CLR SYS.0 ;标志位
JMP RETT2
;====================================== 蜂鸣器叫声延时
SPK_DEL:
MOV R4,#40
SPK_D:
CALL DISPLAY
DJNZ R4,SPK_D
RET
;********************************************************************
; MAN PROGRAM
;********************************************************************
RESET:
MOV SP,#50H
CLR IE.7 ;关掉所有中断
MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#0FFH
MOV P3,#11111110B
LOOP:
CLR P2.2
MOV LED1,#00100001B ;0
MOV LED2,#00010100B ;0
CALL BAOJING ;报警
JNB SWITCH,LOOP ;SWITCH-P3.4
SETB P2.2 ;ERROR LED
SETB SPK
LOOP1:
MOV SYS,#0FFH
MOV DBUF1,#11111110B ;默认P1
MOV DBUF2,#0FFH
MOV KEY4,#0FFH
MOV KEY5,#0FFH
MOV KEY6,#0FFH
MOV DISP,#0FFH
MOV DEL_LED,#0FFH
MOV PUL,#00H
MOV CHANG,#0FFH
MOV BOXING,#0FEH
MOV FREQ,#0FEH
MOV ZHUT,#0FEH
MOV TMOD,#00010001B
MOV TCON,#01010000B
MOV T2MOD,#00H
MOV T2CON,#00000100B
MOV IE,#10101010B
MOV TH0,#03CH
MOV TL0,#0B0H
MOV TH1,#03CH
MOV TL1,#0B0H
MOV TH2,#03CH
MOV TL2,#0B0H
MOV RCAP2H,#03CH
MOV RCAP2L,#0B0H
MOV SEC1,#10 ;T2 USE 500MS
MOV SEC2,#06 ;3SEC
MOV SEC30,#10 ;T2 USE 30SEC
MOV SEC40,#02 ;1MIN
MOV SEC3,#15 ;T1 USE
MOV SEC4,#05 ;T1 USE
;MOV SEC5,#01 ;T0 USE
;MOV SEC6,#95 ;T0 USE OUT PULSE
MOV CON1,#10
MOV R1,#05
MOV MIN,#15
MOV LED1,#01111101B ;1 十位数
MOV LED2,#00110001B ;5 个位数
MAN:
CALL DISPLAY
CALL KEYSCAN
JB PUL.0,PULSE
CLR P3.0
JB SYS.0,MAN
JMP RESET
;************************************** P3.0 PULSE OUT
PULSE:
SETB P3.0
CALL DELAY
CLR P3.0
CALL DELAY
CALL DELAY
CALL DELAY
CALL DELAY
JMP MAN
;************************************** 开机时如各电位器开关没关则报警
BAOJING:
CLR SPK
CALL DISPLAY
CALL DISPLAY
CALL DISPLAY
CALL DISPLAY
CALL DISPLAY
CALL DISPLAY
SETB SPK
CALL DISPLAY
CALL DISPLAY
CALL DISPLAY
CALL DISPLAY
CALL DISPLAY
CALL DISPLAY
CLR SPK
CALL DISPLAY
CALL DISPLAY
CALL DISPLAY
CALL DISPLAY
CALL DISPLAY
CALL DISPLAY
SETB SPK
MOV R1,#150
BAOJ:
CALL DISPLAY
DJNZ R1,BAOJ
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -