完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我最近在做套用AT89S52开发的控制柜的板子, 是利用RS485的方式从上位机通过单片机控制40个接口。
协议、通信、控制功能都已经实现了,现在为了加强协议的抗干扰性,在协议里面加了一位“01”和“04”命令标识,例如我发送 68 01 01 06 01 00 00 00 8C,单片机接收到这串指令后,只是通过译码器识别40个接口的高低电平的状态,而不通过译码器发送这串指令去控制任何一个接口的高低电平,然后再给上位机发送一串指令,让上位机知道40个接口的状态;我要是发送68 01 04 06 01 00 00 00 8C,单片机接收到这串指令后,通过译码器将1号接口置为高电平,然后再给上位机发送一串指令,让上位机知道40个接口的状态; 目前程序流程就是上位机发一组指令,单片机返回一组指令,我现在在协议里加上命令标示后(“04”好说,保存原状就行)当单片机收到带“01”的指令后,怎么样不向译码器发送这串指令去控制接口,并且读一遍所有接口的状态返回给上位机?怎么样通过程序控制单片机如何处理接收到的指令? 下面是我写得这部分功能代码,那位专家帮忙指导下,如做过类此的东西,能直接附上代码让我学习下最好了!!!!谢谢
这里是协议定义的内容,协议我写在中断里面了。
|
|
相关推荐
4个回答
|
|
|
|
|
|
个人觉得你的思路有点局限,没有理清整个程序框架。
首先应当确定一套通信协议,但这个通信协议并不是直接用于控制,而是使需要传送的数据能准确无误的发送和接收,打个比方,要发送的数据是货物,而这个协议是汽车,汽车只负责完整的确保货物被送达,而不参与控制。 接下来就是将要发送的数据通过该协议打包,接收的数据从该协议拆包。这个应数据底层程序,其实是非常简单的。 再说控制,通过通信协议拆解出的数据已经是正确数据了,那么只需要设定另一套控制的协议即可。这点不用多说应该也明白了。 总的来说,做通信控制应包含两层协议,第一是数据通信协议,即保正传输的数据能正确完整的接收。 第二是应用层面的数据协议,就是指通过第一层协议承载的有用数据的数据格式。这样有条理的设计程序才是最佳。 补充一点,在串口中断中一般不允许过长的程序,但可以将第一层数据同信协议做在里面。 |
|
|
|
都是大师,我想凑个热闹都不好意思
|
|
|
|
大师们你们速度解答我来像你们学习的来了
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-spi编程示例之spi编写程序
671 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第三十七章 image图像对比实验
653 浏览 0 评论
781 浏览 1 评论
564 浏览 0 评论
关于RT-Thread studio添加freemodbus控件失败的问题
936 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11655 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 22:20 , Processed in 0.561072 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号