📄 新建 文本文档.txt
字号:
ST BIT P3.2
EOC BIT P3.1
OE BIT P3.0
AA BIT P3.4
BB BIT P3.5
CC BIT P3.6
GDATA EQU 45H
ORG 00H
LJMP MAIN
ORG 30H
MAIN: CLR CC ;选择通道3
SETB AA
SETB BB
LOOP: CLR ST ;给START引脚送入脉冲,开始对3通道进行转换
SETB ST
CLR ST
WAIT: JNB EOC,WAIT ;判断是否转换完毕
SETB OE ;转换完后,允许输出
MOV GDATA,P1 ;转换完的二进制数送入GDATA
MOV A,P1 ;转换完的二进制数送入累加器
LCALL ADAD ;调用数制转换程序
LCALL DISPLAY ;调用显示程序
LJMP LOOP ;重新进行转换
;**********数制转换子程序********************
ADAD: MOV B,#100 ;100放入B
MUL AB ;100*数字量送B
MOV R4,#00H ;送入R4,R3,R2
MOV R3,B
MOV R2,A
MOV R5,#33H ;33H送R5
MOV B,#10H ;16送B
LCALL NSDIV ;转无符号除法程序
MOV B,#64H
DIV AB
MOV 7BH,A ;得50X的百位,送7BH
ADD A,7BH
MOV 7BH,A ;得100X的百位,送7BH
MOV A,B
MOV B,#0AH
DIV AB
SWAP A
ORL A,B ;得50X的十位和个位送A
MOV B,A
ADD A,B
DA A
JNC BWNOTJ1 ;若百位无进位,则转BWNOTJ1
INC 7BH ;否则,7BH中的内容加“1”
BWNOTJ1:MOV B,A ;对A中BCD码拆字
ANL A,#0F0H
SWAP A
MOV 7AH,A ;十位BCD码送7AH
MOV A,B
ANL A,#0FH
MOV 79H,A ;个位BCD码送79H
ADRETN: RET
NSDIV: CLR C ;无符号数除法子程序
MOV A,R2 ;R4,R3,R2左移一位
RLC A
MOV R2,A
MOV A,R3
RLC A
MOV R3,A
MOV A,R4
RLC A
MOV R4,A
CLR C
SUBB A,R5
JC NSDNEXT
MOV R4,A
INC R2
NSDNEXT:DJNZ B,NSDIV ;除法未完,则转NSDIV
CLR C ;两数之商除以2,送R2和A
MOV A,R3
RRC A
MOV A,R2
RRC A
MOV R2,A
RET
;***************显示子程序*************
DISPLAY:MOV DPTR,#TAB ;表头地址送DPTR
MOV P2,#0FEH ;位选码送P2口
MOV 40H,7BH ;百位数送40H
MOV 41H,#10H ;小数点送41H
MOV 42H,7AH ;十位数送42H
MOV 43H,79H ;个位数送43H
MOV R0,#40H ;立即数40H送入R0
LOOP1: MOV A,@R0 ;把显示缓冲区的内容送入A
MOVC A,@A+DPTR ;查表得段码
MOV P0,A ;段码送P0口
LCALL DELAY ;调用延时子程序
INC R0 ;移显示缓冲区
MOV A,P2
JNB ACC.3,RETURN ;判断是否显示到最后一位
RL A
MOV P2,A
LJMP LOOP1
RETURN: RET
; ************延时10ms程序*********
DELAY: MOV R7,#50
D2: MOV R6,#100
D1: DJNZ R6,D1
DJNZ R7,D2
RET
TAB: DB 3FH,06H,5BH,4FH
DB 66H,6DH,7DH,07H
DB 7FH,6FH,77H,7CH
DB 39H,5EH,79H,71H
DB 80H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -