📄 草稿1.asm
字号:
YS1 EQU 4FH
YS2 EQU 5FH
DY3 EQU 4EH
DY4 EQU 5EH
RS EQU P3.7
RW EQU P3.6
E EQU P3.5
ORG 0000H
AJMP START
ORG 0003H
AJMP INT0
ORG 000BH
AJMP T0
ORG 0013H
AJMP INT1
ORG 001BH
AJMP T1
;===============初始化程序====================
START:
;MOV 37H,#10
;MOV 36H,#10
; MOV 35H,#10
MOV 34H,#00
MOV 33H,#10 ;实际温度的小数点
MOV 32H,#00
MOV 31H,#00
MOV 30H,#00
MOV SP, #60H
MOV TMOD, #11H ;T0,T1设为定时模式1工作
MOV TH0, #3CH
MOV TL0, #0AFH ;设定时器0中断周期为50毫秒
MOV R7, #00H ;用于保存50ms数 ,控制工作周期为1秒
MOV 40H, #01H
MOV 48H, #00H
MOV R4,#7fH ;R4作显示地址缓冲
SETB RS
SETB RW
SETB E
MOV R0,#34H
SETB EA
SETB ET1
SETB ET0 ;溢出中断允许
SETB IT0 ;外部中断0的中断方式为边沿触发方式
SETB IT1 ;外部中断1的中断方式为边沿触发方式
CLR TR1 ;初始化关闭定时器1
CLR TR0 ;初始化关闭定时器0
MOV P1,#38H;8位点阵方式
ACALL ENABLE
MOV P1,#0FH;开显示
ACALL ENABLE
MOV R4,#080H ;显示字符串"COL: "
MOV P1,R4
CALL ENABLE
MOV DPTR,#TABLE1
CALL WRITE1
;===============
MOV R4,#085H
MOV P1,R4
CALL ENABLE
MOV DPTR,#TABLE4 ;??????????
MOV R1,#30H
GO1:CALL WRITE3 ;显示温度
INC R1
MOV A,R1
CJNE A,#35H,GO1
MOV R4,#0C0H
MOV P1,R4
CALL ENABLE
MOV DPTR,#TABLE2
CALL WRITE1 ;显示字符串"SET: "
LJMP MAIN
;================外部中断0程序==============
INT0:
RETI
;================定时器0中断程序=============
T0: PUSH A
INC R7
MOV TH0, #3CH
MOV TL0, #0AFH
CJNE R7,#10 ,QQ
LJMP YI_MIAO
QQ:LJMP OVER
YI_MIAO: MOV R7,#00H
;MOV A,R2
; CLR C
;SUBB A,#8
;MOV R2,A ;减2048
MOV R6,#00H
MOV A,R3
BI_JIAO :CJNE A,#64H,PAN_DUAN
XIANG_DENG:CLR C
SUBB A,#64H
INC R6
MOV R3,A
LJMP BI_JIAO
PAN_DUAN:JC XIAO_YU
JNC DA_YU
XIAO_YU:
MOV A,R2
CJNE A,#00H,JIE_WEI
LJMP DI_WEI
JIE_WEI:MOV A,#0FFH
DEC R2
CLR C
SUBB A,#64H
ADD A,R3
INC A
INC R6
MOV R3,A
LJMP BI_JIAO
DA_YU: CLR C
SUBB A,#64H
INC R6
MOV R3,A
LJMP BI_JIAO
DI_WEI: MOV A,R3
MOV B,#10
DIV AB
MOV 3AH,A
MOV 3BH,B
GAO_WEI:MOV A,R6
MOV B,#10
DIV AB
MOV 5AH,A
MOV 5BH,B
; 5AH 5BH 3AH 3BH 为实际的十进制数
; - 2 0 4 8
;----------------------
; * * * * 000 精确到十毫伏
;
;****000/2048=实际温度
; 3FH,3EH,3DH,3CH
; *, ** , *0, 00
; / 20, 48
;-------------------------------
MOV 3CH,#00 ;;;;;;;;;;
MOV A,3BH
MOV B,#10
MUL AB
MOV 3DH,A
MOV A,5BH
MOV B,#10
MUL AB
ADD A,3AH
MOV 3EH,A
MOV 3FH,5AH
;**********************************************************************************
MOV R6,#00H
MOV 30H,#00H
MOV 31H,#00H
MOV 32H,#00H ;设置初始值
MOV 34H,#00H ;此处用于保存2048的个数
DI_WEI1:
MOV A,R6
CJNE A,#100,QI_YU
INC 31H
MOV R6,#00H
MOV A,31H
CJNE A,#10 ,DD
MOV 30H,#01H
MOV 31H,#00H
MOV 32H,#00H
MOV 34H,#00H
LJMP DI_WEI2
DD:
MOV 31H,A
LJMP DI_WEI2
QI_YU:MOV B,#10
DIV AB
MOV 32H,A
MOV 34H,B
DI_WEI2:MOV A,3CH
CJNE A,#48,DI_UNEQU ;判断低位是否等于48
CLR C
SUBB A,#48
MOV 3CH,A
GAO_WEI1:MOV A,3DH
CJNE A,#20,GAO_UNEQU ;判断高位是否等于20
CLR C
SUBB A,#20
INC R6
MOV 3DH,A
LJMP DI_WEI1
DI_UNEQU:JC DI_S ;低位小于48
JNC DI_L ;低位大于48
DI_S:MOV A,3DH
CJNE A,#00H,GAO_2
MOV A,3EH
CJNE A,#00H,ZH_2
MOV A,3FH
CJNE A,#00H,SH_2
MOV A,48H
CJNE A,#01H,QQ1
LJMP BIJIAO_WENDU
QQ1:LJMP OVER
GAO_2: DEC 3DH
JIAN_48:MOV A,#100 ;低位小于48程序
CLR C
SUBB A,#48
ADD A,3CH
MOV 3CH,A
LJMP GAO_WEI1
ZH_2:DEC 3EH
MOV 3DH,#99
LJMP JIAN_48
SH_2:DEC 3FH
MOV 3EH,#99
MOV 3DH,#99
LJMP JIAN_48
DI_L:CLR C ;低位大于48程序
SUBB A,#48
MOV 3CH,A
LJMP GAO_WEI1
GAO_UNEQU:JC GAO_S ;高位小于20
JNC GAO_L ;高位大于20
GAO_S:MOV A,3EH ;高位小于20程序
CJNE A,#00H,ZH_1 ;判断中位是否为0
MOV A,3FH
CJNE A,#00H,SH_1 ;判断上位是否为0
MOV A,48H
CJNE A,#01H,QQ2
LJMP BIJIAO_WENDU
QQ2:LJMP OVER ;计算完毕
ZH_1:MOV A,#100 ;中位不为0,向中位借位
DEC 3EH
CLR C
SUBB A,#20
ADD A,3DH
INC R6
MOV 3DH,A
LJMP DI_WEI1
SH_1:DEC 3FH ;中位为0,但上位不为0,向上位借位
MOV 3EH,#99
MOV A,#100
CLR C
SUBB A ,#20
ADD A,3DH
INC R6
MOV 3DH,A
LJMP DI_WEI1
GAO_L:CLR C ;高位大于20程序
SUBB A,#20
MOV 3DH,A
INC R6
LJMP DI_WEI1
;===============到此12位数据处理完毕===============
;===============以下为比较温度=====================
BIJIAO_WENDU: MOV A,30H
MOV B,#100
MUL AB
MOV R2,A
MOV A,31H
MOV B,#10
MUL AB
ADD A,R2
MOV R2,A
ADD A,32H
MOV R2,A ;实际温度整合完毕
MOV A,35H
MOV B,#100
MUL AB
MOV R3,A
MOV A,36H
MOV B,#10
MUL AB
ADD A,R3
MOV R3,A
ADD A,37H
MOV R3,A ;设定温度整合完毕
CLR C
SUBB A,#10
MOV 41H,A
ADD A,#5
MOV 42H,A
ADD A,#4
MOV 43H,A ;阀值温度设定完毕
MOV A,R2
CJNE A,41H,WEN1_UNEQU
LJMP BO_2
WEN1_UNEQU:JC WEN1_XIAO
JNC WEN1_DA
WEN1_XIAO: LJMP BO_QUAN
WEN1_DA: CJNE A,42H,WEN2_UNEQU
LJMP BO_4
WEN2_UNEQU:JC WEN2_XIAO
JNC WEN2_DA
WEN2_XIAO: LJMP BO_2
WEN2_DA: CJNE A,43H,WEN3_UNEQU
LJMP BO_8
WEN3_UNEQU:JC WEN3_XIAO
JNC WEN3_DA
WEN3_XIAO: LJMP BO_4
WEN3_DA: MOV 45H,R3
CJNE A,45H,WEN4_UNEQU
LJMP BO_0
WEN4_UNEQU:JC WEN4_XIAO
JNC WEN4_DA
WEN4_XIAO: LJMP BO_8
WEN4_DA: ; LJMP BO_0
BO_0: CLR EX1
CLR TR1
SETB P3.0
LJMP OVER
BO_QUAN: CLR EX1
CLR TR1
CLR P3.0
LJMP OVER
BO_2:
MOV 46H,#0ECH
MOV 47H,#77H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -