導航:首頁 > 操作系統 > 51單片機串口初始化

51單片機串口初始化

發布時間:2022-06-10 02:38:04

『壹』 51單片機中串口如果只用來下載程序程序,還要初始化嗎

只用來下程序,你的程序中不用串口就不需要初始化。凡是能夠用串口下載程序的單片機,內部都有自舉程序,這個程序是隱藏的,不佔用用戶程序空間,在自舉程序中會對串口初始化,但一旦脫離自舉程序把許可權交給用戶,進行了一次類似手機恢復出廠設置的動作,你程序中再次使用串口時還是得初始化。

『貳』 51單片機 多機串口通信,這樣初始化有錯嗎

1.設置定時器1的工作方式
2.設置串口的工作方式
3.設置波特率
4.開總中斷,開串口中斷
5.啟動定時器1

『叄』 51單片機串口初始化步驟,首先初始化那個在初始化那個,最好是華為等大公司的初始化模版

設置系統時鍾-》設定分頻-》設定引腳輸出輸入方式(推挽或漏極開路)-》設定定時器1工作模式在八位自動重載模式-》載入定時器初始值-》開啟定時器1-》開啟串口0中斷使能-》開啟總中斷使能-》開啟串口0接受允許-》設定串口0工作模式-》初始化完成。
將數據壓入發送緩沖寄存器
用while
語句等待發送標志位被置位
然後清0,以為數據發送完成。

『肆』 兩個串口的51單片機的串口初始化與中斷的問題

不能,兩個串口不能用同一個時鍾,一個得用TIM1,一個得用BRT。

『伍』 51單片機如何初始化成8-n-1(8數據位,無奇偶校驗位,1停止位)波特率,是用串口的模式幾

void
uart_init(void)
{
SCON
=
0x50
;//串列方式1,
8-bit數據位,允許接收
TMOD
|=
0x21;//定時器1使用模式2,8-bit自動重裝用於產生波特率
//
PCON
|=
0x80;//SMOD=1;波特率增倍
PCON
&=
0x7f;//SMOD=0;波特率不增倍
TH1
=
0xfd;
//Baud:19200(SMOD=1)或9600(SMOD=0),11.0592MHz
IE
|=
0x90;
//全局中斷開,允許串口中斷
TR1
=
1;
//定時器1運行,開始產生波特率
}
你可以用串口監視工具來查看單片機發出的數據是否正確,祝你成功

『陸』 C51單片機串口初始化

可以通過緩沖區或者switch語句來實現
字元命令的話一般要buff區緩沖數據最後一次處理
這樣的只要switch語句就可以解決了。
在串口中斷加入如下代碼:
void
uartinterrupt(void)
interrupt
4//串口中斷
{
static
unsigned
char
cont;//接收計數
unsigned
char
temp;//臨時變數
if(ri)
{
ri
=
0;
switch(cont)
{
case
0:if(sbuf==0x1b){cont=1;return;}//檢測第一個起始碼
case
1:temp=sbuf-'0';temp=1<
評論
0
0
載入更多

『柒』 單片機串口初始化作用是什麼initUart()函數的作用是什麼

初始化顧名思義就是初始配置,不同的使用有不同的配置.
如果只是為了做一個類似點亮一個LED的話,就不用初始化了.
它並不是程序所必要的.
你若用了定時器,設置波特率,及中斷等,那你就得初始化,當然初始化並不是非要寫成一個函數.
它也可以直接寫到main函數的過程中,只是單獨放到一個函數中便於閱讀程序.
一般分四個步驟:
1)將相應的引腳配置成UART模式
2)配置和使能UART,包括配置波特率,是否使用FIF0,數據幀格式(數據長度,停止位,奇偶校驗,收發數據緩沖區大小等)
3)配置中斷(一般分3大類,共7種)
4)讀寫數據

『捌』 51單片機Keil C51下使用printf輸出到串口,為何初始化了串口之後就可以使用了

因為是這樣的,在Keil\C51\LIB目錄下有個putchar.c文件,printf函數會調用該文件中的
putchar函數,putchar裡面的使用的寄存器都是標准51的(如TI,SBUF),它
們的地址是固定的,由此可知printf函數只針對串口0。

如果想讓printf函數支持串口1或串口2。。。那麼修改putchar函數的寄存器即可,比如SBUF改為SBUF1。但是能不能用printf函數對串口0,串口1。。。都適用呢

或者重定義putchar函數。

『玖』 C51單片機串口初始化為何是這樣:SCON=0X52;TMOD=0X20;TH1=0XF3;TR1=1;

SCON-串列口控制寄存器:可位定址,單片機復位時,各位都被清 SM0、SM1:串列通信方式選擇位。SM0SM1工作方式功能說明波特率00方式0同步移位寄存器方式osc f /1201方式18位非同步通信方式可變,由定時器控制10方式29位非同步通信方式osc f /32 或osc f /6411方式39位非同步通信方式可變,由定時器控制 SM2:多機通信控制位。在方式0時,SM2必須為0。在方式1時,若SM2=0,RB8是接受到的停止位;若SM2=1,則只有收到有效的停止位才會激活中斷RI,若沒有接受到有效停止位,則RI清0。在方式2或3時,如果SM2 = 1,則只有當接收到的第9位數據(RB8)為「1」時,才使RI置「1」,產生中斷請求,並將接收到的前8位數據送入SBUF。當接收到的第9位數據(RB8)為「0」時,不提出中斷,接收到的前8位數據無效。若SM2 = 0,接收到RB8後必然置位RI,產生中斷,此時不論地址幀還是數據幀都能接收。REN:接收控制位。由軟體置1或清0,「0」即禁止接收。「1」允許接收。TB8:發送數據的第9 位。方式2和方式3,TB8是要發送的第9位數據,其值由軟體置「1」或清「0」。在雙機串列通信時,一般作為奇偶校驗位使用;在多機串列通信中用來表示主機發送的是地址幀還是數據幀,TB8=1為地址幀,TB8=0為數據幀。RB8:接收數據的第9位。方式2和方式3,RB8存放接收到的第9位數據。在方式1,如SM2 = 0,RB8是接收到的停止位。在方式0,不使用RB8。TI:發送中斷標志位。發送數據前由軟體清0,發送結束由硬體置1。方式0,發送完8位數據時TI由硬體置「1」,其他方式中,發送停止位時置TI 為「1」。其狀態可供軟體查詢,也可請求中斷RI:接收中斷標志位。接收前由軟體清0,接收完時由硬體置「1」。方式0時,接收完第8位數據RI由硬體置「1」。在其他工作方式中,串列接收到停止位的中間時,該位置「1」。 其狀態可供軟體查詢,也可請求中斷 TMOD-定時器控制寄存器:不按位定址,高四位控制T1,低四位控制T0。地址89HB7B6B5B4B3B2B1B0GATEC/TM1M0GATEC/TM1M0GATE :定時操作開關控制位,當GATE=1時,INT0或INT1引腳為高電平,同時TCON中的TR0或TR1控制位為1時,計時/計數器0或1才開始工作。若GATE=0,則只要將TR0或TR1控制位設為1,計時/計數器0或1就開始工作。C/T :定時器或計數器功能的選擇位。C/T=1為計數器,通過外部引腳T0(P3.4)或T1(P3.5)輸入計數脈沖。C/T=0時為定時器,由內部系統時鍾提供計時工作脈沖。M1 :模式選擇位高位M0 :模式選擇位低位M1M0工作模式0013位計數/計時器0116位計數/計時器108位自動載入計數/計時器11定時器1停止工作,定時器0分為兩個獨立的8位定時器TH0及TL0 SCON=0X52 :選擇8位非同步通信方式,波特率可變,由定時器控制;允許接受;發送中斷標志、接收中斷標志分別為1、0TMOD=0X20:使用定時器1,8位自動載入計時器TH1=0XF3:設置8位自動載入計時器定時時間,設定波特率為9600TR1=1:啟用定時器1

閱讀全文

與51單片機串口初始化相關的資料

熱點內容
編譯原理如何運用到編程中 瀏覽:14
linux選擇資料庫 瀏覽:375
php兩個數組差集 瀏覽:978
迷你pdf閱讀器下載 瀏覽:432
做一個python小程序 瀏覽:654
pythonossystem和 瀏覽:644
win2008如何搭建ftp伺服器 瀏覽:53
安卓手機為什麼不翻牌 瀏覽:545
刪除pkpm及相關文件夾 瀏覽:480
房貸解壓銀行內部流程 瀏覽:734
安卓手機如何更改語音 瀏覽:599
android紅包實現 瀏覽:733
蘋果的nvme為什麼安卓不用 瀏覽:31
python輸入單詞統計個數 瀏覽:997
腳本軟體提取源碼 瀏覽:281
程序員能給自己的微信錢包刷錢么 瀏覽:72
怎麼讓小天才app查看寶貝的通訊錄 瀏覽:623
dxgpdf 瀏覽:257
哪個命令 瀏覽:51
文件不能打包壓縮 瀏覽:708