📄 洗衣机.asm
字号:
//主程序
TIMERM EQU 79H
TIMERS EQU 7AH
ORG 0000
LJMP MAIN
ORG 0003
LJMP SINT0
ORG 000BH
LJMP SINT1
ORG 001BH
LJMP ST1
DISLAB:
DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
MAIN:
CLR F
MOV 70H,#0
MOV 71H,#3
MOV 72H,#30
MOV 73H,#5
MOV 75H,#0
MOV 76H,#1
MOV 79H,#0
MOV 7AH,#0
CLR P1.0
CLR P1.1
CLR P1.2
CLR P3.4
CLR P3.5
MOV P0,#0
MOV P2,#0
CLR P3.0
CLR P3.1
MOV TMOD,#11
MOV TH0,#3CH
MOV TH1,#OB0H
MOV TL0,#3CH
MOV TL1,#OB0H
SETB IT0
SETB IT1
SETB EA
SETB EX0
MLAB1:
JNB F,$
MOV A,72H
MOV B,71H
DIV AB
MOV 74H,A
MOV R2,71H
LAB2:
SETB P3.0
CLR F
SETB EX1
JNB F,$
CLR P3.0
SETB P1.0
SETB TR0
JB TR0,$
SETB P3.1
CLR F
JNB F,$
CLR P3.1
DJNZ R2,LAB2
CLR P1.1
SETB P1.0
SETB TR1
JB TR1,$
CLR P1.0
MOV R2,#5
ALARM:
SETB P1.2
MOV R3,#0
DELAY1:
NOP
DJNZ R3,DELAY1
CLR P1.2
DELAY2:
NOP
DJNZ R3,DELAY2
DJNZ R1,ALARM
CLR F
LJMP MLAB1
//外中断0的服务程序
SITNT0:
SETB P3.5
CLR P3.4
MOV A,P3
ANL A,#0C0H
ORL A,#20H
INTLAB1:
CJNE A,#0A0H,INTLAB3
INC 76H
MOV R0,76H
CJNE @R0,#5,INTLAB2
MOV 76H,#1
INTLAB2:
CJNE 76H,#1,INTLAB21
CLR P1.3
SETB P1.4
CLR P1.5
RETI
INTLAB21:
CJNE 76H,#1,INTLAB22
SETB P1.3
CLR P1.4
CLR P1.5
MOV R1,71H
LCALL DISPLAY
RETI
INTLAB22:
CJNE 76H,#3,INTLAB23
SETB P1.3
CLR P1.4
SETB P1.5
MOV R1,72H
LCALL DISPLAY
RETI
INTLAB23:
CJNE 76H,#1,INTLAB22
SETB P1.3
SETB P1.4
CLR P1.5
MOV R1,73H
LCALL DISPLAY
RETI
INTLAB3:
CJNE A,#6,INTLAB4
CJNE 76H,#1,INTLAB31
XRL 70H,#0FFH
CLR P1.5
RETI
INTLAB31:
CJNE 76H,#2,INTLAB32
MOV A,#1
ADD A,71H
DA A
MOV R1,71H
LCALL DISPLAY
RETI
INTLAB32:
CJNE 76H,#3,INTLAB33
MOV A,#1
ADD A,72H
DA A
MOV R1,72H
LCALL DISPLAY
RETI
INTLAB33:
MOV A,#1
ADD A,73H
DA A
MOV R1,73H
LCALL DISPLAY
RETI
INTLAB4:
CJNE A,#8,INTLAB5
CJNE 76H,#1,INTLAB41
XRL 70H,#0FFH
CLR P1.5
RETI
INTLAB41:
CJNE 76H,#2,INTLAB42
MOV A,#99H
ADD A,71H
DA A
MOV R1,71H
LCALL DISPLAY
RETI
INTLAB42:
CJNE 76H,#3,INTLAB43
MOV A,#99H
ADD A,72H
DA A
MOV R1,72H
LCALL DISPLAY
RETI
INTLAB43:
MOV A,#99H
ADD A,73H
DA A
MOV R1,73H
LCALL DISPLAY
RETI
INTLAB5:
SETB F
RETI
//外中断1的服务程序
SINT1:
SETB F
RETI
//定时器0服务程序
ST0:
MOV TH0,#3CH
MOV TL0,#0B0H
INC TIMERS
CJNE TIMERS,#10,T0LAB1
MOV TIMERS,#0
INC TIMERS
CJNE TIMERS,#60,T0LAB
MOV TIMERS,#0
MOV A,#99H
ADD A,72H
DA A
MOV R1,#72H
LACLL DISPLAY
CJNE 70H,#1,T0LAB2
JNB P1.0,T0LAB21
CLR P1.0
SETB P1.1
LJMP T0LAB22
T0LAB21:
SETB P1.0
CLR P1.1
T0LAB22:
INC 75H
MOV A,75H,T0LAB1
CLR TR0
T0LAB1:
RETI
//定时器1服务程序
ST1:
MOV TH1,#3CH
MOV TL1,#0B0DH
INC TIMERS
CJNE TIMERS,#10,T0LAB1
MOV TIMERS,#0
INC TIMERS
CJNE TIMERS,#60,T0LAB1
MOV TIMERS,#0
MOV A,#99H
ADD A,73H
DA A
MOV R1,#73H
LACLL DISPLAY
MOV A,73H
JNZ T1LAB1
CLR TR1
T1LAB1:
RETI
DISPLAY:
MOV A,R1
SWAP A
ANL A,#0FH
MOV DPTR,#DISLAB
MOVC A,@A+DPTR
MOV P0,A
MOV A,R1
MOV A,#OFH
MOVC A,@A+DPTR
MOV P2,A
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -