通信线上传输了一个字节到单片机串口上,硬件自动将其接收并存储在SBUF里,此时会产生一个中断(串口接收中断),单片机的相应中断使能(ES,EA)打开的时候,就可以进入中断,方便处理通讯。关闭中断时,仍可以使用查询的方式进行通讯处理。查询RI位,
if(RI==1)
{RI=0;//需要对其清零,硬件不会自动清零的
......//以下是处理程序
}
发送的时候把需要发送的字节送入SBUF即可启动硬件发送,单片机只需查询TI(发送标志位)看看发送是否完成就行了。TI也需软件清零。
首先,别乱试MAX232周围的那四个电容,根据MAX232的数据说明书里规定这四个电容必须是1uF的,并且最好是带极性的电解电容(耐压至少16V以上)。
既然能进行ISP在线编程烧写程序进去,那说明硬件是没有问题。你的程序在开发板上实现过,但能确认开发板的串口电路和你现在用的ISP电路是一样的么?
还有,计算机上的串口接收软件也没设置好也收不到数据的!
如果怀疑是串口硬件电路的问题,可以做这样的实验,就是让把单片机拔出来,MAX232留着,PC上的串口发送数据,然后把原本接单片机TXD和RXD的两个数据引脚短路,看看PC上的接收软件是否能接收到直接发送并返回的数据,如果能成功,则证明串口硬件电路没问题。
串口通讯有的时候要求很多,你先实验一下能不能单片机只给PC发送数据。然后再试把数据从PC发下去,让单片机返回数据。
还有问题可以发百度HI的信息给我。
免责声明:本平台仅供信息发布交流之途,请谨慎判断信息真伪。如遇虚假诈骗信息,请立即举报
举报