📄 eight interrupt.a51
字号:
;调试基本成功,但是,个别通道数据不匹配
;而且,不能实时检测数据。为什么?
ORG 0000H
SJMP START
ORG 0030H
LJMP START
ORG 0003H
LJMP INT0
;******************
;初始化各个变量
;******************
START: CLR A
MOV R0,#30H ;初始化30H-3BH
MOV R2,#0DH
MOV R3,#08H ;设置8路采样记数值
LOOP0: MOV @R0,A
INC R0
DJNZ R2,LOOP0
NOP
NOP
NOP
MOV A,#0FFH
MOV P0,A
MOV P1,A
MOV P2,A
MOV P3,A
MOV R0,#30H ;让R0重新指向数据缓冲区首位
MOV DPTR,#7FF8H
MAIN: SETB F0
MOVX @DPTR,A
SETB EA
SETB EX0
SETB IT0
NEXT: JB F0,NEXT
DJNZ R3,MAIN
NOP
NOP
NOP
;**********************
;主程序
;**********************
LOOP: NOP
NOP
NOP
LCALL DISPLAY
NOP
NOP
NOP
SJMP LOOP
;*********************
;显示控制子程序
;*********************
DISPLAY:MOV R3,#08H
MOV R0,#30H
MOV 3BH,#00H ;显示通道路数初值
DISPLP1:LCALL PROC
NOP
NOP
NOP
MOV R4,#0AAH ;每路显示时间控制
DISPLP2:LCALL DISP ;调用显示4位
NOP
NOP
NOP
DJNZ R4,DISPLP2
INC R0 ;显示下一路
INC 3BH ;显示通道数加1
DJNZ R3,DISPLP1
RET
NOP
NOP
NOP
;*********************
;;AD转换子程序中断方式
;*********************
INT0: NOP
NOP
NOP
MOVX A,@DPTR
MOV @R0,A
INC DPTR
INC R0
CLR F0
RETI
NOP
NOP
NOP
;*********************
;数据处理子程序
;*********************
PROC: MOV A,@R0
MOV B,#51
DIV AB
MOV 3AH,A
XCH A,B
MOV B,#10
MUL AB
JB OV,BCD1
MOV B,#51
DIV AB
MOV 39H,A
XCH A,B
AJMP BCD2
NOP
NOP
NOP
BCD1: MOV B,#51
DIV AB
ADD A,#5
MOV 39H,A
XCH A,B
ADD A,#5
BCD2: MOV B,#10
MUL AB
JB OV,BCD3
MOV B,#51
DIV AB
MOV 38H,A
AJMP BCD4
NOP
NOP
NOP
BCD3: MOV B,#51
DIV AB
ADD A,#5
MOV 38H,A
BCD4: RET
NOP
NOP
NOP
;*******************
;显示子程序
;*******************
DISP: MOV A,3BH
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P1,A
MOV A,#0FEH
MOV P2,A
LCALL DELAY
NOP
NOP
NOP
MOV A,3AH
MOV DPTR, #TABLE
MOVC A,@A+DPTR
ORL A,#80H
MOV P1,A
MOV A, #0FDH
MOV P2,A
LCALL DELAY
NOP
NOP
NOP
MOV A,39H
MOV DPTR, #TABLE
MOVC A,@A+DPTR
MOV P1,A
MOV A, #0FBH
MOV P2,A
LCALL DELAY
NOP
NOP
NOP
MOV A,38H
MOV DPTR, #TABLE
MOVC A,@A+DPTR
MOV P1,A
MOV A, #0F7H
MOV P2,A
LCALL DELAY
NOP
NOP
NOP
RET
NOP
NOP
NOP
TABLE: DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
DELAY: MOV R6,#14H
D0: MOV R7,#19H
D1: DJNZ R7,D1
DJNZ R6,D0
RET
NOP
NOP
NOP
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -