访问电脑版页面

导航:老古开发网手机版51单片机51单片机串口

51单片机串口通讯与串口中断常见问题解决方案

导读:
关键字:
串口中断,串口通讯,51单片机,

一、深入了解字符串的问题

char str11[]="a";

P1=strlen(str11);

上面的一个是一个测试字符个数的实例,用仿真就可以看到结果。结果是1。也就是说字符’’是不会被计入的。那么我们就可以通过此函数来分辩是否是字符和字符串。当然如果字符串是一个字符的话,那么就是我们上面的那个情况了,会直接被当做一个数看待。

注:上位机发过来的数据全部是字符串格式的。

二、串口中断问题

先看下面的程序。

void UART_SendByte(unsigned char dat)

{

SBUF=dat;

while(!TI) ;//等待发送完毕

TI=0;

}

这个程序就是一个简单的串口发送字符的程序,为了能够实现自动发送和接收,我们分析一下它。我们要同时实现接收,有接收那么就要有串口中断,通过串口中断达到接收数据的目的。可是当ES=1,程序并不会像我们想的那样运行,当执行完SBUF=dat后,程序开始等待,大概是5个时钟周期后,程序并没有直接运行TI=0这句,而是,因为缓冲区中的字符而直接跳转到串口中断函数中,甚至出现死循环这样的情况。

为了避开这种情况,我们引入了下面的程序:

void UART_SendByte(unsigned char dat)

{

SBUF=dat;

ES=0;

while(!TI) ;

TI=0;

ES=1;

}

或者写做一个中断处理函数,空的函数也可以:

void Com_INT() interrupt 4//串口中断
{
}

来源:工程师周亮   作者:lhl545545  2018/12/20 16:32:00
栏目: [ 51单片机串口]

相关阅读

在VB下PC机与MCS-51单片机的串行通信

51单片机串口通讯编程的方式解析

如何计算8051单片机的波特率

AT89S51单片机串行口的内部结构及功能介绍

51单片机IO口模拟串口的实现

51单片机的串口通信协议

51单片机IO口模拟串口通讯的设计

C51单片机串口的使用方法解析

MCS-51单片机多机通信的工作原理解析

如何设置51单片机的串行口来实现与PC机通信

AT89S51单片机串行口的结构

51单片机三种模拟串口的设计方案解析

51单片机与PC机的串口通讯设计

AT89S51单片机串行口的内部结构解析

8051单片机实现高速串行通信的设计

8051单片机的UART0串口初始化

C51单片机串口通讯的硬件电路图

51单片机实现串口接收和发送数据的两种方法解析

AT89S51单片机串行口的内部结构及工作原理介绍

51单片机串行口的工作方式解析