📄 rxd8951.c
字号:
/*******************************************************************************
*
* 文件名称:rxd8951.c
*
* 功能描述:串口接收数据,并显示相应数据。
* 接收到呼叫号后,发送应答号
通信建立,开始数据传输
*
* 开发环境:IDE为Keil uVision3 v8.09a。MCU为AT89S52,晶振频率12M。
*
* 文件版本 v1.0
*
* 创建时间:2008/10/20
*
* 修改记录:无
*
******************************************************************************/
#include <reg51.h>
void delay(unsigned int i) /*用来短暂延时。延时时间为每循环一次为14us,总循环时间再加上14us为延时时间*/
{
while(i--);
}
/*******************************************************************************
*
* 描述: 串口通信初始化,设置串口工作在模式1下,接收使能,使用Timer1工作在模式2下,
* 波特率2400
*
* 参数: 无
*
* 返回: 无
*
******************************************************************************/
void init_serialcom()
{ SCON=0x50;
TMOD=0x20;
TH1=0xF3;
TL1=0xF3;
TR1=1;
}
/*******************************************************************************
*
* 描述: 向串口发送一个字符或一个字节。
*
* 参数: ch 待发送字符或字节
*
* 返回: 无
*
******************************************************************************/
void send_char_com(unsigned char ch)
{ SBUF=ch;
while(TI==0);
TI=0;
}
/*******************************************************************************
*
* 描述: 向串口发送一个字符串或多个字节。
*
* 参数: str 待发送字符串或多字节首地址
* strlen 待发送字符串或多字节长度
*
* 返回: 无
*
******************************************************************************/
void send_string_com(unsigned char *str,unsigned int strlen)
{ unsigned int k=0;
do
{
send_char_com(*(str+k));
k++;
}while(k<strlen);
}
main()
{ unsigned char response=0; //判断通信是否建立用
unsigned char num;
init_serialcom();
do
{
while(!RI); //判断是否接收完毕,完毕(RI=1)开始发送应答
RI=0;
response=SBUF;
}while(response!=0x99);
num=0x01; //呼叫号01H
send_char_com(num); //发送呼叫号01H
while(1)
{ while(!RI); //等待数据接收
RI=0;
P0=SBUF; //显示接收到的数据
delay(200);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -