📄 ad convert.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
MOV @R0,#10H
INC R0
MOV DPTR,#0FEF3H ;A/D地址
MOV A,#0 ;清零
MOVX @DPTR,A ;启动A/D
JNB P3.3,$ ;等待转换结果
MOVX A,@DPTR ;读入结果
MOV P1,A ;转换结果送入发光二极管
MOV B,A ;累加器内容存入B中
SWAP A ;A的内容高四位与低四位交换
ANL A,#0FH ;A的内容高四位清零
XCHD A,@R0 ;A/D转换结果高四位送入DBUF3
INC R0
MOV A,B ;取出A/D转换后的结果
ANL A,#0FH ;A的内容高四位清零
XCHD A,@R0 ;结果低位送入DBF4中
ACALL DISP1 ;串行静态显示“AD XX”
ACALL DELAY ;延时
AJMP START
DISP1: MOV R0,#DBUF0 ;静态显示子程序
MOV R1,#TEMP+4
MOV R2,#5
DP10: MOV DPTR,#SEGTAB ;表头地址
MOV A,@R0
MOVC A,@A+DPTR ;取段码
MOV @R1,A ;到TEMP中
INC R0
DEC R1
DJNZ R2,DP10
MOV R0,#TEMP ;段码地址指针
MOV R1,#5 ;段码字节数
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,6,5BH,4FH,66H,6DH
DB 7DH,7,7FH,6FH,77H,7CH
DB 58H,5EH,79H,71H,0,40H
DELAY: MOV R4,#0AFH
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 + -