版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、單片機程序設(shè)計中運用事件驅(qū)動機制摘要:通過實例說明將事件驅(qū)動機制應(yīng)用到單片機程序中,使中斷響應(yīng)與處理程序分離,可較理想地用硬件定時代替處理程序中的軟件定時,從而大幅提高系統(tǒng)對多中斷的實時響應(yīng)能力,降低多中斷系統(tǒng)調(diào)試的難度。關(guān)鍵詞:事件驅(qū)動單片機程序設(shè)計實時響應(yīng)1傳統(tǒng)單片機程序開發(fā)的不足在傳統(tǒng)的單片機程序中,通常是以“過程”和“操作”為中心的結(jié)構(gòu),程序按規(guī)定的過程順序地執(zhí)行,與外設(shè)的連接一般采用中斷方式,在中斷服務(wù)程序中完成外設(shè)的全部處理工作,主程序一般是初始化系統(tǒng)并等待中斷的發(fā)生。這種結(jié)構(gòu)成熟、易于理解,但有如下不足:(1)受單片機性能的限制,容易造成系統(tǒng)對其它中斷的響應(yīng)變得遲緩,特別是對于中
2、斷源較多、中斷處理耗時較多的系統(tǒng)(如:LED顯示、鍵盤掃描等);(2)中斷服務(wù)程序過長,在中斷服務(wù)期間系統(tǒng)無法響應(yīng)同級的中斷;(3)可能導(dǎo)致代碼重入,增大堆棧開銷,造成難以預(yù)料的結(jié)果;(4)程序調(diào)試時,花在各模塊定時協(xié)調(diào)方面的時間、精力隨系統(tǒng)的復(fù)雜程序大幅增加。如果在編寫單片機程序時,引入Windows程序中的事件驅(qū)動機制,把中斷響應(yīng)與事件處理程序分離,中斷服務(wù)程序的任務(wù)只是產(chǎn)生一個中斷發(fā)生的標(biāo)志,而事件處理則由處理程序來完成,主程序則負(fù)責(zé)判斷標(biāo)志和調(diào)度處理程序。這樣,可大幅縮短中斷服務(wù)程序的長度,減少斷服務(wù)程序的耗時,提高系統(tǒng)對多中斷的響應(yīng)能力,從而較好地解決上述矛盾。2Windows的事件
3、驅(qū)動機制在Windosw系統(tǒng)中,程序的設(shè)計圍繞事件驅(qū)動來進行。當(dāng)對象有相關(guān)的事件發(fā)生時(如按下鼠標(biāo)鍵),對象產(chǎn)生一條特定的標(biāo)識事件發(fā)生的消息,消息被送入消息隊列,或不進入隊列而直接發(fā)送給處理對象,主程序負(fù)責(zé)組織消息隊列,將消息發(fā)送給相應(yīng)的處理程序,使相應(yīng)的處理程序執(zhí)行相應(yīng)的動作,做完相應(yīng)的處理后將控制權(quán)交還給主程序。在這種機制中,對象的請求僅僅是向隊列中添加相應(yīng)的消息,耗時的處理則被分離給處理函數(shù)。這種結(jié)構(gòu)的程序中各功能模塊界限分明,便于擴充,能充分利用CPU的處理能力,使系統(tǒng)對外界響應(yīng)準(zhǔn)確而及時。3事件驅(qū)動的單片機程序設(shè)計與Windows系統(tǒng)相比,單片機的資源非常有限,因此,單片機程序中的事
4、件驅(qū)動機制只能采取一種簡化的方式。當(dāng)某個中斷發(fā)生時,中斷服務(wù)程序設(shè)置相應(yīng)的標(biāo)志,不同的標(biāo)導(dǎo)代表不同的中斷發(fā)生的消息,而主程序不斷地判別這些標(biāo)志,以決定啟動哪一個處理函數(shù)。相應(yīng)的處理函數(shù)被啟動處理完相關(guān)的任務(wù)后,清除此標(biāo)志,然后把控制權(quán)交還給主程序。采用這種機制,可合理地利用有限資源,使程序調(diào)試的工作量大幅下降。對于延時、定時處理(如LED顯示、鍵盤掃描等),更可方便地使用一定時器來完成延時、定時的任務(wù),從而把CPU從這種耗時的任務(wù)中解放出來,確保系統(tǒng)對多中斷有足夠的響應(yīng)能力。本文以一IC卡讀寫機為例,說明事件驅(qū)動機制在單片機程序設(shè)計中的具體應(yīng)用。硬件結(jié)構(gòu)本系統(tǒng)以ATMEL公司的89C51為核心
5、(如圖1)。89C51價格低廉,性能較好,片內(nèi)有4KB的可擦寫程序存儲器,可滿足本系統(tǒng)的要求。為簡化硬件結(jié)構(gòu)及系統(tǒng)能耗,鍵盤采用軟件掃描的矩陣鍵盤。LED顯示采用段位動態(tài)掃描,在任一時刻LED中最多只有一段被點亮。具體是在位選信號送某位LED的公共極時,每隔一個時間片依次輸出該位LED的段碼(含小數(shù)點),輸出完成一位后,再逐閃輸出下一位。從第一位至第N位LED依次分成8XN個時間片循環(huán)掃描顯示。串口UART作為系統(tǒng)與外部數(shù)據(jù)通信的通道,IC卡的讀寫由MCU模擬I2C協(xié)議來實現(xiàn)。事件驅(qū)動機制的單片機程序設(shè)計中斷申請標(biāo)志在系統(tǒng)中定義一個可位尋址的單元,在此把它命名為Message_Flag,用來記
6、錄描述中斷事件發(fā)生的情況。各位的定義如下:07D605D403D2U1確認(rèn)“串口事杵發(fā)生標(biāo)志INTO事件發(fā)生標(biāo)志T1事件發(fā)生標(biāo)志30事件發(fā)生1標(biāo)憲咄叫jFlag中臬位為1表示當(dāng)應(yīng)倘爭件發(fā)主為D則當(dāng)前役有相應(yīng)的爭件發(fā)生n*Message_Flag中某位為1表示當(dāng)前有相應(yīng)的事件發(fā)生,為0則當(dāng)有沒有相應(yīng)的事件發(fā)生。LED顯示的實現(xiàn)顯示模塊結(jié)構(gòu)見圖2。以定時器TO作為LED的動態(tài)掃描的定時基準(zhǔn),TO的定時時間最大值Tseg=20ms/(8XN)(其中N為LED位數(shù)),改變Tseg的值可改變顯示的亮度。TO每隔Tseg時間向MCU申請中斷,在TO的中斷服務(wù)程序中置位相應(yīng)的標(biāo)志位(Message_Flag
7、中的DO位)。主程序檢測到此標(biāo)志位被置位后,啟動顯示模塊實現(xiàn)位段的顯示輸出。鍵盤輸入的實現(xiàn)鍵盤模塊結(jié)構(gòu)見圖3。在LED動態(tài)掃描期間,只有被點亮的LED相應(yīng)的位選線維持大約3ms的低電平,而在系統(tǒng)工作的絕大部分時間內(nèi)LED的位選線(即鍵盤的列線)維持高電平。當(dāng)有鍵被按下時,將把鍵盤的行線中某一根拉成高電平,經(jīng)或非門后,向MCU申請INT1中斷,在INT1的中斷服務(wù)程序中啟動定時時間為20ms的定時器T1。T1的定時時間到后向MCU申請T1中斷,在T1的中斷服務(wù)器程序中置位相應(yīng)的中斷申請標(biāo)志(Message_Flag中的D1位)。主程序檢測到此標(biāo)志位被置位后,啟動鍵盤掃描模塊實現(xiàn)鍵盤輸入。鍵盤輸入
8、完成(用戶按“確認(rèn)”鍵),置位鍵盤輸入確認(rèn)標(biāo)志Message_Flag中的D7位)。IC卡的讀寫IC卡的SDA、SCL經(jīng)卡座分別通過P1.0、P1.1與MCU相連。當(dāng)IC卡插入卡座時,座上的微動開關(guān)使INTO變?yōu)榈碗娖?,向MCU申請INTO中斷。在INTO中斷服務(wù)程序中置位相應(yīng)的中斷申請標(biāo)志(Message_Flag中的D2位),主程序檢測到此標(biāo)志位被置位后,啟動IC卡的讀模塊,以軟件模塊I2C協(xié)議來實現(xiàn)讀卡操作。在數(shù)據(jù)處理完成后,同樣通過軟件模塊I2C協(xié)議來完成寫卡的操作。串口通訊實際應(yīng)用中可把UART轉(zhuǎn)換成RS232C與PC相連或轉(zhuǎn)換成RS485等其它協(xié)議組成單片機網(wǎng)。MCU與外部的通訊采
9、用中斷方式,在串口的中斷服務(wù)程序中置位相應(yīng)的中斷申請標(biāo)志(Message_Flag中的D4位)。主程序檢測到此標(biāo)志位被置位后,啟動串口通訊模塊,實現(xiàn)與外部的數(shù)據(jù)通訊。主程序的設(shè)計綜上所述,主程序首先完成系統(tǒng)的初始化,然后循環(huán)檢測各中斷的中斷申請標(biāo)志,如有某標(biāo)志被置位,則啟動相應(yīng)的處理模塊完成相應(yīng)的任務(wù)。程序結(jié)構(gòu)如下(用C51編寫):vnsignedbdatamessage_flag;sbittO_int二message_flagO;sbittl_int二message_flagl;sbitintO_int二message_flag2;sbituart_int二message_flag4;sbi
10、tkb_enter二message_flag7;unsignedcharkb_buf8;unsignedcharled_buf8;unsignedcharic_buf8;unsignedcharnum_buf8;voiduum_proc(void);/*數(shù)據(jù)處理模塊*/voidledbuf_write(unsigned,unsignedint);/*數(shù)據(jù)處理*/voidsystem_init(void);/*系統(tǒng)初始化*/voiduart_commune(void);/*串口通訊模塊*/voidled_display(void);/*LED顯示*/voidkb_scan(void);/*鍵盤掃
11、描*/voidic_reader(void);/*讀IC卡*/voidic_writer(void);/*寫IC卡*/voidset_timer(unsignedinttime_len,unsignedchartype,unsignedcharid);/*設(shè)置定時器*/voidtO_int_sever(void);/*定時器TO中斷服務(wù)*/voidtl_int_sever(void);/*定時器T1中斷服務(wù)*/voidint0_int_sever(void);/*INT0中斷服務(wù)*/voidint1_int_sever(void);/*INT1中斷服務(wù)*/voiduart_int_sever(void);/*串口中斷服務(wù)*/voidmain(void)system_init();while(1)if(tO_int)led_display();if(intO_int)ic_reader();關(guān)顯加掃抗毬盤圖3継盤慎塊if(t1_int)kb_scan();if(uart_int)uart_commune();if(kb_enter)num_proc();ic_writer();ledbuf_write(num_buf,8);事件驅(qū)動的單片機程序設(shè)計是通過在中斷服務(wù)程序中置位相位標(biāo)志,把耗時的中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度房產(chǎn)代銷合作糾紛解決協(xié)議3篇
- 二零二五年度瑜伽館品牌授權(quán)合作合同3篇
- 二零二五年度汽車銷售商與汽車養(yǎng)護用品供應(yīng)商合作協(xié)議范本3篇
- 二零二五年度工傷事故賠償協(xié)議范本下載3篇
- 二零二五年度智能醫(yī)療設(shè)備研發(fā)與銷售合作協(xié)議3篇
- 2025公司向銀行借款合同范本
- 二零二五年度智能硬件設(shè)計與生產(chǎn)合同3篇
- 2025傳真廣告合同范文
- 2024版有關(guān)擔(dān)保協(xié)議書
- 二零二五年度國際貿(mào)易市場營銷推廣合同2篇
- 2024-2025學(xué)年上學(xué)期廣州初中英語九年級期末試卷
- 迪士尼樂園總體規(guī)劃
- 惠州學(xué)院《大學(xué)物理》2021-2022學(xué)年第一學(xué)期期末試卷
- 2024年世界職業(yè)院校技能大賽高職組“市政管線(道)數(shù)字化施工組”賽項考試題庫
- 2024消防安全警示教育(含近期事故案例)
- Starter Section 1 Meeting English 說課稿 -2024-2025學(xué)年北師大版(2024)初中英語七年級上冊
- 2025年蛇年年度營銷日歷營銷建議【2025營銷日歷】
- 2024年法律職業(yè)資格考試(試卷一)客觀題試卷及解答參考
- 食堂項目經(jīng)理培訓(xùn)
- 安全經(jīng)理述職報告
- 福建省泉州市2023-2024學(xué)年高一上學(xué)期期末質(zhì)檢英語試題 附答案
評論
0/150
提交評論