<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 串行通訊(單片機)

串行通訊(單片機)

作者: 時(shí)間:2016-11-24 來(lái)源:網(wǎng)絡(luò ) 收藏
#include

#include
#include "config.h"

本文引用地址:http://dyxdggzs.com/article/201611/320669.htm

#defineucharunsigned char
#define uintunsigned int
#define BEEPP0_5

ucharReceiveBuf;//定義接受緩沖區
ucharSendBuf[] = {11, 22};//將發(fā)送的數組放在數組SendBuf[]中

// 延時(shí)函數
void delay(uint n)
{
uint i, j;
for(i = n; i > 0; i--)
for(j = 115; j > 0; j--);
}

//串行口的初始化函數
void series_init()
{
SCON = 0X50;//串口工作方式1,允許接收
TMOD = 0X20;//定時(shí)器T1工作方式2
TH1 = 0XFD; TL1 = 0XFD;//定時(shí)初值
PCON &= 0X00;//SMOD=0
TR1 = 1;//開(kāi)啟定時(shí)器1
EA = 1;//開(kāi)總中斷
ES = 1;//開(kāi)串行中斷
}

void main(void)
{
series_init();
for(;;){//等待中斷
}
}

void series() interrupt 4
{

RI = 0;//接收中斷清零
ES = 0;//暫時(shí)關(guān)閉串口中斷
ReceiveBuf = SBUF;//將接收到得數據保存到ReceiveBuf中
if(islower(ReceiveBuf) || isupper(ReceiveBuf) || isdigit(ReceiveBuf)){
SBUF = ReceiveBuf;//將接收到的字符發(fā)送出去
while(!TI);//等待發(fā)送完畢
TI = 0;//發(fā)送完畢,TI(發(fā)送中斷標志)清0
BEEP = 1;
delay(100);
BEEP = 0;
}
ES = 1;//打開(kāi)串口中斷
}

串行中斷程序的編寫(xiě)步驟:

1. 設置串行口工作方式

2. 設置定時(shí)器T1工作方式,定時(shí)器T1作為波特率發(fā)生器,一般選用方式2,因為其可以自動(dòng)裝入初值功能,可以使波特率更加穩定

3. 設置定時(shí)初值

4. 設置波特率倍增位,不能位尋址,可以通過(guò)PCON設置,最高位就是SMOD倍增位,1時(shí)倍增

5. 開(kāi)定時(shí)器和中斷

6. 串行中斷程序中,首先接收中斷清零,關(guān)閉串口中斷

7. 取出接收到 的數據進(jìn)行處理然后發(fā)送

8.發(fā)送完后打開(kāi)串行中斷繼續接收數據



關(guān)鍵詞: 串行通訊單片

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>