显示“输出8路顺序控制信号,每路顺序控制信号为一位且均为0-5V范围”程序如下:;===================A/D转换实验========================ORG05A0HSE11:MOVSP,#53H;堆栈指针附初值,3...
显示“输出8路顺序控制信号,每路顺序控制信号为一位且均为0-5V范围”程序如下:
;=================== A/D转换实验 ========================
ORG 05A0H
SE11: MOV SP,#53H ;堆栈指针附初值,30H后,高端
MOV 7EH,#0CH ;显示左括号
MOV 7DH,#00H ;显示
MOV 7CH,#00H ; 通道号
MOV 7BH,#11H ;显示右括号
MOV 7AH,#10H ;显示
MOV 79H,#10H ; 实际电压值 ;显示缓冲区初值
MOV R2,#00H
MOV R3,#0FFH
LO18: CALL DIS ;显示
;MOV A,#00H ;通道选择
MOV 7CH,R2
MOV DPTR,#0FFE0H ;0898芯片地址
MOV A,R2
MOVX @DPTR,A ;0809的0通道采样
;CALL DIS;SSEE
MOVX A,@DPTR ;取出采样值
;mov dptr,#0ffe4h ;new add --> 138 Y1
;cpl a ;new add
;movx @dptr,a ;new add --> 驱动发光二极管
;cpl a ;new add
MOV R0,#7AH
CALL PTDS ;采样值送显示缓冲区
DEC R3
CJNE R3,#00H,LO18
INC R2
CJNE R2,#08H,LO19
MOV R2,#00H
LO19: MOV R3,#0FFH
SJMP LO18 ;循环
;---------------------------十六进制转化为十进制
PTDS: MOV B,#33H
DIV AB
ADD A,#12H
MOV @R0,A
MOV A,#0AH
MUL AB ;余数*10,B高字节,A低字节
MOV R1,B
CJNE R1,#00H,DZJ ;等于0顺序执行,不等于0跳转
MOV B,#33H ;乘以10后高字节为0,正常操作
DIV AB
DEC R0
MOV @R0,A
RET
DZJ: ADD A,#01H ;乘以10后高字节为1,(低8位+1)/51,得到的整数部分+5
MOV B,#33H
DIV AB
ADD A,#05H
DEC R0
MOV @R0,A
RET
;---------------------------
DIS: PUSH DPH
PUSH DPL
SETB RS1 ;第二工作寄存器,
MOV R0,#7EH ;缓冲区地址
MOV R2,#20H ;字位,从左边开始显示
MOV R3,#00H ;延时
MOV DPTR,#LS0 ;八段管显示码首地址
LS2: MOV A,@R0
MOVC A,@A+DPTR
MOV R1,#0DCH ;硬件上的键盘相关,断码口的地址DC
MOVX @R1,A
MOV A,R2
inc R1
MOVX @R1,A ;字形口地址
LS1: DJNZ R3,LS1
CLR C ;延时
RRC A ;最高位变成下一位
MOV R2,A
DEC R0 ;回到字形口
JNZ LS2 ;继续显示的过程
movx @r0,a
dec r0
cpl a
movx @r0,a
CLR RS1
POP DPL
POP DPH
RET
;-------------------------------------
LS0: DB 0C0H,0F9H,0A4H,0B0H,99H,92H ;八段管显示码
DB 82H,0F8H,80H,90H,88H,83H,0C6H
DB 0A1H,86H,8EH,0FFH,0F0H
DB 40H,79H,24H,30H,19H,12H,02H,78H
DB 00H,10H;08H,03H,46H,21H,06H,0EH,7FH
;--------------------------------------
END
展开