标题:
基于单片机ADC0808的数字电压表,汇编语言程序
[打印本页]
作者:
新宇@y
时间:
2020-7-23 18:31
标题:
基于单片机ADC0808的数字电压表,汇编语言程序
八路循环显示数字电压表
51hei图片20200723182724.jpg
(250.89 KB, 下载次数: 53)
下载附件
仿真结果
2020-7-23 18:27 上传
TEMP EQU 60H
ORG 0000H
LJMP START
ORG 0003H
RETI
ORG 000BH
LJMP INT
ORG 0013H
RETI
ORG 001BH
RETI
ORG 0023H
RETI
ORG 002BH
RETI
CLEARMENIO:
CLR 00H
MOV P2,A
MOV R0,#30H
MOV R2,#0DH
LOOPMEM:MOV @R0,A
INC R0
DJNZ R2,LOOPMEM ;地址30H到3DH清零
MOV 20H,#00H ;20H清零
MOV A,#0FFH
MOV P0,A
MOV P1,A ;P0,P1,P3置位
MOV P3,A
RET
START:
LCALL CLEARMENIO ;初始化
MOV TMOD,#02H
MOV TH0,#255
MOV TL0,#255
MOV IE,#82H
SETB TR0
LCALL CLEARMENIO ;初始化
DISPLAY:
MOV R3,#08H ;八路循环显示
MOV R0,#30H ;数据地址在70H-77H
MOV R1,#30H
MOV 3BH,#00H ;显示路初值
ANL P2,#11111000B
DISLOOP1:
LCALL TEST
LCALL TUNBCD ;显示数据转化为3位BCD码存7AH,79H,78H
MOV R2,#071H ;每路显示时间为4ms*255,约为1s
DISLOOP2:
CLR A
CLR 00H
MOV DPTR,#TABLE
LCALL DISP ;调用四位显示程序
LCALL KEYWORK1
JMP Q1
TZ3:
LJMP DISP11
Q1:
JB 00H,TZ3
DJNZ R2,DISLOOP2
INC R1 ;显示下一路
INC 3BH ;通道显示数加1
CJNE R3,#08H,M1
JMP N1
M1:
CJNE R3,#07H,M2
JMP N2
M2:
CJNE R3,#06H,M3
JMP N3
M3:
CJNE R3,#05H,M4
JMP N4
M4:
CJNE R3,#04H,M5
JMP N5
M5:
CJNE R3,#03H,M6
JMP N6
M6:
CJNE R3,#02H,M7
JMP N7
M7:
CJNE R3,#01H,M8
JMP N8
M8:LJMP DISPLAY
N1:
ANL P2,#11111000B
ORL P2,#00000001B
JMP TZ
N2:
ANL P2,#11111000B
ORL P2,#00000010B
JMP TZ
N3:
ANL P2,#11111000B
ORL P2,#00000011B
JMP TZ
N4:
ANL P2,#11111000B
ORL P2,#00000100B
JMP TZ
N5:
ANL P2,#11111000B
ORL P2,#00000101B
JMP TZ
N6:
ANL P2,#11111000B
ORL P2,#00000110B
JMP TZ
N7:
ANL P2,#11111000B
ORL P2,#00000111B
JMP TZ
N8:
ANL P2,#11111000B
ORL P2,#00000111B
JMP TZ
TZ1:
LJMP DISLOOP1
TZ:
DJNZ R3,TZ1 ;显示八路
LJMP START
DISP11:
MOV R2,#0FH
DISLOOP11:
LCALL TEST
LCALL TUNBCD
DISLOOP22:
LCALL DISP
LCALL KEYWORK2
MOV R3,3BH
Z0:
CJNE R3,#00H,D0
JMP O0
D0:
CJNE R3,#01H,D1
JMP O1
D1:
CJNE R3,#02H,D2
JMP O2
D2:
CJNE R3,#03H,D3
JMP O3
D3:
CJNE R3,#04H,D4
JMP O4
D4:
CJNE R3,#05H,D5
JMP O5
D5:
CJNE R3,#06H,D6
JMP O6
D6:
CJNE R3,#07H,D7
JMP O7
D7:LJMP DISLOOP11
O0:
ANL P2,#11111000B
ORL P2,#00000001B
JMP TZ5
O1:
ANL P2,#11111000B
ORL P2,#00000001B
JMP TZ5
O2:
ANL P2,#11111000B
ORL P2,#00000010B
JMP TZ5
O3:
ANL P2,#11111000B
ORL P2,#00000011B
JMP TZ5
O4:
ANL P2,#11111000B
ORL P2,#00000100B
JMP TZ5
O5:
ANL P2,#11111000B
ORL P2,#00000101B
JMP TZ5
O6:
ANL P2,#11111000B
ORL P2,#00000110B
JMP TZ5
O7:
ANL P2,#11111000B
ORL P2,#00000111B
JMP TZ5
TZ5:
JNB 00H,TZ2
DJNZ R2,TZ4
LJMP DISLOOP11
INT:
CPL P3.7
RETI
TZ2:
MOV 3BH,#00H
LJMP DISLOOP1
TZ4:
LJMP DISLOOP11
TUNBCD:
MOV A,@R1
MOV B,#51
DIV AB
MOV 3AH,A
MOV A,B
CLR F0
SUBB A,#1AH
MOV F0,C
MOV A,#10
MUL AB
MOV B,#51
DIV AB
JB F0,LOOP2
ADD A,#5
LOOP2:
MOV 39H,A
MOV A,B
CLR F0
SUBB A,#1AH
MOV F0,C
MOV A,#10
MUL AB
MOV B,#51
DIV AB
JB F0,LOOP3
ADD A,#5
LOOP3:
MOV 38H,A
RET
TEST:
MOV R0,#30H
SETB P2.6
CLR P2.6
JNB P2.7,$
SETB P3.4 ;30H
MOV @R0,P0
CLR P3.4
INC R0
SETB P2.6
CLR P2.6
JNB P2.7,$
SETB P3.4 ;31H
MOV @R0,P0
CLR P3.4
INC R0
SETB P2.6
CLR P2.6
JNB P2.7,$
SETB P3.4 ;32H
MOV @R0,P0
CLR P3.4
INC R0
SETB P2.6
CLR P2.6
JNB P2.7,$
SETB P3.4 ;33H
MOV @R0,P0
CLR P3.4
INC R0
SETB P2.6
CLR P2.6
JNB P2.7,$
SETB P3.4 ;34H
MOV @R0,P0
CLR P3.4
INC R0
SETB P2.6
CLR P2.6
JNB P2.7,$
SETB P3.4 ;35H
MOV @R0,P0
CLR P3.4
INC R0
SETB P2.6
CLR P2.6
JNB P2.7,$
SETB P3.4 ;36H
MOV @R0,P0
CLR P3.4
INC R0
SETB P2.6
CLR P2.6
JNB P2.7,$
SETB P3.4 ;37H
MOV @R0,P0
CLR P3.4
RET
DISP:
MOV 70H,R1
PUSH 70H
MOV P3,#01100001B
MOV R1,#38H
MOV A,@R1
MOVC A,@A+DPTR
MOV P1,A
CALL DL10MS
MOV P3,#01100010B
MOV R1,#39H
MOV A,@R1
MOVC A,@A+DPTR
MOV P1,A
CALL DL10MS
MOV P3,#01100100B
MOV R1,#3AH
MOV A,@R1
MOVC A,@A+DPTR
ADD A,#10000000B
MOV P1,A
CALL DL10MS
MOV P3,#01101000B
MOV R1,#3BH
MOV A,@R1
MOVC A,@A+DPTR
MOV P1,A
POP 70H
MOV R1,70H
CALL DL10MS
RET
DL10MS:MOV R6,#0FH
DL1:
MOV R7,#0FH
DL2:
DJNZ R7,DL2
DJNZ R6,DL1
RET
DL1MS:MOV R4,#0FFH
LOOP11:DJNZ R4,LOOP11
MOV R4,#0FFH
LOOP22:DJNZ R4,LOOP22
RET
TABLE:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
KEYWORK1:
JNB P3.5,KEY1
KEYOUT:
RET
KEY1:
LCALL DISP ;延时消抖
JB P3.5,KEYOUT
WAIT11:
JNB P3.5,WAIT12
CPL 00H
RET
WAIT12:
LCALL DISP
AJMP WAIT11
KEYWORK2:
JNB P3.5,KEY1
JNB P3.6, KEY2
RET
KEY2:
LCALL DISP ;延时消抖
JB P3.6,KEYOUT
WAIT22:
JNB P3.6,WAIT21
INC 3BH
MOV A,3BH
CJNE A,#08H,KEYOUT11
KEYOUT11:
JC KEYOUT1
MOV 3BH,#00H
KEYOUT1: RET
WAIT21:
LCALL DISP ;键释放时等待
AJMP WAIT22
END
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1