51串口通信程序(帶詳細注釋?zhuān)?/h1>
#include#include //后面有一個(gè)比較函數
#define uchar unsigned char
#define uint unsigned int
bit UART_Flag=0; //定義串口接收標志位
本文引用地址:http://dyxdggzs.com/article/201611/323366.htmuchar str[50]; //定義一數組
uchar length=0; //數組長(cháng)度從0開(kāi)始
void init() //初始化uart
{
TMOD=0X20; //定時(shí)器1定時(shí)器方式 工作模式2,可自動(dòng)重載的8位計數器常把定時(shí)/計數器1以模式2作為串行口波特率發(fā)生器
SCON=0X50; //選擇工作模式1使能接收,允許發(fā)送,允許接收
EA=1; //開(kāi)總中斷
ES=1; //打開(kāi)串口中斷
ET1=0; //打開(kāi)定時(shí)器中斷
PCON=0X80; //8位自動(dòng)重載,波特率加倍
TH1=0XFF; //用22.1184 mhz波特率
TL1=0XFF;
TR1=1; //打開(kāi)中時(shí)器
}
void UART_Putch(uchar dat) //輸出一個(gè)字符
{
SBUF=dat; //把數據送給sbuf緩存器中
while(TI!=1);//發(fā)送標志位 TI如果發(fā)送了為1,沒(méi)發(fā)送為0,沒(méi)發(fā)送等待,到了退出循環(huán)
TI=0; //到了,TI清為0
}
void init1() interrupt 4 //uart中斷 ,4為串口中斷
{
if(RI==1) //收到數據
{
uchar m=SBUF; //m為計算機發(fā)送給串口的數據,例,open //總體思想是,計算機通知串口,我要發(fā)數據了
RI=0; //收到清0
if(m==) //判斷m這位數據有無(wú)
{
UART_Putch(); //回車(chē)
UART_Putch(); // 換行
str[length]=国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
#include
#define uchar unsigned char
#define uint unsigned int
bit UART_Flag=0; //定義串口接收標志位
uchar str[50]; //定義一數組
uchar length=0; //數組長(cháng)度從0開(kāi)始
void init() //初始化uart
{
TMOD=0X20; //定時(shí)器1定時(shí)器方式 工作模式2,可自動(dòng)重載的8位計數器常把定時(shí)/計數器1以模式2作為串行口波特率發(fā)生器
SCON=0X50; //選擇工作模式1使能接收,允許發(fā)送,允許接收
EA=1; //開(kāi)總中斷
ES=1; //打開(kāi)串口中斷
ET1=0; //打開(kāi)定時(shí)器中斷
PCON=0X80; //8位自動(dòng)重載,波特率加倍
TH1=0XFF; //用22.1184 mhz波特率
TL1=0XFF;
TR1=1; //打開(kāi)中時(shí)器
}
void UART_Putch(uchar dat) //輸出一個(gè)字符
{
SBUF=dat; //把數據送給sbuf緩存器中
while(TI!=1);//發(fā)送標志位 TI如果發(fā)送了為1,沒(méi)發(fā)送為0,沒(méi)發(fā)送等待,到了退出循環(huán)
TI=0; //到了,TI清為0
}
void init1() interrupt 4 //uart中斷 ,4為串口中斷
{
if(RI==1) //收到數據
{
uchar m=SBUF; //m為計算機發(fā)送給串口的數據,例,open //總體思想是,計算機通知串口,我要發(fā)數據了
RI=0; //收到清0
if(m==) //判斷m這位數據有無(wú)
{
UART_Putch(); //回車(chē)
UART_Putch(); // 換行
str[length]=国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放