📄 uart.c
字号:
//&&&&&&&&&&&&&&&&&&&&&&&&&&方法一&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//定义一个全局位变量 ser_ti
/************************************************
波特率:115200bps
接收数据缓冲区
extern unsigned char data serdatabuf[16]
发送函数
ser_send() len 数据长度 pdata 指向发送数据的指针
************************************************/
void ser_send(unsigned char len,unsigned char xdata *pserdata)
{
unsigned int data i;
TR1 = 1;
TI0 = 0;
for(i = 0; i < len; i++)
{
SBUF0 = *pserdata;
ser_ti = 1;
while(ser_ti);
pserdata ++;
}
TR1 = 0;
}
void ser_init()
{
/***************************
TIME1 波特率发生器
115200bps
****************************/
TMOD = 0x20;
CKCON = 0x08;
TH1 = 0xF0;
/***************************
UART0 初始化
方式0 :8位UART
停止位逻辑电平忽略
接收允许
***************************/
SCON0 = 0x10;
TB80 = 0;
ES0 = 1; //开串口中断
}
/*void ser_read()
{
}
*/
void UART0_ISR() interrupt 4
{
unsigned char data i;
if( TI0 )
{
ser_ti = 0;
TI0 = 0;
}
else if( RI0 )
{
serdatabuf[i] = SBUF0;
i++;
if(i > 15)
i = 0;
RI0 = 0;
}
}
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
/************************************************
波特率:115200bps
接收数据缓冲区
extern unsigned char data serdatabuf[16]
发送函数
ser_send() len 数据长度 pdata 指向发送数据的指针
************************************************/
void ser_send(unsigned char len,unsigned char xdata *pserdata)
{
unsigned int data i;
TR1 = 1;
for(i = 0; i < len; i++)
{
TI0 = 0;
SBUF0 = *pserdata;
while(!TI0);
pserdata ++;
}
TR1 = 0;
}
void ser_init()
{
/***************************
TIME1 波特率发生器
115200bps
****************************/
TMOD = 0x20;
CKCON = 0x08;
TH1 = 0xF0;
/***************************
UART0 初始化
方式0 :8位UART
停止位逻辑电平忽略
接收允许
***************************/
SCON0 = 0x10;
TB80 = 0;
ES0 = 1; //开串口中断
}
/*void ser_read()
{
}
*/
void UART0_ISR() interrupt 4
{
unsigned char data i;
if( TI0 )
{
return;
}
else if( RI0 )
{
serdatabuf[i] = SBUF0;
i++;
if(i > 15)
i = 0;
RI0 = 0;
}
}
//@@@@@@@@@@@@@@@@@@@@@@接收发送成功代码@@@@@@@@@@@@@@
/************************************************
波特率:115200bps
接收数据缓冲区
extern unsigned char data serdatabuf[16]
发送函数
ser_send() len 数据长度 pdata 指向发送数据的指针
UART中断处理程序
void UART0_ISR() interrupt 4
************************************************/
void ser_send(unsigned char len,unsigned char xdata *pserdata)
{
unsigned int data i;
for(i = 0; i < len; i++)
{
TI0 = 0;
SBUF0 = *pserdata;
while(!TI0);
pserdata ++;
}
TI0 = 0;
}
void ser_init()
{
//**************定时器***********
TMOD = 0x20;
CKCON = 0x08;
TH1 = 0xF0;
TR1 = 1;
//************中断***********
ES0 = 1;
EA = 1; //全局中断
//*********uart*************
REN0 = 1;
//***************************
}
void UART0_ISR() interrupt 4
{
unsigned char data i;
if( TI0 )
{
return;
}
else if( RI0 )
{
g_serbuf[i] = SBUF0;
i++;
if(i > 15)
i = 0;
RI0 = 0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -