欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
基于89C51單片機(jī)的時(shí)鐘匯編程序設(shè)計(jì)顯示出現(xiàn)問(wèn)題
[打印本頁(yè)]
作者:
1054664355
時(shí)間:
2019-12-14 12:22
標(biāo)題:
基于89C51單片機(jī)的時(shí)鐘匯編程序設(shè)計(jì)顯示出現(xiàn)問(wèn)題
這是根某個(gè)共陽(yáng)極數(shù)碼管的程序修改來(lái)的,替換為了陰極數(shù)碼管,對(duì)程序也進(jìn)行了相應(yīng)的改動(dòng),但顯示時(shí)間時(shí)無(wú)法按照應(yīng)有的順序進(jìn)行正常的顯示,求助各位大神,希望能指出被我忽略的錯(cuò)誤和有效的思路。
51hei.png
(19.89 KB, 下載次數(shù): 23)
下載附件
2019-12-14 13:14 上傳
單片機(jī)源程序如下:
ORG 0000H
AJMP MAIN
ORG 000BH
LJMP INTT0
ORG 0030H
MAIN:
MOV SP,#60H ;確立堆棧區(qū)
MOV PSW,#00H
MOV R0,#20H ;RAM區(qū)首地址
MOV R7,#5FH ;RAM區(qū)單元個(gè)數(shù)
QL:
MOV @R0,#00H ;RAM清零
INC R0
DJNZ R7,QL
MOV IP,#02H ;IP初始化,優(yōu)先定時(shí)器0
MOV IE,#82H ;IE初始化
MOV TMOD,#01H ;定時(shí)器0方式1工作
LCALL PP ;調(diào)P.子程序
NEXT:
LCALL KEY ;按鍵檢測(cè)子程序
JB ACC.0,RUNF ;A鍵按下運(yùn)行
LCALL DISP ;調(diào)用顯示子程序
SJMP NEXT
RUNF:
LCALL OUTT ;調(diào)傳送子程序
LCALL TIME ;開(kāi)電子鐘
JK:
LCALL DISP
LCALL KEY
JZ JK
LCALL ANKEY ;調(diào)用鍵功能子程序
LCALL DISP
SJMP JK
;P點(diǎn)顯示的8LED段碼初始化子程序
PP:
MOV 37H,#12 ;P點(diǎn)編碼送寄存器,對(duì)應(yīng)最左LED (共陽(yáng)極,0CH )
MOV R0,#30H ;第8個(gè)LED,最右LED,段碼存儲(chǔ)的地址
MOV R7,#07H ;第8到第2個(gè)LED,共7個(gè),初始化段碼顯示空白
PPP:
MOV @R0,#10 ;顯示空白
INC R0
DJNZ R7,PPP
RET
;鍵掃描子程序
KEY:
LCALL KEYS ;調(diào)用鍵值處理子程序
JZ EXIT ;沒(méi)有鍵按下轉(zhuǎn)到返回
LCALL DISP
LCALL DISP ;調(diào)用顯示去抖動(dòng)
LCALL KEYS
JZ EXIT
MOV B,20H ;保存鍵值
KEYSF:
LCALL KEYS
JZ KEYY ;鍵釋放,轉(zhuǎn)到恢復(fù)鍵值
LCALL DISP ;調(diào)顯示子程序延時(shí)
AJMP KEYSF ;等到鍵釋放
KEYY:
MOV A,B ;鍵值送A
EXIT:RET
KEYS:
MOV P1,#0FFH ;先向P1口寫(xiě)1
MOV A,P1 ;P1口值送A (有按鍵按下,對(duì)應(yīng)0,取反后1)
CPL A
ANL A,#0FH ;保存P1口的低4位
MOV 20H,A ;A值送20H保存
RET
;鍵功能子程序
ANKEY:
CLR EA ;關(guān)中斷
CHECK:
JB TR0,YXZ ;判斷是否運(yùn)行
K0:
CJNE A,#01H,K1
AJMP RUN ;A鍵按下,恢復(fù)運(yùn)行,轉(zhuǎn)運(yùn)行
K1:
CJNE A,#02H,K2
AJMP KEY1 ;轉(zhuǎn)時(shí)調(diào)整
K2:
CJNE A,#40H,K3
AJMP KEY2 ;轉(zhuǎn)分調(diào)整
K3:
CJNE A,#08H,OUT ;轉(zhuǎn)
AJMP KEY3 ;轉(zhuǎn)秒調(diào)整
YXZ:
JB ACC.0,STOP ;A鍵按下,暫停
AJMP OUT
KEY1:
MOV R0,#45H ;時(shí)調(diào)整
LCALL ADD1 ;調(diào)加一子程序
CLR C
CJNE A,#24H,OUTT ;轉(zhuǎn)傳送顯示數(shù)據(jù)子程序
ACALL CLR0 ;調(diào)時(shí)間清理子程序
AJMP OUTT
KEY2:
MOV R0,#43H ;分調(diào)整
LCALL ADD1
CLR C
CJNE A,#60H,OUTT
ACALL CLR0
AJMP OUTT
KEY3:
MOV R0,#41H ;秒調(diào)整
ACALL ADD1
CLR C
CJNE A,#60H,OUTT
ACALL CLR0
;傳送顯示數(shù)據(jù)子程序
OUTT:
MOV 30H,40H ;秒顯示單元40H-41H
MOV 31H,41H
MOV 32H,#11 ;"-"
MOV 33H,42H ;分顯示單元42H-43H
MOV 34H,43H
MOV 35H,#11 ;"-"
MOV 36H,44H ;時(shí)顯示單元44H-45H
MOV 37H,45H
RET
STOP:
CLR TR0
RET
RUN:
LCALL TIME ;調(diào)運(yùn)行電子鐘子程序
OUT:
SETB EA ;無(wú)鍵按下或完成功能跳出
RET
;運(yùn)行電子鐘子程序
TIME:
SETB EA
MOV TL0,#0B0H ;3CB0H
MOV TH0,#3CH
MOV R4,#20 ;50ms,20次循環(huán)
SETB TR0 ;啟動(dòng)定時(shí)器0
RET
;定時(shí)器0中斷處理子程序
INTT0:
PUSH ACC
PUSH PSW
CLR ET0
CLR TR0
MOV TL0,#0B0H ;重新設(shè)置定時(shí)初值
MOV TH0,#3CH
SETB TR0
DJNZ R4,OUTT0 ;r4-1 != 0 1秒未到,轉(zhuǎn)OUTTO
ADDSS:
MOV R4,#14H ;20次計(jì)數(shù)
MOV R0,#41H ;秒十位
ACALL ADD1
CLR C
CJNE A,#60H,ADDMM ;1分到
ADDMM:
JC OUTT0 ;1分,60秒未到
ACALL CLR0 ;1分到,清零
MOV R0,#43H ;分十位
ACALL ADD1
CLR C
CJNE A,#60H,ADDHH ;1小時(shí)到
ADDHH:
JC OUTT0
ACALL CLR0
MOV R0,#45H ;時(shí)十位
ACALL ADD1
CLR C
CJNE A,#24H,HOUR ;1天到
HOUR:
JC OUTT0
ACALL CLR0
OUTT0:
MOV 30H,40H ;秒顯示單元40H-41H
MOV 31H,41H
MOV 32H,#11 ;"-"
MOV 33H,42H ;分顯示單元42H-43H
MOV 34H,43H
MOV 35H,#11 ;"-"
MOV 36H,44H ;時(shí)顯示單元44H-45H
MOV 37H,45H
POP PSW
POP ACC
SETB ET0
RETI
;時(shí)間清理子程序
CLR0:
CLR A
MOV @R0,A
DEC R0
MOV @R0,A
RET
;加一子程序
ADD1:
MOV A ,@R0 ;取十位
DEC R0
SWAP A
ORL A,@R0 ;組合十位與個(gè)位
ADD A,#01H ;加1
DA A ;十進(jìn)制調(diào)整
MOV R3,A ;暫存
ANL A,#0FH ;屏蔽十位
MOV @R0,A ;放入個(gè)位單元
MOV A,R3 ;取值
INC R0
SWAP A
ANL A,#0FH ;屏蔽個(gè)位
MOV @R0,A ;放入十位單元
MOV A,R3
RET
DISP:
MOV R1,#30H
MOV R2,#01H
DISP1:
MOV P2,R2
MOV A,@R1
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
CPL P0.0
CPL P0.1
CPL P0.2
CPL P0.3
CPL P0.4
CPL P0.5
CPL P0.6
CPL P0.7
ACALL DL
MOV A,R2
JB ACC.7,DISP2
RL A
INC R1
MOV R2,A
AJMP DISP1
DISP2:RET
TAB:DB 0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H,80H,90H,0FFH,0BFH,0CH
DL:
MOV R6,#14H
DL1:
MOV R7,#19H
DL2:
DJNZ R7,DL2
DJNZ R6,DL1
RET
END
復(fù)制代碼
全部資料51hei下載地址:
shizhong.rar
(30.47 KB, 下載次數(shù): 8)
2019-12-14 12:13 上傳
點(diǎn)擊文件名下載附件
作者:
csmyldl
時(shí)間:
2019-12-14 16:38
MOV P0,A
CPL P0.0
CPL P0.1
CPL P0.2
CPL P0.3
CPL P0.4
CPL P0.5
CPL P0.6
CPL P0.7
顯示程序中這一段完全沒(méi)必要這么寫(xiě)
只需要把數(shù)據(jù)表中的數(shù)據(jù)對(duì)應(yīng)取反就變?yōu)榱斯碴帢O
TAB:DB 0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H,80H,90H,0FFH,0BFH,0CH
另外,位碼放在R2中,共陰是MOV R2,#01H,換共陰就是MOV R2,#0FEH
所以,如果共陽(yáng)是正常顯示的話,只要改數(shù)據(jù)表和R2的值就變?yōu)榱斯碴?
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1