查看: 5461|回复: 10

[提问] RS232通讯编程提问(C51单片机)

[复制链接]
发表于 2012-4-15 09:18:45 | 显示全部楼层 |阅读模式
关键词: C51 , RS232
我想用51单片机做通讯,RS232协议,比如我制定指令为#(x x x)格式,#(A 8 1)这条指令的意思是:#通讯请求,(为发送开始位,A表示P0口8表示P0口的第7位(P0.7),1表示该位为1,)为结束位  请问下位机的编程该怎样做呢?
 楼主| 发表于 2012-4-15 09:19:29 | 显示全部楼层
请求各位高手给予解答啊
 楼主| 发表于 2012-4-15 09:30:06 | 显示全部楼层
我需要做个小实验的 希望各位高手帮我一下啊 感激不尽
发表于 2012-4-15 09:34:49 | 显示全部楼层
基础问题,没有人回答你。自己不动脑
 楼主| 发表于 2012-4-15 10:33:45 | 显示全部楼层
 楼主| 发表于 2012-4-15 14:36:35 | 显示全部楼层
关键是 我是自学的  没有基础 期望能得到指点
 楼主| 发表于 2012-4-15 15:54:27 | 显示全部楼层
高手帮帮忙啦 给我一点思路也可以啊  谢谢啦
发表于 2012-4-15 20:43:11 | 显示全部楼层
俺不写代码N多年了,只能给点提示给你吧:
1、先制定一个完整的命令表。这个很重要,否则后面你会越做越乱的。
2、下位机就是单片机,一般C51片子都会有专门的UART接口的,好好读懂数据手册,通过设置几个寄存器,一般就能完成了。
3、如果不巧没有专用UART接口,则需要自己用软件来模拟。那么建议,一是要用中断IO口来进行接收,用其他IO口来做发送;二是调用内部计时器,来计算时间的长短,设置IO的高低电平(或接收口的高低电平)的时间长短;三则,在固定的时间段内(根据约定的速率来计算),读取接口(或设置接口)的高低电平,高为1,低为0;最后,采用移位算法,将下一位数据调用(或保存),最后构成完整的单个字节或者整条命令。
 楼主| 发表于 2012-4-17 14:05:26 | 显示全部楼层
非常感谢sherwin 给我的宝贵意见 我现在尝试这用switch  case 结合数组 现在做成功了 我就是想看看别人是怎么做的   我想看看别人的高效代码  学习学习!
发表于 2012-4-17 14:17:59 | 显示全部楼层
指令格式为#(x x x)

这个做法可行的,有帧起始和结束标志

另外,尽量一开始就考虑到协议的扩展性
发表于 2015-2-7 12:04:13 | 显示全部楼层
支持一下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表