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

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

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

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

一、串口初始化

void usart_init()

{

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

TMOD = 0x20; //定時(shí)器工作方式2

PCON = 0x00;

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

TL1 = 0xFD;

ES = 1; //開(kāi)串口中斷

EA = 1; //開(kāi)總中斷

TR1 = 1; //啟動(dòng)定時(shí)器

}

SCON寄存器

 

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

 

2.SM2:多機(jī)通信控制位

3.REN:允許接收位

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

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

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

7.RI:接收中斷標(biāo)志位 RI=1表示幀接收完成

 

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

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

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

 

PCON寄存器

 

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

SMOD=0時(shí):波特率不加倍。

SMOD=1時(shí):波特率加倍。

 

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

void send_data(unsigned char a)

{

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

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

TI=0; //手動(dòng)清0

}

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

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

三、串口中斷程序

void ser_int (void) interrupt 4 using 1

{

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

{

RI = 0; //清除RI接受中斷標(biāo)志

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

Flag=1; //標(biāo)志位置1表示有新數(shù)據(jù)進(jìn)來(lái)

}

}

RI:接收中斷標(biāo)志位 RI=1表示幀接收完成

四、總代碼

#include

//變量聲明

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

Flag, //標(biāo)志位

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; //定時(shí)器工作方式2

PCON = 0x00;

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

TL1 = 0xFD;

ES = 1; //開(kāi)串口中斷

EA = 1; //開(kāi)總中斷

TR1 = 1; //啟動(dòng)定時(shí)器

}

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

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

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

void send_data(unsigned char a)

{

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

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

TI=0; //手動(dòng)清0

}

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

//串口中斷程序

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

void ser_int (void) interrupt 4 using 1

{

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

{

RI = 0; //清除RI接受中斷標(biāo)志

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

Flag=1; //標(biāo)志位置1表示有新數(shù)據(jù)進(jìn)來(lái)

}

}

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

//主函數(shù)

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

void main()

{

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

while(1)

{

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

{

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

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

if(ReData=='a')

SenData = 'b';

else

SenData = 'c';

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

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

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

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

}

}

}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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