jkts.net
当前位置:首页 >> 51单片机串口通信出现问题 >>

51单片机串口通信出现问题

#include #include unsigned char ch; bit read_flag= 0 ; void init_serialcom( void ) //串口通信初始设定 { SCON = 0x50 ; //UART为模式1,8位数据,允许接收 TMOD |= 0x20 ; //定时器1为模式2,8位自动重装 PCON |= 0x80 ; //SMOD=1; TH1 = 0...

void ser()interrupt 4 { if(RI) { RI=0; a=SBUF; flag=1; } }

再调试一下,收到串口助手数据之后再让它返回到电脑串口,看看是否是原始数据。目的是查一下是串口出了问题还是数码管编程有问题

按你说的,要看你的数据长度及波特率,有可能是发送频率过快。 注意一下你的发送端的数据长度以及发送频率

肯定不会运行while(TI==0);下面的程序的,因为你的中断开着,程序跳到中断服务程序里面了,然后中断处理结束了之后,TI自动清零了,所以一直在while(TI==0);无限循环。 程序里面,既然开通了中断功能,那你就一直使用中断功能,为什么你还要使用...

你这是实物开发板吗?串口通信助手要显示接收的字符串,应显示字符形式,不要选择 十六进制显示。 switch(RXDBUF) 语句中用的是 case 1: case 2: 这是数值的1,2,串口助手发送时要发送十六进制数。如果发送的是字符1,2,应改成 case '1':TXD...

51单片机串口通信接收数据和发送出去,这不是一个整个过程,即接收和发送没有什么关系的,是完全可以只发送,或只接收的,不需要接收就发出去的。 而且不论是接收或发送,每次都是一个字节的,没有什么8个字节的事。 但是每发送一个字节,或接收...

你这里的难点在于"只发送一次",可以定义一个标志变量初始为0,当P1.1=0时且标志为0,向串口发送一个数据,并置该标志为1,即使P1.1依然为0也不会一直发送;当检测到P1.1=1时,置标志为0,以便下次再触发。其他依此类推。

晶振选对了没?做串口要用11.0592MHz的,不能用12M的。还有初始化对不对? TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; 串口助手选择合适不?

答案是 2。 2.异步通讯中,波特率不是指每秒传送的字节数,而是每秒传送的位数(bits),而位不仅仅是数据的位,还包含有停止位、校验位(如果有的话)。 1、单片机使用的是TTL电平,而PC机使用的是CMOS电平。所以它们之间的通讯,需要电平转换...

网站首页 | 网站地图
All rights reserved Powered by www.jkts.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com