微控制器的串列埠通訊看起來是很複雜的,主要是因為他用到了更多的暫存器,與前面的知識相比他更具綜合能力,寫起來考慮的問題自然也變多了.而前面學習過的定時器與中斷將是微控制器通訊的基礎.
微控制器的中斷系統中第4個中斷就是串列埠中斷,要進行串列埠通訊首先就要開啟cpu總中斷ea,還要開啟串列埠通訊中斷es,這是串列埠通訊的前堤,而串列埠通訊也跟計時器一樣有很多的模式,因此我們還要設定scon暫存器來指定採用哪一種方式進行通訊,而在通訊的過程中,我們還要設定通訊的波特率,不然的話,微控制器是沒辦法進行取樣的,這樣也不會得到正確的結果了.我在實驗過程中用到的是1號定時器來設定的波特率,用到了計時器方式2,也就是8位自動重灌,這樣可以簡化程式設計,她的實現思想就是將常數放入th,而tl中則是初始化引數,當溢位時,微控制器會自動將th中的常數裝入tl中.
再來說說波特率,我們為什麼要設定波特率,因為微控制器會以16倍波特率的速度進行取樣,而在實驗中我們用的是10位非同步收發方式,因此要將sm0置0,sm1置1.而其中的10位有8位資料位,第一位和最後一位是傳送資料的起始與結束.採用高的皮特率就不會出錯啦.而波特率是有乙個公式的:
方式0的波特率 = fosc/12
方式2的波特率 =(2smod/64)· fosc
方式1的波特率 =(2smod/32)·(t1溢位率)
方式3的波特率 =(2smod/32)·(t1溢位率)
t1 溢位率 = fosc /
根據公式我們很容易就算出當晶振為110592hz時,要達到9600的波特率,我們只需要將tl1置fdh即可,如下圖:
除此之外,你還要將scon中的ren位置1,不然的話,微控制器是不會接收資料的.
還有不要忘了選擇定時器的工作方式,設定tmod為0x20既是工作方式2,8位自動重灌定時器.
這樣一來,初始批工作算是差不多了.而串列埠通訊分為中斷方式,和查詢方式,如果你想用查詢方式你也不用設定ie暫存器了.
在串列埠通訊中,還有乙個很重要的暫存器sbuf,其實也不是乙個,是兩個,只是它們共用同乙個位址,再熱氣表示式的不同,微控制器會自動選擇使用哪乙個sbuf.
51微控制器串列埠通訊
1 並行通訊 傳送方和接收方用多根資料線連線,多位資料同時傳送。傳輸線多,長距離傳輸時成本大。2 序列通訊 單根資料線傳送資料,逐位傳送。長距離傳送成本低,但控制相對複雜。序列通訊又可分為 非同步序列通訊和同步序列通訊。非同步序列通訊 所謂 非同步 指的是雙方裝置使用各自的時鐘,以字元為單位傳輸,採...
51微控制器之串列埠通訊(一)
1.序列通訊和並行通訊 目前用的比較多的是序列通訊。序列通訊優點是連線簡單,傳輸距離遠 缺點是傳輸速度慢。2.序列通訊 分為同步通訊和非同步通訊 非同步通訊是指傳送和接收裝置利用各自的時鐘控制資料的傳送和接收。3.序列通訊的傳輸方向 單工,半雙工,全雙工。4.波特率 每秒鐘傳輸2進製 的位數,如1個...
51微控制器 UART串列埠通訊
使用半雙工通訊 使用硬體uart模組和串列埠中斷 include typedef unsigned int uint void configuart uint baud void main void configuart uint baud 中斷型別碼為4,中斷向量的位址 中斷型別碼 8 3 voi...