<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于51單片機秒表的程序設計

基于51單片機秒表的程序設計

作者: 時(shí)間:2012-07-09 來(lái)源:網(wǎng)絡(luò ) 收藏

KE1: CLR EA ;關(guān)中斷

CLR ET0 ;禁止T0中斷

CLR TR1 ;關(guān)T1

CLR TR0 ;關(guān)T0

AJMP KEY

KE2: CLR EA ;關(guān)中斷

AJMP MAIN ;返回主程序進(jìn)行初始化

;――――――――――按鍵查詢(xún)子程序――――――――――――――

KS: MOV DPTR,#4401H ;置8155PA口地址

MOV A,#00H

MOVX @DPTR,A ;全掃描字#00H送PA口

INC DPTR ;指向PC口

INC DPTR

MOVX A,@DPTR ;讀入PC口狀態(tài)

CPL A ;變正邏輯,高電平表示有鍵按下

ANL A,#0FH ;屏蔽高4位

RET ;返回,A≠0表示有鍵按下

;―――――――――LED動(dòng)態(tài)顯示子程序―――――――――――――

DISP: PUSH ACC ;A入棧保護

SETB RS0 ;保護第0組工作寄存器,啟用第1組工作寄存器

MOV R2,#08H ;LED待顯示位數送R2

MOV R1,#00H ;設定顯示時(shí)間

MOV R3,#7FH ;選中最右端LED

MOV R0,#30H ;顯示緩沖區首址送R0

MOV A,@R0 ;秒顯示個(gè)位送A

DISP1: MOV DPTR,#TAB ;指向字形表首址

MOVC A,@A+DPTR ;查表取得字形碼

MOV DPTR,#4402H ;指向8155PB口(段碼口)

MOVX @DPTR,A ;字形碼送PB口

MOV A,R3 ;取位選字

MOV DPTR,#4401H ;指向8155PA口(位選口) , /O:P>

MOVX @DPTR,A ;位碼送PA口

DJNZ R1,$ ;延時(shí)0.5ms

DJNZ R1,$ ;延時(shí)0.5ms

RR A ;位選字移位

MOV R3,A ;移位后的位選字送R3

INC R0 ;指向下一位緩沖區地址

MOV A,@R0 ;緩沖區數據送A

DJNZ R2,DISP1 ;未掃描完,繼續循環(huán)

CLR RS0 ;恢復第0組工作寄存器

POP ACC ;A彈棧,恢復現場(chǎng)

RET

TAB: DB 3FH,06H,5BH,4FH,66H ;共陰極LED字形表

DB 6DH,7DH,07H,7FH,6FH

;――――――――――定時(shí)器中斷服務(wù)程序―――――――――――――

CONT: PUSH ACC ;保護現場(chǎng)

MOV TH0,#3CH ;定時(shí)器T1重置初值

MOV TL0,#0B0H

MOV A,20H ;秒計數器送A

AJMP CONT1

REN: AJMP REN1

CONT1: DJNZ 21H,REN ;1秒定時(shí)未到,中斷返回

MOV 21H,#14H ;重置50ms計數初值

CLR P3.5 ;軟件產(chǎn)生定時(shí)器T1計數脈沖

NOP

NOP

SETB P3.5

INC A ;1秒計數值加1

DA A ;換算為10進(jìn)制計數

JBC TF1,CONT2 ;60秒到,轉清零

CONT3: MOV 20H,A ;計數值送60秒計數單元20H

ANL A,#0FH ;屏蔽高4位

MOV 30H,A ;個(gè)位待顯示數據送顯示緩沖區

MOV A,20H

SWAP A ;60秒計數單元高、低4位數據互換

ANL A,#0FH ;屏蔽高4位

MOV 31H,A ;十位待顯示數據送顯示緩沖區

AJMP REN1

CONT2: MOV A,#00H

AJMP CONT3

REN1: POP ACC ;恢復現場(chǎng)

RET ;中斷返回

END

3. 總結與分析

(1)實(shí)驗采用七段碼LED設計(數碼管),顯示直觀(guān);采用定時(shí)器中斷,計時(shí)更準確;功能齊全,可隨時(shí)啟動(dòng)、停止、清零,后者智能化程度更高。

(2)設計、調試大型程序時(shí),需先根據要求劃分模塊,優(yōu)化結構;再根據各模塊特點(diǎn)確定何為主程序,何為子程序,何為中斷服務(wù)程序,相互間如何調用;再根據各模塊性質(zhì)和功能將各模塊細化,設計出程序流程圖;最后才根據各模塊流程圖編制具體程序。調試時(shí)應先調主程序,實(shí)現最基本最主要的功能,在此基礎上再將各模塊功能往主程序上堆砌,直至各模塊聯(lián)調、統調,實(shí)現全部功能。本例子將整個(gè)程序劃分為鍵盤(pán)程序,動(dòng)態(tài)顯示程序,秒計時(shí)程序三大模塊,根據各自的特點(diǎn)確定鍵盤(pán)程序為主程序,動(dòng)態(tài)顯示程序為子程序,秒計時(shí)程序為定時(shí)器中斷服務(wù)程序。主程序又細分為初始化程序,鍵盤(pán)查詢(xún)程序,鍵盤(pán)掃描程序,鍵盤(pán)處理程序四大部分。三大模塊之間的關(guān)系是:鍵盤(pán)程序在無(wú)鍵按下時(shí),不斷調用動(dòng)態(tài)顯示子程序;在有鍵按下時(shí),先調用動(dòng)態(tài)顯示子程序消抖,再進(jìn)入鍵盤(pán)處理程序,控制中斷服務(wù)程序的運行;處理完畢后,再不斷調用動(dòng)態(tài)顯示子程序。經(jīng)上述處理后,三大模塊運行協(xié)調一致,既保持了動(dòng)態(tài)顯示的穩定性,又保持了鍵盤(pán)的可靠性,還保持了秒計時(shí)的準確性,較好地實(shí)現了全部功能。

(3)本例子只用到8位LED顯示中的兩位,只用到4×4鍵盤(pán)16個(gè)按鍵中的3個(gè),因此,其功能還有較大的擴展空間。只要將上述程序稍加改動(dòng)即可實(shí)現秒、分、時(shí)、日顯示,并可作全方位修改的實(shí)時(shí)時(shí)鐘。如增加LED顯示位數或將顯示改為L(cháng)CD顯示模塊,可實(shí)現年、月、周、日、時(shí)、分、秒顯示。

燃氣報警器相關(guān)文章:燃氣報警器原理

上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: 51單片機 秒表 定時(shí)器

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>