在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

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

            作者: 時間:2012-07-09 來源:網(wǎng)絡 收藏

            KE1: CLR EA ;關中斷

            CLR ET0 ;禁止T0中斷

            CLR TR1 ;關T1

            CLR TR0 ;關T0

            AJMP KEY

            KE2: CLR EA ;關中斷

            AJMP MAIN ;返回主程序進行初始化

            ;――――――――――按鍵查詢子程序――――――――――――――

            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動態(tài)顯示子程序―――――――――――――

            DISP: PUSH ACC ;A入棧保護

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

            MOV R2,#08H ;LED待顯示位數(shù)送R2

            MOV R1,#00H ;設定顯示時間

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

            MOV R0,#30H ;顯示緩沖區(qū)首址送R0

            MOV A,@R0 ;秒顯示個位送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,$ ;延時0.5ms

            DJNZ R1,$ ;延時0.5ms

            RR A ;位選字移位

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

            INC R0 ;指向下一位緩沖區(qū)地址

            MOV A,@R0 ;緩沖區(qū)數(shù)據(jù)送A

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

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

            POP ACC ;A彈棧,恢復現(xiàn)場

            RET

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

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

            ;――――――――――定時器中斷服務程序―――――――――――――

            CONT: PUSH ACC ;保護現(xiàn)場

            MOV TH0,#3CH ;定時器T1重置初值

            MOV TL0,#0B0H

            MOV A,20H ;秒計數(shù)器送A

            AJMP CONT1

            REN: AJMP REN1

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

            MOV 21H,#14H ;重置50ms計數(shù)初值

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

            NOP

            NOP

            SETB P3.5

            INC A ;1秒計數(shù)值加1

            DA A ;換算為10進制計數(shù)

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

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

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

            MOV 30H,A ;個位待顯示數(shù)據(jù)送顯示緩沖區(qū)

            MOV A,20H

            SWAP A ;60秒計數(shù)單元高、低4位數(shù)據(jù)互換

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

            MOV 31H,A ;十位待顯示數(shù)據(jù)送顯示緩沖區(qū)

            AJMP REN1

            CONT2: MOV A,#00H

            AJMP CONT3

            REN1: POP ACC ;恢復現(xiàn)場

            RET ;中斷返回

            END

            3. 總結與分析

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

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

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

            燃氣報警器相關文章:燃氣報警器原理

            上一頁 1 2 3 下一頁

            評論


            相關推薦

            技術專區(qū)

            關閉