單片機學習之十九:串行通訊程序-單片機接收
當電腦向單片機發送一個數據后,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,#
mov th1,#
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,#
mov th1,#
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的燈光發生變化。
評論