娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年06月27日(星期五)

正在發生

2020年06月27日 | STC89C52_51單片機_串口配置_UART串口通信

發布者:二進制游俠 來源: eefocus關鍵字:STC89C52  51單片機  串口配置  UART 手機看文章 掃描二維碼
隨時隨地手機看文章

寄存器配置

PCON電源管理寄存器

位序號 D7 D6 D5 D4 D3 D2 D1 D0

位符號 SM0 SM1 SM2 REN TB8 RB8 TI RI

– 模式 模式 模式1直接清零 使能串口接收 模式1接收停止位 發送標志位,軟件清零 接受標志位,軟件清0

//不能位尋址


SCON串口控制寄存器

位序號 D7 D6 D5 D4 D3 D2 D1 D0

位符號 SM0 SM1 SM2 REN TB8 RB8 TI RI

– 模式 模式 模式1直接清零 使能串口接收 模式1接收停止位 發送標志位,軟件清零 接受標志位,軟件清0

/*  SCON  */

sbit SM0   = SCON^7;

sbit SM1   = SCON^6;

sbit SM2   = SCON^5;

sbit REN   = SCON^4;

sbit TB8   = SCON^3;

sbit RB8   = SCON^2;

sbit TI    = SCON^1;

sbit RI    = SCON^0;


模式&波特率(宋雪松P183)

SCON主要用模式1,的波特率

對應的,要用定時器T1&T2的模式2


TH1 = TL1 = 256 - 晶振值/12/2/16/波特率

(256是TL1的溢出值,12指12個時鐘周期,16是硬件因素)


SBUF

兩個SBUF寄存器,分別負責接收和發送緩沖


流程

配置串口為模式1

配置定時器T1為模式2

根據波特率計算TH0&TL0的值

配置PCON&SCON寄存器

打開定時器


IO口模擬UART串口通信

UART串口傳送數據示意圖

在這里插入圖片描述

挖坑:波特率&TH0是怎么算的?



#include


sbit PIN_RXD = P3^0;

sbit PIN_TXD = P3^1;


bit RxdOrTxd = 0;

bit RxdEnd = 0;

bit TxdEnd = 0;

unsigned char RxdBuf = 0;

unsigned char TxdBuf = 0;


void configUART(unsigned long baud);

void startRXD(void);

void startTXD(unsigned char dat);


void main(void)

{

EA = 1;

configUART(9600);


while(1)

{

while(PIN_RXD);

startRXD();

while(!RxdEnd);

startTXD(RxdBuf+1);

while(!TxdEnd);

}

}


void configUART(unsigned long baud)

{

TMOD &= ~(0xF<<0);

TMOD |= 0x1<<1;

TH0 = 256 - (11059200 / 12) / baud;

}


void startRXD(void)

{

TL0 = 256 - ((256 - TH0) >> 1);


ET0 = 1;

TR0 = 1;


RxdEnd = 0;

RxdOrTxd = 0;

}


void startTXD(unsigned char dat)

{

TxdBuf = dat;


TL0 = TH0;


ET0 = 1;

TR0 = 1;


PIN_TXD = 0;

RxdEnd = 0;

RxdOrTxd = 1;

}


void timer0(void) interrupt 1

{

static unsigned char cnt = 0;


if(RxdOrTxd)

{

cnt++;

if(cnt<=8)

{

PIN_TXD = TxdBuf & 0x01;

TxdBuf >>= 1;

}

else if(cnt==9)

{

PIN_TXD = 1;

}

else 

{

cnt = 0;

TR0 = 0;

TxdEnd = 1;

}

}


else

{

if(cnt==0)

{

if(!PIN_RXD)

{

RxdBuf = 0;

cnt++;

}

else

{

TR0 = 0;

}

}

else if(cnt<=8)

{

RxdBuf >>= 1;

if(PIN_RXD)

{

RxdBuf |= 0x80;

}

cnt++;

}

else

{

cnt = 0;

TR0 = 0;

if(PIN_RXD)

{

RxdEnd = 1;

}

}

}

}


UART串口通信

教學版


#include


void configUART(unsigned long baud);


void main(void)

{

configUART(9600);

while(!RI);

RI = 0;

SBUF = SBUF + 1;

while(!TI);

TI = 0;

}


void configUART(unsigned long baud)

{

SCON = 0x50;


TH1 = 256 - (11059200 / 12 / 2 / 16) / baud;

TL1 = TH1;

TMOD &= ~(0xF<<4);

TMOD |= 0x2<<4;

ET1 = 0;

TR1 = 1;

}


工業版


#include


void configUART(unsigned long baud);


void main(void)

{

EA = 1;

configUART(9600);

while(1);

}


void configUART(unsigned long baud)

{

SCON = 0x50;


TH1 = 256 - (11059200 / 12 / 2 / 16) / baud;

TL1 = TH0;

TMOD &= ~(0xF<<4);

TMOD |= 0x2<<4;

ET1 = 0;

ES = 1;

TR1 = 1;

}


void UART(void) interrupt 4

{

if(RI)

{

RI = 0;

SBUF = SBUF + 1;

}

if(TI)

{

TI = 0;

}

}


計算機發送數據,在數碼管中顯示


#include


sbit wei = P2^7;

sbit duan = P2^6;


unsigned char code weitable[6] = 

{

~0x20,~0x10,~0x08,~0x04,~0x02,~0x01

};


unsigned char code duantable[16] = 

{

0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,

0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71

};


unsigned char ledbuff[6] = 

{

0x00,0x00,0x00,0x00,0x00,0x00

};


unsigned char T0RH = 0,T0RL = 0;

unsigned char RxdByte = 0;


void configtimer0(unsigned char ms);

void configUART(unsigned long baud);


void main(void)

{

EA = 1;

configtimer0(1);

configUART(9600);

while(1)

{

ledbuff[0] = duantable[RxdByte & 0x0F];

ledbuff[1] = duantable[RxdByte >> 4];

}

}


void configtimer0(unsigned char ms)

{

unsigned long tmp;


tmp = 11059200 / 12;

tmp = (tmp * ms) / 1000;

tmp = 65536 - tmp;

tmp = tmp + 12;


T0RH = (unsigned char)(tmp>>8);

T0RL = (unsigned char)tmp;


TH0 = T0RH;

TL0 = T0RL;

TMOD &= ~(0xF<<0);

TMOD |= 0x1<<0;

ET0 = 1;

TR0 = 1;

}


void configUART(unsigned long baud)

{

TH1 = 256 - (11059200 / 12 / 2 / 16) / baud;

TL1 = TH0;

SCON = 0x50;

TMOD &= ~(0xF<<4);

TMOD |= 0x2<<4;

ET1 = 0;

ES = 1;

TR1 = 1;

}


void ledscan(void)

{

static unsigned char i = 0;


P0 = 0x00;

duan = 1;

duan = 0;


P0 = weitable[i];

wei = 1;

wei = 0;

P0 = ledbuff[i];   

duan = 1;

duan = 0;


if(i<5)

i++;

else

i = 0;

}


void timer0(void) interrupt 1

{

TH0 = T0RH;

TL0 = T0RL;


ledscan();

}


void UART(void) interrupt 4

{

if(RI)

{

RI = 0;

RxdByte = SBUF;

SBUF = RxdByte;

}

if(TI)

{

TI = 0;

}

}

關鍵字:STC89C52  51單片機  串口配置  UART 引用地址:STC89C52_51單片機_串口配置_UART串口通信

上一篇:51單片機簡單的串口通訊-1
下一篇:51單片機 | 串口通信實驗(模擬串口通信/多機通信實例)

推薦閱讀

2018年6月26日 —安森美半導體推出3款新的高能效中壓脈寬調制(PWM)降壓轉換器。安森美半導體新的FAN6500X 降壓轉換器系列支持4.5 V至65 V的寬輸入電壓范圍,輸出電流高達10 A,輸出功率為100 W,結合經歷時間測試的固定頻率控制方法與靈活的Type III補償和強固的故障保護。安森美半導體集成了PowerTrench? MOSFET技術,以創建一種強固的集成方...
CAN FD通信協議是基于原始CAN總線標準(又稱為“經典CAN”)而設計的,有助于確保多種車載網絡數據傳輸率和吞吐量在繼續演進的同時,汽車微控制器和連接的系統能夠以各種速率高效通信。CAN FD協議支持高達5 Mbps的數據傳輸率和高達64字節的有效負荷,有效提升了設計師的能力,使其能夠在其下一代汽車應用中更快速地移動數據。什么是CAN FD?隨著電子、...
6月25日-26日,第五屆以“心芯本相印,變化有鯤鵬”為主題的集微半導體峰會于廈門海滄正式召開。在26日的EDA/IP專場論壇會上,優矽科技總經理王路業發表了《開源加速RISC-V軟硬件協同開發》主題演講。近年來,業界對于RISC-V有望與x86和ARM架構形成三足鼎立的局面達成越來越多的共識。RISC-V也被視為推動中國集成電路產業發展的新機遇,目前國內開源生態取...

史海拾趣

問答坊 | AI 解惑

有關串口問題,急?。?!

  現在在有揚創的一嵌入式開發板做個東西,板子是去年買的,當時用自己寫的一個EVC程序通過GPRS模塊來收發短信都沒問題,不過不知道怎么現在在同樣的板子上用同樣的程序卻總是出現串口問題。   我用之前沒問題的收發短信程序 ...…

查看全部問答∨

求救~~~

    各位大俠:U盤 插進去電腦以后,電腦會自動檢測,識別,而且提示新硬件可以使用了,但是接著 就跳出警告:無法識別的設備?      試過好多部電腦都是這樣?      現在關鍵是:U盤里面的 ...…

查看全部問答∨

請問IR2136驅動IGBT管這個三極管是什么管子(有圖示)?

想自已DIYG一個簡易的變頻器,拆開單位用到的一種國產變頻器(好象它的返修是最少的), 描下其用IR2136驅動IGBT管的電路,就是看不明白其中的D2,D3是什么管子?那位大蝦可以說說嗎? 我開始以為是PNP三極管,但用數字萬用表測量C腳,B腳之間 ...…

查看全部問答∨

STM32中斷優先級修改以及屏蔽的問題,急求版主主

1. 如何修改 systick 的優先級2. 我使用的中斷group 2.        Io中斷  先占優先級 2  從優先級 1        如何屏蔽比他低的優先級.          &nbs ...…

查看全部問答∨

有關硬件調試

各位老師和高手們:我已看過FAQ,但是沒有調試的具體說明,請問調試DSP時,一般最關鍵的信號是什么?應是什么樣的波形?MSC應是什么樣的波形? 另外,DSP和FPGA連調的時候,最應該注意什么?我調試了一天,找不到原因?一般應該怎樣找呢? 先 ...…

查看全部問答∨

【求助】 430自帶ADC12一問

對一個固定電壓采樣,采樣值有+/-1LSB的噪聲,請問是電路問題還是AD自身的誤差?…

查看全部問答∨

單片機MSC-51學習筆記

單片機MSC-51學習筆記1第二章 CS-51單片機的結構 本章的重點 MCS-51 單片機的內部結構 MCS-51 單片機的引腳功能 MCS-51 單片機CPU的結構特點 MCS-51 單片機的存儲器組織特點及訪問方式 MCS-51 單片機的低功耗方式及應用   一、MCS-5 ...…

查看全部問答∨

請進、我的救星、關于51MCU、ROM、EA問題

51MCU中。用編譯器將HEX程序文件載入單片機ROM里的時候,是將其放在MCU的內部存儲器還是外部存儲器呢? 還有,在EA置低的時候為什么單片機最小系統也還是可以工作的? 大神們請為小弟耐心解答!萬分感謝?。 ?

查看全部問答∨

Sitara™ ARM&reg; Processors AM335x Starter Kit 搶購Q&A!

Sitara™ ARM® Processors AM335x Starter Kit 團購今天下午2點準時開搶,(淘寶開團時間2點05分)你準備好了嗎? 團購頁面:http://www.nncyjs.com/eetuan/20121112/index.php 對于本次團購有什么問題,在下面跟帖吧,maylove為你 ...…

查看全部問答∨

51單片機開發

我們現在需要用51單片機做一塊簡單的溫度控制板,有誰愿意做的,請直接聯系我,只限個人。 劉文江 18128281952…

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

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 菏泽市| 壤塘县| 诸城市| 仁怀市| 平昌县| 峨山| 三原县| 沽源县| 连平县| 秦安县| 通州市| 昌吉市| 云梦县| 陆丰市| 弥渡县| 秦安县| 布拖县| 鄂伦春自治旗| 克拉玛依市| 武乡县| 黄骅市| 本溪市| 集贤县| 鸡东县| 皮山县| 曲松县| 兴义市| 肃南| 舟曲县| 黑水县| 泰顺县| 泽州县| 红原县| 长岭县| 大埔区| 社旗县| 新民市| 苍溪县| 太湖县| 油尖旺区| 湖北省|