串口调试助手的基本功能
2015-03-24
展开全部
串口调试助手,一般都支持:
支持以文本或16进制方式接收和显示数据;支持串口,自动寻找系统支持的串口,150~256000常见的波特率,支持自定义任意波特率;支持网络接口,支持UDP、TCP客户端、TCP服务器协议类型;支持自动保存测试数据。
支持16进制、字符串、文件3种格式的数据发送;支持循环激励;支持保存为文件,方便测试项目的统一管理和重复使用。
有个别的软件,功能强大,如格西烽火,支持自定义协议功能:
支持主动设备(即主动发起请求、接收响应的设备)和从动设备(即被动等待请求、发送响应的设备)的激励仿真;支持任意的帧格式定制,最小解析单位为1Bit,可直观地显示任意帧格式,不需要再为不同的协议定制软件;支持自定义协议类型,支持测试结果分类存储和显示;支持使用C#、VB和JScript脚本语言控制测试运行,调用第三方DLL完成复杂的计算和测试任务,具有强大的扩展性;支持循环激励和激励统计报告;支持保存为工程文件,方便测试项目的统一管理和重复使用。
展开全部
几乎可以肯定出错的地方是在你的波特率设置上,TH1 = 0xFA;TL1 = 0xFA;这两句设的初值是对应11.0592MHz晶振下4800波特率的串口通讯。
1楼朋友的TH1 = 0xFD;TL1 = 0xFD;是对应11.0592MHz晶振下9600波特率的串口通讯。关于波特率的计算方法有具体的公式你可以查查。
按照你现在的程序,首先你要保证接收端的波特率也设置在4800,总之要是串行通讯两端波特率一致。
还有一点就是如果你不是直接把程序烧写到单片机里而是用仿真器仿真,就要注意观察一下仿真器设置选项里有没有设置晶振频率的地方,要设置成11.0592MHz。
还有一个问题就是,你在上边说输入A5,输出5A我理解不了你的意思。你这程序不就是把单片机串口上收到的数据赋值给unsigned char a变量然后取反再发出去吗?注意 ~ 这个符号是按位取反,例如你从串口收到的1字节数据是二进制00000000那么取反后就会变成11111111,我看你对这个符号的理解好像不太对头。
还有就是如果你用单片机和电脑连接用类似于串口调试助手这样的软件进行测试的话要注意数据的显示格式,一般有ASC码和十六进制的选项看你具体要用什么了。
if(TI)
//照你这句这么写如果执行到if语句判断时单片机串口还没有发送完毕也就是TI还=0时,就会直接跳过这个if判断结束中断函数
{
TI = 0;
REN =1;
}
改成
while(!TI);
//需要在这里一直循环等待,直到TI=0为止才会跳出while循环执行TI=0
TI = 0;
REN =1;
以上这些都是可能出错的地方,如果这几点你都弄清楚了问题肯定解决
1楼朋友的TH1 = 0xFD;TL1 = 0xFD;是对应11.0592MHz晶振下9600波特率的串口通讯。关于波特率的计算方法有具体的公式你可以查查。
按照你现在的程序,首先你要保证接收端的波特率也设置在4800,总之要是串行通讯两端波特率一致。
还有一点就是如果你不是直接把程序烧写到单片机里而是用仿真器仿真,就要注意观察一下仿真器设置选项里有没有设置晶振频率的地方,要设置成11.0592MHz。
还有一个问题就是,你在上边说输入A5,输出5A我理解不了你的意思。你这程序不就是把单片机串口上收到的数据赋值给unsigned char a变量然后取反再发出去吗?注意 ~ 这个符号是按位取反,例如你从串口收到的1字节数据是二进制00000000那么取反后就会变成11111111,我看你对这个符号的理解好像不太对头。
还有就是如果你用单片机和电脑连接用类似于串口调试助手这样的软件进行测试的话要注意数据的显示格式,一般有ASC码和十六进制的选项看你具体要用什么了。
if(TI)
//照你这句这么写如果执行到if语句判断时单片机串口还没有发送完毕也就是TI还=0时,就会直接跳过这个if判断结束中断函数
{
TI = 0;
REN =1;
}
改成
while(!TI);
//需要在这里一直循环等待,直到TI=0为止才会跳出while循环执行TI=0
TI = 0;
REN =1;
以上这些都是可能出错的地方,如果这几点你都弄清楚了问题肯定解决
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询