📄 adc0809.asm
字号:
DBUF0 EQU 30H
TEMP EQU 40H
DIN BIT 0B0H
CLK BIT 0B1H
ORG 0000H
START: MOV R0,#DBUF0 ;显示缓冲器存放0AH,0DH,-,0XH,0XH
MOV @R0,#0AH ;串行静态显示"AD XX"XX表示0~F
INC R0
MOV @R0,#0DH
INC R0
CLR P2^2
MOV DPTR,#0AFFFH ;A/D地址
CLR P2^4
MOV A,#0 ;清零
MOVX @DPTR,A ;启动A/D
CLR P2^2
JNB P3^3,$ ;等待转换结束
MOVX A,@DPTR ;读入结果
MOV B,A ;累加器内容存入B中
SWAP A ;A的内容高四位与低四位交换
ANL A,#0FH ;A的内容高四位清零
XCHD A,@R0 ;A/D转换结果高位送入DBUF1中
INC R0
MOV A,B ;取出A/D转换后的结果
ANL A,#0FH ;A的内容高四位清零
XCHD A,@R0 ;结果低位送入DBUF2中
ACALL DISP1 ;串行静态显示" XXX"
ACALL DELAY ;延时
AJMP START
DISP1: ;静态显示子程序
MOV R0,#DBUF0
MOV R1,#TEMP
MOV R2,#4
DP10: MOV DPTR,#SEGTAB ;表头地址
MOV A,@R0
MOVC A,@A+DPTR ;取段码
MOV @R1,A ;到TEMP中
INC R0
INC R1
DJNZ R2,DP10
MOV R0,#TEMP ;段码地址指针
MOV R1,#4 ;段码字节数
DP12: MOV R2,#8 ;移位次数
MOV A,@R0 ;取段码
DP13: RLC A ;段码左移
MOV DIN,C ;输出一位段码
CLR CLK ;发送一个位移脉冲
SETB CLK
DJNZ R2,DP13
INC R0
DJNZ R1,DP12
RET
SEGTAB:
DB 3FH,06H,5BH,4FH,66H,6DH ;0,1,2,3,4,5
DB 7DH,07H,7FH,6FH,77H,7CH ;6,7,8,9,A,b
DB 58H,5EH,79H,71H,0H,40H ;C,d,E,F,(空格),-
DELAY: ;延时
MOV R4,#08H
AA1: MOV R5,#0FFH
AA: NOP
NOP
NOP
DJNZ R5,AA
DJNZ R4,AA1
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -