51串口通信程序(帶詳細注釋)
#include
#define uchar unsigned char
#define uint unsigned int
bit UART_Flag=0; //定義串口接收標志位
uchar str[50]; //定義一數組
uchar length=0; //數組長度從0開始
void init() //初始化uart
{
TMOD=0X20; //定時器1定時器方式 工作模式2,可自動重載的8位計數器常把定時/計數器1以模式2作為串行口波特率發生器
SCON=0X50; //選擇工作模式1使能接收,允許發送,允許接收
EA=1; //開總中斷
ES=1; //打開串口中斷
ET1=0; //打開定時器中斷
PCON=0X80; //8位自動重載,波特率加倍
TH1=0XFF; //用22.1184 mhz波特率
TL1=0XFF;
TR1=1; //打開中時器
}
void UART_Putch(uchar dat) //輸出一個字符
{
SBUF=dat; //把數據送給sbuf緩存器中
while(TI!=1);//發送標志位 TI如果發送了為1,沒發送為0,沒發送等待,到了退出循環
TI=0; //到了,TI清為0
}
void init1() interrupt 4 //uart中斷 ,4為串口中斷
{
if(RI==1) //收到數據
{
uchar m=SBUF; //m為計算機發送給串口的數據,例,open //總體思想是,計算機通知串口,我要發數據了
RI=0; //收到清0
if(m==) //判斷m這位數據有無
{
UART_Putch(); //回車
UART_Putch(); // 換行
str[length]=
主站蜘蛛池模板:
禄丰县|
翼城县|
板桥市|
益阳市|
沂源县|
凤冈县|
绩溪县|
乌恰县|
宝应县|
溧水县|
芷江|
长阳|
宁海县|
鄂伦春自治旗|
天全县|
房产|
阳泉市|
大名县|
江川县|
柞水县|
酒泉市|
郸城县|
宁安市|
且末县|
丰城市|
和顺县|
饶平县|
英超|
桑植县|
洪洞县|
英山县|
天祝|
蚌埠市|
九龙县|
新营市|
昌乐县|
龙川县|
巧家县|
麻江县|
拜城县|
法库县|