📄 主程序.asm
字号:
AD_WR EQU P3.2 ;AD0804启动命令
AD_OUT_L EQU P3.7 ;AD0804低四位数据输出控制端
AD_OUT_H EQU P3.1 ;AD0804高四位数据输出控制端
;----------------------------------------------
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:
LCALL ADC_demo
AJMP MAIN
;---------------ADC0804转换显示----------------
ADC_demo:
LCALL ADC_START
LCALL ADC_READ
LCALL CPU_DO
RET
;---------------ADC0804启动--------------------
ADC_START:
CLR AD_WR
LCALL D1MS
RET
;---------------ADC0804读开始------------------
ADC_READ:
SETB AD_WR ;ADC0804读启动
LCALL D1MS
CLR AD_OUT_L ;读低四位数据
NOP
MOV R1,P1 ;存放单片机从ADC读取的低四位数据
NOP
SETB AD_OUT_L
LCALL D1MS
NOP
CLR AD_OUT_H ;读高四位数据
NOP
MOV R3,P1 ;存放单片机从ADC读取的高四位数据
NOP
SETB AD_OUT_H
RET
;---------------数据处理显示------------------
CPU_DO:
MOV A,R1 ;低四位处理
ANL A,#0FH
MOV R1,A
MOV A,R3 ;高四位处理
ANL A,#0FH
SWAP A
ORL A,R1
L1:
CLR C
MOV R5,#00H ;十进制转换后的低位寄存器
MOV R4,#00H ;十进制转换后的高位寄存器
MOV R0,#08H ;十进制转换次数
NEXT:
RLC A ;十进制转换
MOV R2,A
MOV A,R5
ADDC A,R5
DA A
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R2
DJNZ R0,NEXT ;循环
L2:
MOV A,R5
ADD A,R5
DA A
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
;---------------显示子程序---------------------
DISP:
MOV A,R4
ANL A,#0FH
CLR P3.3 ;左显示
MOV DPTR,#TAB0
MOVC A,@A+DPTR
MOV P1,A
LCALL D1MS
LCALL D1MS
MOV A,R5
ANL A,#0F0H
SWAP A
SETB P3.3 ;左结束
CLR P3.4 ;中显示
MOV DPTR,#TAB1
MOVC A,@A+DPTR
MOV P1,A
LCALL D1MS
LCALL D1MS
MOV A,R5
ANL A,#0FH
SETB P3.4 ;中结束
CLR P3.5 ;右显示
MOV DPTR,#TAB0
MOVC A,@A+DPTR
MOV P1,A
LCALL D1MS
LCALL D1MS
SETB P3.5 ;右结束
RET
;---------------延时子程序---------------------
D1MS:
MOV R7,#80 ;延时1MS
DJNZ R7,$
RET
;7段数码管0~9数字的共阴显示代码
;无小数点
TAB0: DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H
;有小数点
TAB1: DB 0FDH,61H,0DBH,0F3H,67H,0B7H,0BFH,0E1H,0FFH,0F7H
; 0 1 2 3 4 5 6 7 8 9
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -