我用下面那段程序燒,但P0端口沒有高電平輸出,只有底電平,什么原因?幫分析一下,謝謝 FIRST EQU P2.7 ;第一位數(shù)碼管的位控制
SECOND EQU P2.6 ;第二位數(shù)碼管的位控制
DISPBUFF EQU 5AH ;顯示緩沖區(qū)為5AH和5BH
ORG 0000H
AJMP START
ORG 30H
START:
MOV SP,#5FH ;設(shè)置堆棧
MOV P1,#0FFH
MOV P0,#0FFH
MOV P2,#0FFH ;初始化,所顯示器,LED滅
MOV DISPBUFF,#0 ;第一位顯示0
MOV DISPBUFF+1,#1 ;第二握顯示1
LOOP:
LCALL DISP ;調(diào)用顯示程序
AJMP LOOP
;主程序到此結(jié)束
DISP:
PUSH ACC ;ACC入棧
PUSH PSW ;PSW入棧
MOV A,DISPBUFF ;取第一個待顯示數(shù)
MOV DPTR,#DISPTAB ;字形表首地址
MOVC A,@A+DPTR ;取字形碼
MOV P0,A ;將字形碼送P0位(段口)
CLR FIRST ;開第一位顯示器位口
LCALL DELAY ;延時1毫秒
SETB FIRST ;關(guān)閉第一位顯示器(開始準(zhǔn)備第二位的數(shù)據(jù))
MOV A,DISPBUFF+1 ;取顯示緩沖區(qū)的第二位
MOV DPTR,#DISPTAB
MOVC A,@A+DPTR
MOV P0,A ;將第二個字形碼送P0口
CLR SECOND ;開第二位顯示器
LCALL DELAY ;延時
SETB SECOND ;關(guān)第二位顯示
POP PSW
POP ACC
RET
DELAY: ;延時1毫秒
PUSH PSW
SETB RS0
MOV R7,#50
D1: MOV R6,#10
D2: DJNZ R6,$
DJNZ R7,D1
POP PSW
RET
DISPTAB:DB 28H,7EH,0a4H,64H,72H,61H,21H,7CH,20H,60H
END |