μC/OS和80C51的固話(huà)來(lái)電防火墻設計
3 μC/OS硬件層驅動(dòng)程序設計
3.1 異步串行口驅動(dòng)程序
當使用中斷模式時(shí),從接收移位寄存器接收到一個(gè)完整的字節,并將數據送入數據輸入寄存器,產(chǎn)生一個(gè)中斷。中斷處理程序從端口讀入字節,清除中斷源。這時(shí),可以處理ISR收到的字節,或者將字節送入緩沖區由后臺處理,緩沖區大小依賴(lài)于后臺進(jìn)程控制CPU處理信息的速度。從串行端口捕捉數據時(shí),常用一種被稱(chēng)作環(huán)形緩沖區的專(zhuān)用緩沖區。
輸入數據的響應依賴(lài)于后臺進(jìn)程的執行速度。如果是實(shí)時(shí)內核,則處理輸入數據的速度就與ISR接收不處理的速度差不多。為此,環(huán)形緩沖區的管理加入了信號量說(shuō)明:
①應用程序等待信號量。
②接收到一字節后,ISR從串行端口讀入字節。
③將接收到的字節送入環(huán)形緩沖區。
④ISR釋放一個(gè)信號量,通知任務(wù)已經(jīng)接收到一字節。
⑤信號量有效,等待任務(wù)準備開(kāi)始運行。ISR完成后,內核決定等待任務(wù)是否成為優(yōu)先級最高的任務(wù)。如果是,并且內核為可剝奪型內核,則恢復等待字節的任務(wù)。該任務(wù)從環(huán)型緩沖區取出數據,并執行相關(guān)操作。
3.2 基于μC/OS—II的串行口接收驅動(dòng)
單片機對串口的支持僅僅是當數據送入SBUF時(shí)開(kāi)始移位,但收到一個(gè)完整的字節后產(chǎn)生中斷,通知用戶(hù)進(jìn)行讀操作。在P89C668中,串行口并沒(méi)有設計緩沖區,接收移位寄存器直接將數據送到接收SBUF,如果沒(méi)有及時(shí)從接收SBUF中取出,前一字節就會(huì )丟失。如果沒(méi)有驅動(dòng)程序的支持,應用程序必須一字節一字節地接收數據,不但浪費時(shí)間,而且對應用程序的編制將產(chǎn)生極大影響。所以,在使用串口的時(shí)候,串口驅動(dòng)程序是必須有的,通過(guò)驅動(dòng)程序,可以大大簡(jiǎn)化應用程序的編寫(xiě)。
針對P89C668片內UART和μC/OS—II的特性,設計了分層明確的驅動(dòng)模型,串口接收分層驅動(dòng)結構圖略——編者注。
任務(wù)在對環(huán)形緩沖區進(jìn)行操作的時(shí)候,通過(guò)等待信號量,確定緩沖區是否允許操作。同時(shí),中斷服務(wù)子程序通過(guò)釋放信號量來(lái)通知任務(wù)可以對緩沖區進(jìn)行操作,大大提高了任務(wù)的響應時(shí)間。
4 系統軟件設計
根據硬件構成,系統軟件可分為來(lái)電解碼、顯示、鍵盤(pán)、判決、存儲幾大模塊。模塊在μC/OS—II的調度之下運行。
防火墻在值守狀態(tài)時(shí),各模塊處于掛起態(tài)。當系統檢測到鈴流,將運行來(lái)電解碼模塊,并將解得的號碼通知μC/OS—II。μC/OS—II將通過(guò)判決模塊判斷來(lái)電屬性,執行相應動(dòng)作。程序流程如圖8所示。本文引用地址:http://dyxdggzs.com/article/148143.htm
結語(yǔ)
本文設計了基于μC/OS和80C51單片機的固話(huà)來(lái)電防火墻。介紹了電話(huà)機的基本工作原理,對硬件主要模塊進(jìn)行了詳細地分解分析。對軟件基本流程和設計思路進(jìn)行了闡述。整個(gè)系統通過(guò)了實(shí)際產(chǎn)品的最終驗證,達到設計要求。
交換機相關(guān)文章:交換機工作原理
評論