新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機學習之十九:串行通訊程序-單片機接收

        單片機學習之十九:串行通訊程序-單片機接收

        作者: 時間:2016-11-18 來源:網絡 收藏
        一、實驗現象:

        本文引用地址:http://www.104case.com/article/201611/315893.htm

        當電腦向單片機發送一個數據后,P0口發生燈光變換。

        二、實驗任務分析:

        這個試驗我們仍然采用方式1來完成。在上一個試驗的通訊理論介紹中,我們知道,當單片機接受到一幀信號后,會置位串行口接受中斷標志RI,從而向單片機申請中斷。如果單片機開放中斷,就會進入中斷服務程序,我們就把燈光變化的任務放到中斷程序中來完成即可。

        當然,這個試驗功能的實現不只是這么一種方法。我們還可以采用在主程序中查詢RI的方式來實現。這個試驗我們就分別用這兩種方式來現它。同樣,在這個試驗中,我們也利用串口調試助手來完成向單片機發送數據的過程。具體設置方法可見下圖:

        三、實驗程序

        1、 中斷方式實現

        org 0000h

        ajmp main

        org 0023h ;串行口中斷入口地址

        ajmp serial ;跳轉至中斷服務程序

        main: clr p1.5

        mov p0,#55h ;讓8個led從右到左依次為亮、滅(注意跳線jmp0置于12)

        mov scon,#50h ;單片機工作于方式1,可以接受數據

        mov tmod,#20h ;T1設置為工作方式2

        mov tl1,#0f3h ;按照波特率為2400計算初值

        mov th1,#0f3h ;把計數初值送入常數緩沖器

        mov pcon,#80h ;smod=1,波特率變成4800

        setb tr1 ;啟動定時器T1開始定時

        setb ea ;cpu開放中斷

        setb es ;開放串行口中斷

        ajmp $ ;等待中斷

        serial: clr ea ;cpu關閉中斷

        clr ri ;清除串口接受中斷標志

        mov a,p0

        cpl a

        mov p0,a ;p0口燈光變化

        setb ea ;cpu開放中斷

        reti ;返回主程序,等待下一次響應中斷

        end

        2、 查詢方式實現:

        org 0000h

        ajmp main

        main: clr p1.5

        mov p0,#55h ;讓8個led從右到左依次為亮、滅(注意跳線jmp0置于12)

        mov scon,#50h ;單片機工作于方式1,可以接受數據

        mov tmod,#20h ;T1設置為工作方式2

        mov tl1,#0f3h ;按照波特率為2400計算初值

        mov th1,#0f3h ;把計數初值送入常數緩沖器

        mov pcon,#80h ;smod=1,波特率變成4800

        setb tr1 ;啟動定時器T1開始定時

        wait: jnb ri,wait ;如果停止位是0,表示信息沒有發送完畢,等待

        clr ri ;清除停止位

        mov a,p0

        cpl a

        mov p0,a ;p0口燈光變化

        ajmp wait

        end

        把上面的程序下載到測試板上,然后在串口調試助手中隨便寫入一個數據,每一次按下串口調試程序中的手動發送按鍵,就會發現led的燈光發生變化。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 贵溪市| 兰州市| 江阴市| 罗山县| 桂东县| 曲阳县| 定远县| 云龙县| 客服| 高淳县| 六安市| 呼伦贝尔市| 奉节县| 开远市| 芒康县| 海兴县| 游戏| 错那县| 儋州市| 上饶县| 河南省| 垣曲县| 萨嘎县| 洪泽县| 麻栗坡县| 都昌县| 通海县| 林甸县| 长武县| 石台县| 蕉岭县| 礼泉县| 澳门| 年辖:市辖区| 双辽市| 武鸣县| 岳池县| 沾益县| 甘洛县| 团风县| 忻城县|