📄 ha.asm
字号:
COM EQU 50H
DAT EQU 51H
RS EQU P2.1
RW EQU P2.2
E EQU P2.3
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP BT0
ORG 0030H
MAIN: MOV SP,#60H
LCALL INT
MOV 30H,#30H
MOV 31H,#0A5H;小数点
MOV 32H,#30H
MOV 33H,#30H
MOV 34H,#30H
MOV R7,#30H
LCALL N1
;*************************定时器初始化*******************************************
MOV TMOD,#00H;T0方式0
MOV TH0,#00H ;初值0
MOV TL0,#00H
SETB TR0 ;开始计数
MOV 35H,#05H;中断次数
MOV IE,#82H ;开中断
;********************************************************************************
LP:;MOV R7,#30H ;显示
LCALL DISPLY
SJMP LP
;***********************转换为显示数据*******************************************
BT0:
PUSH ACC
PUSH PSW
mov psw,#18h
CLR TR0 ;新计数
MOV TH0,#00H
MOV TL0,#00H
DEC 35H ;是否中断够次数
MOV A,35H
JNZ EXIT ;判断是否中断够五次
MOV 35H,#05H ;重新装入初值次数
MOV DPTR,#0f6ffH
MOV A,#00H ;转换0通道
MOVX @DPTR,A ;启动AD
MOV R3,#40H ;等待
DJNZ R3,$
MOVX A,@DPTR ;读取转换结果
MOV B,#5 ;个位A*5/256
MUL AB
MOV 30H,B
MOV B,#10 ;小数点后第一位(余数*10)
MUL AB
MOV 32H,B
MOV B,#10 ;小数点后第二位(余数*10)
MUL AB
MOV 33H,B
MOV A,30H ;转换成显示码
ADD A,#30H
MOV 30H,A
MOV A,32H ;转换成显示码
ADD A,#30H
MOV 32H,A
MOV A,33H ;转换成显示码
ADD A,#30H
MOV 33H,A
MOV 31H,#0A5H
MOV 34H,#30H
EXIT: SETB TR0
POP PSW
POP ACC
RETI
;**********************************************************************************
DISPLY:
MOV COM,#0CAH
LCALL PR1
MOV R1,#05H
MOV R0,#30H
L: MOV DAT,@R0
LCALL PR2
INC R0
DJNZ R1,L
RET
TAB2:DB"XG1041 JIANGMINGLIANG"
N1:MOV COM,#01H
LCALL PR1
MOV COM,#06H
LCALL PR1
MOV COM,#0C0H
LCALL PR1
MOV DPTR,#TAB1
MOV R2,#10H
MOV R3,#00H
WRIN1:
MOV A,R3
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
INC R3
DJNZ R2,WRIN1
MOV COM,#06H
LCALL PR1
MOV COM,#080H
LCALL PR1
MOV DPTR,#TAB2
MOV R2,#10H
MOV A,R3
WRIN2:
MOV A,R4
MOVC A,@A+DPTR
MOV DAT,A
LCALL PR2
INC R4
DJNZ R2,WRIN2
RET
TAB1:DB"Voltage="
INT:
LCALL DELAY
MOV COM,#38H
LCALL PR1
MOV COM,#01H
LCALL PR1
MOV COM,#06H
LCALL PR1
MOV COM,#0EH
LCALL PR1
RET
DELAY:MOV R6,#0FH
MOV R7,#00H
DELAY1:NOP
DJNZ R7,DELAY1
DJNZ R6,DELAY1
RET
PR0:
PUSH ACC
MOV P0,#0FFH
CLR RS
SETB RW
SETB E
LCALL DELAY
MOV COM,P0
CLR E
POP ACC
RET
PR1:PUSH ACC
CLR RS
SETB RW
PR11:MOV P0,#0FFH
SETB E
LCALL DELAY
NOP
MOV A,P0
CLR E
JB ACC.7,PR11
CLR RW
MOV P0,COM
SETB E
CLR E
POP ACC
RET
PR2:PUSH ACC
CLR RS
SETB RW
PR21:MOV P0,#0FFH
SETB E
LCALL DELAY
MOV A,P0
CLR E
JB ACC.7,PR21
SETB RS
CLR RW
MOV P0,DAT
SETB E
;CLR RS
CLR E
POP ACC
RET
PR3:PUSH ACC
CLR RS
SETB RW
PR31:MOV P0,#0FFH
SETB E
LCALL DELAY
MOV A,P0
CLR E
JB ACC.7,PR31
SETB RS
SETB RW
MOV P0,#0FFH
SETB E
MOV DAT,P0
CLR E
POP ACC
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -