標(biāo)題:
為什么單片機(jī)最后一位數(shù)碼管全亮啊,而且觸發(fā)中斷之后,ADC0808輸出的數(shù)據(jù)不正確
[打印本頁(yè)]
作者:
WANGZR
時(shí)間:
2023-4-9 21:58
標(biāo)題:
為什么單片機(jī)最后一位數(shù)碼管全亮啊,而且觸發(fā)中斷之后,ADC0808輸出的數(shù)據(jù)不正確
2023-04-09 (1).png
(358.65 KB, 下載次數(shù): 48)
下載附件
2023-4-9 21:56 上傳
單片機(jī)源程序如下:
TEMP EQU 20H
NUMB EQU 25H
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INTX0 ;外部中斷0
ORG 0030H
;======================================
;主程序
MAIN:
MOV R0,#30H
SETB PT0 ;設(shè)置定時(shí)器0為高優(yōu)先級(jí)
SETB IT0 ;INT0為下降沿觸發(fā)
SETB EA ;開系統(tǒng)中斷
SETB EX0 ;開外部中斷0
MOV DPTR,#7FF8H ;DPTR指向0808通道0
MOV A,#00H
MOVX @DPTR,A ;端口地址送DPTR,P2.7=0,鎖定通道0并啟動(dòng)轉(zhuǎn)換
WAIT:
SJMP [ DISCUZ_CODE_3 ]nbsp; ;等待中斷
INTX0:
MOV DPTR,#7FF8H
MOVX A,@DPTR ;讀取A/D轉(zhuǎn)換結(jié)果
MOV NUMB,A ;將結(jié)果送到30H
LCALL CONVERT
LCALL DISP
MOV A,#00H
MOVX @DPTR,A ;重啟ADC0808對(duì)INT0的轉(zhuǎn)換
RETI
DISP:
MOV R0,#TEMP
MOV R2,#00H
DISP1:
MOV A,R2
MOV DPTR,#TAB1
MOVC A,@A+DPTR
MOV P2,A
MOV A,@R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
MOV R5,#5
LCALL DELAY
INC R0
INC R2
CJNE R2,#3,DISP1
MOV P0,#00H
RET
CONVERT:
MOV A,NUMB
MOV B,#10
DIV AB
MOV TEMP+2,B
MOV B,#10
DIV AB
MOV TEMP+1,B
MOV TEMP,A
RET
//延時(shí)子程序
DELAY:
MOV R6,#1
DELAY0:
MOV R7,#100
DJNZ R7,$
DJNZ R6,DELAY0
DJNZ R5,DELAY
RET
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH
TAB1: DB 0FDH,0FBH,0F7H ;位選信號(hào),后三個(gè)數(shù)目管
END
復(fù)制代碼
作者:
WANGZR
時(shí)間:
2023-4-10 20:32
哎,P1口只能作為輸入/輸出口使用。將P0口與P1口換一下就好了。真的是
作者:
人中狼
時(shí)間:
2023-4-11 08:11
重啟ADC0808對(duì)INT0的轉(zhuǎn)換的時(shí)候沒有重置DPTR
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1