日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

歷史上的今天

今天是:2025年08月06日(星期三)

2021年08月06日 | 51單片機之UART

發(fā)布者:嶺南布衣 來源: eefocus關鍵字:51單片機  UART 手機看文章 掃描二維碼
隨時隨地手機看文章

串口相關寄存器配置

51單片機串口相關的寄存器有SBUF,SCON,PCON,以及與定時器1(T1)相關的寄存器。


SBUF:串口緩沖寄存器,物理上實際有兩個寄存器,地址重疊而已,一個用來發(fā)送,一個用來接受。通過讀或者寫不同操作,才操作不同寄存器,設計在一起是為了簡化操作。寫入SBUF寄存器的數(shù)據(jù)會通過TXD引腳發(fā)送出去,從RXD引腳的數(shù)據(jù)可以通過讀SBUF獲取。


SCON:串口配置寄存器。

image.png

SM0和SM1決定了串口的工作方式

image.png

10位UART是我們常用的模式,包括起始位,8個數(shù)據(jù)位(SBUF),一個停止位。11位UART多了一個數(shù)據(jù)位(TB8,發(fā)送數(shù)據(jù)的第八位;RB8,接受數(shù)據(jù)的第八位)。波特率可變是由于此時的定時器1 作為UART的時序信號,定時器1的溢出率決定了波特率,同時也受到PCON種的SMOD位的加倍影響。


SM2是多機通信控制位。只有用到了11位UART才會將SM2置1。


REN是接受使能,REN=1時,允許接收,REN=0時,禁止接收。


TI和RI分別是發(fā)送和接受中斷標志位,當完成一次發(fā)送或者接收會將相應的標志位硬件置1,必須要軟件清“0”。當設置了串口中斷,還會進入中斷函數(shù)。注意這兩者會進入同一個中斷函數(shù),注意判斷標志位來區(qū)別到底是放松中斷還是軟件中斷。


PCON:電源控制寄存器,其實只有最高位SMOD對串口有影響,SMOD=1,波特率加倍,SMOD=0,波特率不加倍。


T1相關寄存器的配置:使用可變波特率,T1一般用8位自動重裝載模式,最關鍵的是確定T1的自動重裝數(shù)RELOAD,步驟如下:


計算RELOAD(SMOD=0時)

a) 12T模式的計算公式:RELOAD=256-(int) (Fosc/Baud0/32/12+0.5)

b) 1T模式的計算公式:RELOAD=256-(int) (Fosc/Baud0/32+0.5)

式中: (int) (X+0.5)表示對X進行四舍五入

Fosc晶振頻率

Baud0標準波特率

計算用RELOAD產生的波特率

a) 12T Baud = Fosc/(256-RELOAD)/32/12

b) 1T Baud = Fosc/(256-RELOAD)/32

計算誤差

error=(Baud-Baud0)/Baud0*100%

如果絕對誤差>4.5% 要更換波特率頻率或更換晶振頻率,再重復1-4

上面的步驟來自于STC的官方手冊。上面提到的12T模式是大多數(shù)51單片機的工作模式,STC的后續(xù)單片機支持1T模式,速度會快12倍。


串口的使用

下圖展示了一些常用重裝值(RELOAD)配置

RELOAD

對于常用的11.0592Mhz晶體下,9600Baud配置的代碼封裝成C文件和H文件,方便調用


uart.h文件


#ifndef __UART_H

#define __UART_H


#include


void Uart_Init(void);

void Uart_SendData(unsigned char dat);

void Uart_SendString(unsigned char *s);


#endif


uart.c文件


#include "uart.h"


void Uart_Init(void)

{

SCON  = 0x50;         // SCON: 模式 1, 8位UART, 接收使能  

TMOD |= 0x20;               // TMOD: Timer1,模式2, 8位自動重裝

TH1   = 0xFD;               // TH1:  重裝值 波特率:9600 晶振:11.0592MHz  

TR1   = 1;                  // TR1:  Timer1打開                         

EA    = 1;                  //打開總中斷

//ES    = 1;                  //打開串口中斷

}


void Uart_Isr() interrupt 4 using 1

{

    if (RI)

    {

        RI = 0;             //清除接收標志位

        

    }

    if (TI)

    {

        TI = 0;             //清除發(fā)送標志位

    }

}


void Uart_SendData(unsigned char dat)

{

SBUF = dat;

while (!TI);

TI=0;

}


void Uart_SendString(unsigned char *s)

{

while (*s)

Uart_SendData(*s++); 

}

關鍵字:51單片機  UART 引用地址:51單片機之UART

上一篇:基于8051實現(xiàn)的雙倒計時器(Version1.1)
下一篇:51單片機之最簡系統(tǒng)

推薦閱讀

  4日,在位于武漢東湖高新區(qū)的長江存儲科技有限責任公司(國家存儲器基地),紫光集團聯(lián)席總裁刁石京透露,中國首批擁有自主知識產權的32層三維NAND閃存芯片將于今年第四季度在此實現(xiàn)量產?! ≈行律缬浾?張斌 攝  據(jù)悉,長江存儲于2017年成功研發(fā)中國首顆32層三維NAND閃存芯片,并獲得中國電子信息博覽會(CITE2018)金獎?! ∵@顆芯片,耗資10億美...
人類是否會被機器人取代,很難說,如果從更大的文明的角度來看,它真的被取代了,那也是一種進化,但在我們面前,我們只談論現(xiàn)在,在這個時代,什么工作最有可能被機器人淘汰?干什么最不容易被淘汰?如果你的工作包括以下三種技能要求,那么被機器人取代的可能性很小,社交能力、協(xié)商能力、以及人情練達的藝術;同情心,以及對他人真心實意的扶助和關切...
早些時候,哈佛研究人員展示了受折紙技藝啟發(fā)的可編程氣球方案?,F(xiàn)在,密歇根大學的一支研究團隊,也開發(fā)出了一種可折疊微型機器人的原型。據(jù)悉,該機器人能夠被折疊成不同的形狀,然后通過加熱來應對不同的任務。 (來自:University of chigan) 因體積小巧,這類機器需要創(chuàng)新的動力與驅動解決方案,否則只能執(zhí)行相對有限的任務。不過密歇根大學...
作為 Android 移動設備陣營的領導者之一,三星電子在智能機市場的進展卻不大順利。正如韓媒在近日的一篇報道中所強調的那樣,這家電子巨頭的旗艦產品線,正在逐年失去吸引力。與此同時,中國手機品牌正在全球市場奮起直追?! aver.com 援引 Counterpoint 數(shù)據(jù)稱,即使追溯到 Galaxy S5 時代,Galaxy S21 系列都未能復刻任何前輩的成...

史海拾趣

問答坊 | AI 解惑

簡易逆變器電路.jpg

本帖最后由 paulhyde 于 2014-9-15 09:10 編輯 簡易逆變器電路.jpg  …

查看全部問答∨

數(shù)據(jù)取樣系統(tǒng)

數(shù)據(jù)取樣系統(tǒng)…

查看全部問答∨

6410,RTC時間保存問題??

好長時間沒上eeworld上問問題了。。 請教個問題:6410的平臺, 冷啟動后,時間沒有保存,一直是1980年,請問是什么原因。 硬件配置:系統(tǒng)斷電后,RTC時鐘正常,VDD_RTC引腳,有3V電壓?!?

查看全部問答∨

vxWorks 6.2 中的浮點運算問題

CPU :AMCC-440EPx 操作系統(tǒng) :VxWorks 6.2 開發(fā)環(huán)境 :WorkBench 2.4 當使用浮點運行時,結果不正確,在Config.h配置了以下內容: #undef INCLUDE_SW_FP #define INCLUDE_HW_FP #define INCLUDE_FLOATING_POINT AMCC-440EPx支持硬件浮點運 ...…

查看全部問答∨

超級愛好者

學習單片機要哪幾方面的知識?謝謝…

查看全部問答∨

LM3s9b96例程ptpd歷程協(xié)議缺失

最近調9b96的ptpd例程,發(fā)現(xiàn)歷程中的ptp協(xié)議沒寫全,時間同步是能夠實現(xiàn),但是同步精度太低了,并且把實驗板作為主時鐘比較困難,那位大神做過這個,有沒有更全的ptp協(xié)議,或者更好的建議,謝謝!…

查看全部問答∨

D題自激振蕩怎么消除啊?。。。。。。。?!

D題自激振蕩怎么消除?。。。。。。。。?!…

查看全部問答∨

波形采集存儲顯示程序

最近在搞波形采集存儲及顯示程序,原理基本可以搞懂。就是先采集模擬信號經AD轉換成數(shù)字信號,用flash進行存儲,再通過12864進行顯示,但是具體到程序就難以下手,請大俠給點幫助…

查看全部問答∨

MSP430單片機中的看門狗定時器研究

引 言  軟件的可靠性一直是一個關鍵問題。任何使用軟件的人都可能會經歷計算機死機或程序跑飛的問題,這種情況在嵌入式系統(tǒng)中也同樣存在。由于單片機的抗干擾能力有限,在工業(yè)現(xiàn)場的儀器儀表中,常會由于電壓不穩(wěn)、電弧干擾等造成死機。在水表、 ...…

查看全部問答∨

畢業(yè)設計:特定人,孤立詞的語音識別,是否可行?

請教各位大大:小弟的畢業(yè)設計想做個語音識別的模塊,如:能夠實現(xiàn)識別“前進,后退,向左,向右”這幾個特定詞。想把這個控制加到做的小車上去?,F(xiàn)在的疑問就是這個語音識別是否可實現(xiàn)?方案該如何設計,或者是我要去學哪些原理的東西?,F(xiàn)在個人的 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved