新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機程序設計中運用事件驅動機制

        單片機程序設計中運用事件驅動機制

        作者: 時間:2012-03-08 來源:網絡 收藏

        LED顯示的實現

        顯示模塊結構見圖2。以定時器T0作為LED的動態掃描的定時基準,T0的定時時間最大值 Tseg=20ms/(8×N)(其中N為LED位數),改變 Tseg的值可改變顯示的亮度。T0每隔Tseg時間向MCU申請中斷,在T0的中斷服務程序中置位相應的標志位(Message_Flag中的D0 位)。主程序檢測到此標志位被置位后,啟動顯示模塊實現位段的顯示輸出。

        鍵盤輸入的實現

        鍵盤模塊結構見圖3。在LED動態掃描期間,只有被點亮的LED相應的位選線維持大約3ms的低電平,而在系統工作的絕大部分時間內LED的位選線(即鍵盤的列線)維持高電平。當有鍵被按下時,將把鍵盤的行線中某一根拉成高電平,經或非門后,向MCU 申請INT1中斷,在INT1的中斷服務程序中啟動定時時間為20ms的定時器T1。T1的定時時間到后向MCU申請T1中斷,在T1的中斷服務器程序中置位相應的中斷申請標志(Message_Flag中的 D1位)。主程序檢測到此標志位被置位后,啟動鍵盤掃描模塊實現鍵盤輸入。鍵盤輸入完成(用戶按“確認”鍵),置位鍵盤輸入確認標志(Message_Flag中的D7位)。

        IC卡的讀寫

        IC 卡的SDA、SCL經卡座分別通過P1.0、P1.1與MCU相連。當IC卡插入卡座時,座上的微動開關使INT0變為低電平,向MCU申請INT0中斷。在INT0中斷服務程序中置位相應的中斷申請標志(Message_Flag中的D2位),主程序檢測到此標志位被置位后,啟動IC卡的讀模塊,以軟件模塊I2C協議來實現讀卡操作。在數據處理完成后,同樣通過軟件模塊I2C協議來完成寫卡的操作。

        串口通訊

        實際應用中可把UART轉換成RS232C與PC相連或轉換成RS485等其它協議組成網。 MCU與外部的通訊采用中斷方式,在串口的中斷服務程序中置位相應的中斷申請標志(Message_Flag中的D4位)。主程序檢測到此標志位被置位后,啟動串口通訊模塊,實現與外部的數據通訊。

        主程序的設計

        綜上所述,主程序首先完成系統的初始化,然后循環檢測各中斷的中斷申請標志,如有某標志被置位,則啟動相應的處理模塊完成相應的任務。程序結構如下(用C51編寫):

        vnsigned bdata message_flag;

        sbit t0_int=message_flag^0;

        sbit t1_int=message_flag^1;

        sbit int0_int=message_flag^2;

        sbit uart_int=message_flag^4;

        sbit kb_enter=message_flag^7;

        unsigned char kb_buf[8];

        unsigned char led_buf[8];

        unsigned char ic_buf[8];



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 湘阴县| 揭西县| 区。| 九龙县| 定陶县| 明水县| 宁强县| 平遥县| 安塞县| 凤山市| 青阳县| 福安市| 孟津县| 南华县| 加查县| 宜良县| 九龙城区| 扬州市| 福建省| 大洼县| 襄汾县| 渭源县| 搜索| 双柏县| 长丰县| 额济纳旗| 肇源县| 伊通| 长武县| 开化县| 宣武区| 宜章县| 韩城市| 城口县| 麻阳| 西丰县| 延津县| 永宁县| 台湾省| 长白| 大同县|