日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]想來想去不知道要怎么樣把232串口通信說清楚,想想還是直接把代碼分析一遍吧... 重點是“常用波特率與定時器1的參數(shù)關(guān)系”這張表格!波特率的設(shè)置很重要!

想來想去不知道要怎么樣把232串口通信說清楚,想想還是直接把代碼分析一遍吧...

重點是“常用波特率與定時器1的參數(shù)關(guān)系”這張表格!波特率的設(shè)置很重要!

一、串口初始化

void usart_init()

{

SCON = 0x50; //REN=1允許串行接受狀態(tài),串口工作模式1

TMOD = 0x20; //定時器工作方式2

PCON = 0x00;

TH1 = 0xFD; //波特率9600、數(shù)據(jù)位8、停止位1。效驗位無 (11.0592M)

TL1 = 0xFD;

ES = 1; //開串口中斷

EA = 1; //開總中斷

TR1 = 1; //啟動定時器

}

SCON寄存器

 

1.SM0、SM1:串行口工作方式控制位

 

2.SM2:多機通信控制位

3.REN:允許接收位

4.TB8:發(fā)送接收數(shù)據(jù)位8

5.RB8:接收數(shù)據(jù)位8

6.TI:發(fā)送中斷標志位 TI=1表示幀發(fā)送結(jié)束

7.RI:接收中斷標志位 RI=1表示幀接收完成

 

1.GATE:門控制位 GATE=0,僅受TRX控制 GATE=1,受TRX和外部中斷引腳共同控制

2.C/T:定時器模式和計數(shù)器模式選擇器 C/T=1,計數(shù)器 C/T=0,定時器

3.M1、M0:工作方式選擇位

 

PCON寄存器

 

SMOD:是波特率是否加倍的選擇位。

SMOD=0時:波特率不加倍。

SMOD=1時:波特率加倍。

 

二、串口數(shù)據(jù)發(fā)送

void send_data(unsigned char a)

{

SBUF = a; //SUBF接受/發(fā)送緩沖器

while(0 == TI); //每次等待發(fā)送完畢,再執(zhí)行下一條

TI=0; //手動清0

}

SBUF:有兩個物理上獨立的接收、發(fā)送緩沖器SBUF,它們占用同一地址99H ;接收器是雙緩沖結(jié)構(gòu) ;發(fā)送緩沖器,因為發(fā)送時CPU是主動的,不會產(chǎn)生重疊錯誤。

TI:發(fā)送中斷標志位 TI=1表示幀發(fā)送結(jié)束

三、串口中斷程序

void ser_int (void) interrupt 4 using 1

{

if(1 == RI) //RI接受中斷標志

{

RI = 0; //清除RI接受中斷標志

ReData = SBUF; //SUBF接受/發(fā)送緩沖器

Flag=1; //標志位置1表示有新數(shù)據(jù)進來

}

}

RI:接收中斷標志位 RI=1表示幀接收完成

四、總代碼

#include

//變量聲明

unsigned char SenData, //發(fā)送數(shù)據(jù)

Flag, //標志位

ReData; //接收數(shù)據(jù)

//函數(shù)聲明

void usart_init(); //串口中斷初始化

void send_data(unsigned char a); //串口數(shù)據(jù)發(fā)送

//---------------------------

//串口中斷初始化

//---------------------------

void usart_init()

{

SCON = 0x50; //REN=1允許串行接受狀態(tài),串口工作模式1

TMOD = 0x20; //定時器工作方式2

PCON = 0x00;

TH1 = 0xFD; //波特率9600、數(shù)據(jù)位8、停止位1。效驗位無 (11.0592M)

TL1 = 0xFD;

ES = 1; //開串口中斷

EA = 1; //開總中斷

TR1 = 1; //啟動定時器

}

//---------------------------

//串口數(shù)據(jù)發(fā)送

//---------------------------

void send_data(unsigned char a)

{

SBUF = a; //SUBF接受/發(fā)送緩沖器

while(0 == TI); //每次等待發(fā)送完畢,再執(zhí)行下一條

TI=0; //手動清0

}

//---------------------------

//串口中斷程序

//---------------------------

void ser_int (void) interrupt 4 using 1

{

if(1 == RI) //RI接受中斷標志

{

RI = 0; //清除RI接受中斷標志

ReData = SBUF; //SUBF接受/發(fā)送緩沖器

Flag=1; //標志位置1表示有新數(shù)據(jù)進來

}

}

//---------------------------

//主函數(shù)

//---------------------------

void main()

{

usart_init(); //串口中斷初始化

while(1)

{

if (Flag==1) //判斷是否有數(shù)據(jù)過來,有則進入循環(huán)

{

EA=0; //進入循環(huán)之后就把總中斷關(guān)閉,防止處理過程中又有中斷進來

//----------------------該段即對接收的數(shù)據(jù)進行處理

if(ReData=='a')

SenData = 'b';

else

SenData = 'c';

send_data(SenData); //串口數(shù)據(jù)發(fā)送

//----------------------

Flag=0; //數(shù)據(jù)處理完畢后將標志位置0,表示沒有新數(shù)據(jù)要處理

EA=1; //打開總中斷,允許接收新數(shù)據(jù)

}

}

}

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

采用51單片機最小開發(fā)板,由8位自制獨立按鍵控制。單片機芯片為STC89C52RC,晶振為@12.000 mhz。8X8LED點陣屏模塊由MAX7219驅(qū)動,MAX7219包含一個自動掃描電路。你只需要把要顯示的數(shù)據(jù)發(fā)送...

關(guān)鍵字: 51單片機 MAX7219 寄存器

在現(xiàn)代電子系統(tǒng)中,串口通信(UART/USART)是一種廣泛應(yīng)用的通信方式,尤其在微控制器(MCU)領(lǐng)域。STM32系列MCU以其高性能、低功耗和豐富的外設(shè)資源,成為許多嵌入式系統(tǒng)開發(fā)的首選。在某些情況下,硬件串口資源可...

關(guān)鍵字: STM32 串口通信

在嵌入式系統(tǒng)開發(fā)的廣闊領(lǐng)域,51單片機和STM32無疑是兩種極具代表性的微控制器。對于初學(xué)者而言,選擇學(xué)習(xí)路徑時往往會面臨一個抉擇:是直接跨越51單片機,挑戰(zhàn)更高層次的STM32,還是從51開始,逐步進階?本文旨在探討直...

關(guān)鍵字: 51單片機 STM32

在現(xiàn)代嵌入式系統(tǒng)開發(fā)中,STM32微控制器(MCU)憑借其強大的功能和靈活的配置,成為了眾多開發(fā)者的首選。其中,串口通信作為MCU與外界進行數(shù)據(jù)交換的重要手段,其重要性不言而喻。本文將詳細介紹STM32的串口通信,包括其...

關(guān)鍵字: STM32 串口通信

在現(xiàn)代工業(yè)自動化控制系統(tǒng)中,可編程邏輯控制器(PLC)作為核心設(shè)備,廣泛應(yīng)用于各種工業(yè)控制場景中。然而,在某些特定情況下,我們可能需要在沒有PLC的條件下,通過計算機直接控制變頻器。此時,串口調(diào)試工具便成為了一種實用的解...

關(guān)鍵字: PLC 變頻器 串口通信

在嵌入式系統(tǒng)開發(fā)中,特別是在使用8051系列單片機(簡稱C51)進行編程時,數(shù)據(jù)類型的選擇與定義對程序的性能和可讀性至關(guān)重要。C51語言在標準C語言的基礎(chǔ)上進行了擴展,以適應(yīng)單片機特有的硬件結(jié)構(gòu)和操作需求。本文將深入探討...

關(guān)鍵字: C51數(shù)據(jù) 51單片機

在嵌入式系統(tǒng)領(lǐng)域,51單片機作為一種經(jīng)典的微控制器,廣泛應(yīng)用于各種自動化控制系統(tǒng)中。其外部引腳作為單片機與外界交互的接口,承載著數(shù)據(jù)傳輸、控制信號輸出等重要功能。本文將通過對51單片機外部引腳的案例分析,結(jié)合實際代碼,深...

關(guān)鍵字: 51單片機 單片機

在電子技術(shù)的浩瀚星空中,LED(發(fā)光二極管)以其獨特的魅力成為了一顆璀璨的明星。而結(jié)合51單片機這一經(jīng)典的嵌入式開發(fā)平臺,LED的應(yīng)用更是被賦予了無限可能,其中,花樣流水燈便是一個生動而富有創(chuàng)意的實例。本文將帶您深入探索...

關(guān)鍵字: 51單片機 LED

在現(xiàn)代嵌入式系統(tǒng)設(shè)計中,51單片機作為一種經(jīng)典的微控制器,憑借其豐富的功能和廣泛的應(yīng)用領(lǐng)域,仍然受到工程師們的青睞。定時器中斷是51單片機中一個非常實用的功能,它可以在特定的時間間隔內(nèi)自動觸發(fā)中斷,執(zhí)行預(yù)設(shè)的操作,從而提...

關(guān)鍵字: 51單片機 定時器

UART(通用異步收發(fā)器)串口通信是FPGA設(shè)計中常見的通信方式之一。本文將介紹FPGA入門基礎(chǔ)中的UART串口通信設(shè)計,并附上相應(yīng)的代碼示例。

關(guān)鍵字: UART 串口通信 verilog
關(guān)閉