📄 串口通信.txt
字号:
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
/**************************************************************/
//串口测试程序,采用11.0592M晶振
//使用定时器1
//Write by CW
//要接收须置位EA=1
/**************************************************************/
//初值设定:
/****300*****
RCAP2H=0xFb; //波特率设定 :300
RCAP2L=0x80;
/***600*****
RCAP2H=0xFD; //波特率设定 :600
RCAP2L=0xC0;
***1200******/
/***************
RCAP2H=0xFE; //波特率设定 :1200
RCAP2L=0xE0;
*****************/
/****2400*****
RCAP2H=0xFF; //波特率设定 :2400
RCAP2L=0x70;
*****************/
/****4800******
RCAP2H=0xFF; //波特率设定 :4800
RCAP2L=0xB8;
*****************/
/****9600******
RCAP2H=0xFF; //波特率设定 :9600
RCAP2L=0xDC;
*****************/
/****19200******
RCAP2H=0xFF; //波特率设定 :19200
RCAP2L=0xEE;
*****************/
/****38400******
RCAP2H=0xFF; //波特率设定 :38400
RCAP2L=0xF7;
*****************/
/****57600******
RCAP2H=0xFF; //波特率设定 :57600
RCAP2L=0xFA;
*****************/
uchar data t0_count, t0_cntbuff, set_dotps, set_dotpsbefore, cnt_data;
bit bdata flag_ready, rx_ready;
uint temp;
/******************声明*******************/
void initInt0(void);
void initTimer(void);
void initUart(void);
void txdata(uchar tt);
/****************************************/
void initUart(void) //串口初始化
{
TMOD|=0x20; //计数方式2
SCON=0x50; //8(10)位串口波特率方式1
TH1=0xfd; //波特率设定 :600
TL1=0xfd;
TR1=1; //开定时计数器1
}
void txdata(uchar tt) /*Uart发送一字节*/
{
ES=0; //禁止串口中断
SBUF=tt; //发送接收缓冲器
while(!TI) ; //发送中断标志位,只能由程序清零
TI=0;
ES=1;
}
void SCON_int (void) interrupt 4
{
ES=0;
if(RI) ////接收中断标志位,只能由程序清零
{
RI=0;
txdata(0x55);
txdata(SBUF);
}
ES=1;
}
/*************************************************/
void main(void)
{
initUart();
txdata(0x12);
txdata(0x13);
txdata(0x14);
EA=1;
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -