数码之家

 找回密码
 立即注册
搜索
查看: 1032|回复: 12

[C51] 如何在以下代码添加结束符0xFF 0xFF 0xFF

[复制链接]
发表于 2021-9-11 11:27:57 来自手机浏览器 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 yyou58 于 2021-9-12 16:28 编辑

  如何在以下代码添加结束符,串口每次发送一个数据,并一起发送 0xFF 0xFF 0xFF
                                 if(re_buf[13]>99)
                                 {
                                    SendData(tt/100 + 0x30);
                                    SendData(tt/10%10 + 0x30);
                                    SendData(tt%10 + 0x30);
                                         
                                         
                                 }
                 else if(re_buf[13]>9)
                                 {
                                    SendData(tt/10 + 0x30);
                                    SendData(tt%10 + 0x30);                                         
                                 }
                 else
                                 {
                                         SendData(tt%10 + 0x30);               
                                 }               
                 re_count = 0;                                 
                         }
                        
                }
}
发表于 2021-9-11 11:49:30 | 显示全部楼层
注释说了,把16进制数转成10进制的ASCII码发出来
回复 支持 反对

使用道具 举报

发表于 2021-9-11 12:01:32 来自手机浏览器 | 显示全部楼层
+0x30就是转换成数字的字符形式。根据不同的位数,发送不同位数的字符。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-11 12:14:00 来自手机浏览器 | 显示全部楼层
1065307738 发表于 2021-9-11 12:01
+0x30就是转换成数字的字符形式。根据不同的位数,发送不同位数的字符。

if(re_buf[13]>9)和if(re_buf[13]>99)是什么意思
回复 支持 反对

使用道具 举报

发表于 2021-9-11 12:36:41 | 显示全部楼层
ASCII码表中字符0的ASCII码是0x30,字符1是0x31,知道这个你就看懂了。
回复 支持 反对

使用道具 举报

发表于 2021-9-11 18:41:24 来自手机浏览器 | 显示全部楼层
yyou58 发表于 2021-9-11 12:14
if(re_buf[13]>9)和if(re_buf[13]>99)是什么意思


意思就是re_buf[13]这个数的值在大于99之类时,和大于9时不同的传送处理方法,类似于进位这样
回复 支持 反对

使用道具 举报

发表于 2021-9-12 00:54:36 | 显示全部楼层
建议学基础,这些都是非常基础的知识
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-12 10:11:06 来自手机浏览器 | 显示全部楼层
40560335 发表于 2021-9-12 00:54
建议学基础,这些都是非常基础的知识

没时间学
回复 支持 反对

使用道具 举报

发表于 2021-9-12 19:27:43 | 显示全部楼层
re_count = 0;下面添加三行
SendData(0xFF);
SendData(0xFF);
SendData(0xFF);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-12 20:25:44 来自手机浏览器 | 显示全部楼层
elecfunwb 发表于 2021-9-12 19:27
re_count = 0;下面添加三行
SendData(0xFF);
SendData(0xFF);

是不是以十六进制发送
回复 支持 反对

使用道具 举报

发表于 2021-9-13 11:49:13 来自手机浏览器 | 显示全部楼层
yyou58 发表于 2021-9-11 12:14
if(re_buf[13]>9)和if(re_buf[13]>99)是什么意思

这个是判断要发送的位数,如果是三位数就发送三个。如果是两位数就发送两个。
回复 支持 反对

使用道具 举报

发表于 2021-9-13 11:53:36 来自手机浏览器 | 显示全部楼层
yyou58 发表于 2021-9-12 20:25
是不是以十六进制发送

没看到你的SendData()函数。如果里边有等待,就浪费cpu时间,如果没有等待发送完成,连续写这三句可能只会发送一个0xFF。一般这种串口发送数据用中断发送。将要发送的数据放到一个数组里,发送完一个中断一次发送下一个。不浪费cpu时间。如果有FIFO的串口就好用了。
回复 支持 反对

使用道具 举报

发表于 2021-9-13 16:33:46 | 显示全部楼层
yyou58 发表于 2021-9-12 20:25
是不是以十六进制发送

底层都是二进制发送的,SendData写0xFF和255是一样的效果。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-11 10:09 , Processed in 0.312001 second(s), 11 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表