新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于串口通信的單片機仿真和C語言開發

        基于串口通信的單片機仿真和C語言開發

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

        2. 選擇波特率發生器

        選擇定時器1或定時器2 做為其波特率發生器。

        3. 設置定時器工作方式

        當選擇定時器1 做為波特率發生器時,需設置其方式寄存器TMOD 為計數方式并選擇相應的工作方式(一般選擇方式2 以避免重裝定時器初值);當選擇定時器2 做為波特率發生器時,需將T2CON 設置為波特率發生器工作方式。

        4. 設置波特率參數

        影響波特率的參數有二,一是特殊寄存器PCON 的SMOD 位,另一個是相應定時器初值。

        5. 允許串行中斷

        因在程序中我們一般采有中斷接收方式,故應設EA=1、ES=1.

        6. 允許接收數據

        設置 SCON 中的REN 為1.表示允許串行口接收數據。

        7. 允許定時/計數器工作

        此時開啟定時/計數器,使其產生波特率8. 編寫串行中斷服務程序。

        當有數據到達時,系統將自動執行所編寫的中斷服務程序。

        9. 收/發相應數據

        注意的是發送操作完成需將T1清零,接收工作完成后需將R1清零。

        5.2 程序設計

        5.2.1 主程序設計

        主程序主要完成硬件初始化、子程序調用等功能。

        1. 初始化。

        首先調用 LCD 初始化程序,在LCD 上顯示數據RECEIVE:和TEMP is: *C.

        然后調用中斷及初始化子程序程序,把接收數據單元RECDATA 清零。設置寄存器SCON 的SM0、SM1 位定義串口工作方式,選擇波特率發生器為定時器T1;設定定時器T1 工作方式為方式2;設置波特率參數為9600bps;允許串行中斷及總中斷;允許串口接收數據,定義REN=1;啟動定時/計數器T1 工作,定義TR1=1.

        2. 串口收發數據。

        判斷串口成功接收數據標志位flag_uart 是否為0,若flag_uart 為0,表明串口未接收到數據,則繼續等待串口接收數據;若flag_uart 為1,表明串口成功接收或發送數據,進入串口中斷服務子程序,接收數據,并將串口成功接收數據標志位flag_uart 清零,調用LCD 顯示接收數據子程序,在LCD 上顯示從串口接收到的數據,同時回傳溫度值給PC機顯示。主程序設計流程圖如圖5.1 所示。

        圖 5.1 主程序流程圖
        圖 5.1 主程序流程圖

        5.2.2 串口中斷服務子程序

        判斷串口發送標志位TI 是否為1,若TI 為1,則把數據從發給PC 機,并把TI清零,中斷子程序返回;若TI為0,表明RI=0,則把串口接收標志位RI清零,把串口接收緩沖器SBUF 中的數據寫入串口接收數據單元RECDATA,再把該數據送到串口發送緩沖器SBUF 中,傳給PC 機,置串口成功接收數據標志位RECOKBIT 為1,表明串口成功接收發送數據,最后中斷子程序返回。串口收發數據中斷服務子程序設計流程圖如圖5.2 所示。

        圖5.2 串口中斷服務子程序
        圖5.2 串口中斷服務子程序



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 门头沟区| 太湖县| 沙河市| 华蓥市| 满城县| 秀山| 德钦县| 讷河市| 湘西| 潞城市| 福清市| 特克斯县| 广元市| 安西县| 罗城| 车险| 壶关县| 汤原县| 乌拉特后旗| 张家川| 六盘水市| 耿马| 黄骅市| 武川县| 健康| 西安市| 西吉县| 荆州市| 六安市| 收藏| 红河县| 越西县| 屏东市| 怀集县| 循化| 永福县| 墨江| 宁都县| 应城市| 宜良县| 体育|