📄 数字电压表设计代码.asm
字号:
FLAG EQU 20H
AD EQU 21H
;UnRegistered
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP INT_TIMER0
ORG 0013H
LJMP INT_ISR
ORG 001BH
LJMP INT_TIMER1
ORG 0040H
MAIN: SETB EA
SETB EX1
SETB IT1
SETB ET1
SETB ET0
SETB PT0
CLR PX1; ;设置外部中断的优先级高
CLR PT1; ;设置定时器0 的中断优先级低
MOV TMOD,#11H;;设置工作方式
MOV TH1,#0ECH; ;设置计数初值,不断将初值改小,看看会出现什么样的结果?
MOV TL1,#78H
MOV TH0,#00H
MOV TL0,#00H
MOV R0,#0C0H; ;设置显示缓冲区的初值?
MOV R1,#0C0H
MOV R2,#0C0H
MOV R3,#0C0H
MOV R4,#0C0H
MOV DPTR,#0FEFFH;;ADC0809 的地址为0FEFFH
;MOV A,#0
MOVX @DPTR,A
MOV FLAG,#0
;SETB P3.0
;CALL DELAY
;MOVX A,@DPTR
;MOV P1,A
SETB TR1
SETB TR0
SJMP $
INT_TIMER0:
MOV TH0,#00H
MOV TL0,#00H
MOV DPTR,#0FEFFH
MOVX @DPTR,A
RETI
INT_ISR:CLR EA
MOV DPTR,#0FEFFH
MOVX A,@DPTR
MOV AD,A
; MOV P1,A
CALL BINTOBCD
CALL BCDTO8SEG
SETB EA
;CPL P3.1
RETI
INT_TIMER1:
MOV TH1,#0ECH
MOV TL1,#78H
MOV A,FLAG
CJNE A,#0,Q1
Q0: MOV P1,R0
MOV P0,#0F7H
JMP EXIT
Q1: CJNE A,#1,Q2
MOV P1,R1
MOV P0,#0FBH
JMP EXIT
Q2: CJNE A,#2,Q3
MOV P1,R2
MOV P0,#0FDH
JMP EXIT
Q3: MOV P1,R3
MOV P0,#0FEH
; MOV DPTR,#0FEFFH
; MOVX @DPTR,A
EXIT: INC FLAG
ANL FLAG ,#03H
;CPL P3.0
EXIT1:RETI
BINTOBCD:mov a,AD
mov b,#5
mul ab
mov r4,b
mov b,#10
mul ab
mov r5,b
mov b,#10
mul ab
mov r6,b
mov b,#10
mul ab
mov r7,b
RET
BCDTO8SEG:MOV DPTR,#TABLE
MOV A,R4
MOVC A,@A+DPTR
ANL A,#7FH
MOV R0,A ;GE WEI
MOV A,R5
MOVC A,@A+DPTR
MOV R1,A ;SHIFEN WEI
MOV A,R6
MOVC A,@A+DPTR
MOV R2,A ; BAIFEN WEI
MOV A,R7
MOVC A,@A+DPTR
MOV R3,A ;QIAN FEN WEI
RET
; DELAY:MOV R0,#200
; DJNZ R0,$
; RET
TABLE: DB 0C0H;0
DB 0F9H;1
DB 0A4H;2
DB 0B0H;3
DB 99H;4
DB 92H;5
DB 82H;6
DB 0F8H;7
DB 80H;8
DB 90H;9
DB 88H;A
DB 83H;b
DB 0C6H;C
DB 0A1H;d
DB 86H;E
DB 8EH;F
DB 89H;H
DB 8CH;P
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -