1、初始化串口相关雀哗的寄存器。
2、可以用中断模式,也可以用查询模式,取决于应用场合。
3、收发数据取决于标志位TI和RI。
举例如下:
#include<reg51.h>
#define uchar unsigned char
main()
{
uchar tmp,t
TMOD=0x20 //初始化
SCON=0x50
TH0=0xfd
TL0=0xfd
TR1=1
while(1)
{
if(RI)//如祥空果有谨岁瞎串口数据传来
{
tmp=SBUF //接受数据
t=100
while(t--)
SBUF=tmp //将数据回传
while(TI)
TI=0
}
}
}
串口裂滑收发,要有通信协议。也就是什么时候开始接收,接收到指令后,转发什么数据。这个要知道,才可以写。而且使用不同的51单片机,其内部寄存器配置是不同的。一般来说,过程如下:
1,配置串口参数、波特率等,开启串口中断;
void Init_UART()
{
}
2,中断函数里写中断响应函数,根据接收的指令或者数据,执行相应的动作;
程序一般为:
void UART_ISR() interrupt x using y
{
串口中断搏弯处理函数
}
x - 单片机的C51中断号
y - 指定使用的当前工作寄肆银腊存器组号(0-3 PSW中的RS0,RS1组合)
3,主程序
int main(void)
{
Init_UART()
while(1)
{
//数据发送函数
}
}
首先要确定串扒拦口调试助手的波特率也是2400,并接收要以十六进制数显示,最好发送也以十六进制数发送。程序没有问液此行题,是因为发送的num1在0-255之间,而用串口调试助手的字符显示方式不是全部都能显示出来的,有一部分就是显示乱码的,而显示十六进制数闹哗就没有问题了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)