標(biāo)題:
單片機(jī)奇怪問題
[打印本頁]
作者:
iritwq
時間:
2016-6-8 20:06
標(biāo)題:
單片機(jī)奇怪問題
單片機(jī)STC89C52RC,初學(xué)驅(qū)動數(shù)碼管,按照思路是先顯示一遍0-9,下來就不斷循環(huán)顯示1-9,proteus仿真一切正常,但是把程序燒寫到芯片上之后只能顯示0-9一次,然后就不顯示了。但是刪掉 jnb p1.3,Set3 這句,就一切OK了,真是奇怪,求助壇友怎么處理才好
完整程序如下:
ORG 0000H ;ORG偽指令來規(guī)定程序的起始地址
LJMP MAIN
ORG 0060H ;數(shù)據(jù)表:
DB 03FH,0FFH, 03FH,0FEH, 03FH,0FDH, 03FH,0FBH, 03FH,0F7H ;顯示設(shè)定圈數(shù)的數(shù)值,兩個一組前一數(shù)字是字模,后一位數(shù)字是顯示該字的選通碼
DB 03FH,0FFH, 03FH,0EFH, 03FH,0DFH, 03FH,0BFH, 03FH,07FH ;顯示實際圈數(shù)的數(shù)值,前一數(shù)字賦值給P0,后一數(shù)字賦值給P2,對應(yīng)的數(shù)碼管亮一下
DB 03FH, 006H, 05BH, 04FH, 066H, 06DH, 07DH, 007H, 07FH, 06FH ;正置數(shù)碼管顯示0~9, 0-9字模的存儲位置
ORG 0100H
MAIN:
mov p1,#0FFh ;初始化P1口,
P1外接按鍵控制顯示的數(shù)字
call test ;讓各數(shù)碼管從0顯示到9以檢測顯示正常與否
start:
jnb p1.0,SET0 ;如果Bit不是1,跳轉(zhuǎn)到start1
jnb p1.1,Set1 ;如果Bit是1,跳轉(zhuǎn)set2
jnb p1.2,Set2
jnb p1.3,Set3 ;這句刪掉就能正常顯示
jnb p1.4,Set4
jnb p1.5,Set5
jnb p1.6,Set6
jnb p1.7,Set7
call test
JMP start
SET0:
JMP start
SET1:
JMP start
SET2:
JMP start
SET3:
JMP start
SET4:
JMP start
SET5:
JMP start
SET6:
JMP start
SET7:
JMP start
;======================== test:讓所有數(shù)碼管從0顯示到9 ======================================
test:
mov p0,#03Fh ;把數(shù)字0的字模送入P0
mov p2,#000h ;設(shè)置p2口為低電平,此時所有數(shù)碼管都顯示
mov r1,#074h ; 0-9字模的存儲位置,從這個數(shù)開始增加,尋找與當(dāng)前顯示的數(shù)字對應(yīng)的數(shù),然后找出下一個數(shù)存入顯示的位置
different:
mov a,r1
inc R1
MOVC A, @A+DPTR ;把 數(shù)據(jù)表中的第一個數(shù)據(jù)讀到A里,A中的值就是調(diào)試時觀察窗口里ACC的值
mov r2,p0
XRL A, r2 ; A與R2中的數(shù)據(jù)進(jìn)行異或操作,結(jié)果放在A中。異或,相同為“0”,相異為“1”。
jz next ;A中內(nèi)容為0,說明找到了目前顯示的數(shù)字的字模,就把下一個字模放到當(dāng)前位置
jmp different
next:
MOV A,R1 ;否則可以增加數(shù)字,R1中的數(shù)字作為相對地址尋址找到下一個數(shù)字的代碼送入P0
MOVC A, @A+DPTR
mov p0,a
MOV R4,#0H
pause:
INC R4
mov A,R4
XRL A, #0FFh ;設(shè)置每個數(shù)字顯示的時間
JZ continue
MOV A,R1
CALL DELAY
MOV R1,A
JMP pause
continue:
mov A,R1
XRL A,#07Eh
jz testOK
jmp different
testOK:
ret
;======================== DELAY: 延時子程序 ===========================
DELAY:
MOV R6,#04H
DL0:
MOV R5,#0F8H
DJNZ R5,$
DJNZ R6,DL0
NOP
RET
END
作者:
iritwq
時間:
2016-6-8 21:11
已解決,是芯片壞了
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1