📄 txd8951.c
字号:
/*******************************************************************************
*
* 文件名称:txd8951.c
*
* 功能描述:串口发送数据。
* 发起通信请求(发送呼叫号),等待应答
接收到应答号,通信建立,开始数据传输
*
* 开发环境:IDE为Keil uVision3 v8.09a。MCU为AT89S52,晶振频率12M。
*
* 文件版本 v1.0
*
* 创建时间:2008/10/20
*
* 修改记录:无
*
******************************************************************************/
#include <reg51.h>
//#define uchar unsigned char
//#define uint unsigned int
/*******************************************************************************
*
* 描述: 串口通信初始化,设置串口工作在模式1下,接收使能,使用Timer1工作在模式2下,
* 波特率2400
*
* 参数: 无
*
* 返回: 无
*
******************************************************************************/
void init_serialcom()
{ SCON=0x50; //设置串口工作在模式1下,接收使能
TMOD=0x20; //使用Timer1工作在模式2下
TH1=0xF3; //波特率2400
TL1=0xF3;
TR1=1; //启动Timer1
}
/*******************************************************************************
*
* 描述: 向串口发送一个字符或一个字节。
*
* 参数: ch 待发送字符或字节
*
* 返回: 无
*
******************************************************************************/
void send_char_com(unsigned char ch)
{ SBUF=ch; //发送ch
while(TI==0); //等待发送完毕(TI=1)
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; //判断通信是否建立用
//bit flag=0; //发送标志位,由形参传递,flag=1是发送,flag=0不发送
unsigned char num; //待发送数据
init_serialcom(); //串口通信初始化
do
{ SBUF=0x99; //发送呼叫号99H
while(!TI); //判断是否发送完毕,完毕(TI=1)开始接收应答
TI=0;
while(!RI); //串口接收到数据(RI=1)
RI=0; //
response=SBUF; //
}while(response!=0x01); //判断接收到的数据是否为应答号01H。如果不是正确的应答号,就重呼
while(1)
{ P2=0x00;
//flag=0;
if(P2!=0x00) //有按键按下,发送相应按键值
{ switch(P2) //取按键值,并进行相应转换,将P2口的按键值转换为1~8的数据
{ case 0x01:num=0x01;break;
case 0x02:num=0x02;break;
case 0x04:num=0x03;break;
case 0x08:num=0x04;break;
case 0x10:num=0x05;break;
case 0x20:num=0x06;break;
case 0x40:num=0x07;break;
case 0x80:num=0x08;break;
}
//flag=1; //发送标志位置1
send_char_com(num);//serial_send(flag,num) ;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -