社区
单片机/工控
帖子详情
单片机的C语言问题!!!!!!!
anihcer
2011-03-21 09:40:19
要求: 串口16进制发送一个字符给单片机,单片机接收该字符(比如0xd1)。然后控制小灯以该数据作为间隔时间闪烁。
问题: 基本做出来了,但有个地方不解,中断里面的时间好像都是十进制的。
比如定时器1ms if(t==20){ LED=~LED;}意思是20ms间隔。可现在是随时发来的16进制,不知道如何下手啦。
求老手给思路
...全文
81
4
打赏
收藏
单片机的C语言问题!!!!!!!
要求: 串口16进制发送一个字符给单片机,单片机接收该字符(比如0xd1)。然后控制小灯以该数据作为间隔时间闪烁。 问题: 基本做出来了,但有个地方不解,中断里面的时间好像都是十进制的。 比如定时器1ms if(t==20){ LED=~LED;}意思是20ms间隔。可现在是随时发来的16进制,不知道如何下手啦。 求老手给思路
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
anihcer
2011-03-23
打赏
举报
回复
谢谢你们啊,我明白了
ycliuhaibo
2011-03-22
打赏
举报
回复
你程序里不论是16进制、2进制还是10进制在编译的时候都会被转换成2进制。
bjtea
2011-03-21
打赏
举报
回复
1)单片机机内的数无论是16进制或2进制,在你的这条语句中,都不会发生错误。因为你C语句中的10进制的20与单片机内的16进制的14H或2进制的00010100B是相等的,随着时间计数值的增长,总会出现相等的情况。
2)有经验的编程者,应该写成if(t>=20){t=0; LED=~LED},这样可以避免意外;
3)我猜想你的问题出在,串口发送来的字符是ASCII码,这时串口收到的20是“2”和“0”两个字符,也就是接收到的是两个字节的数,自然不会等于你的20了。你需要将ASCII码转回成16进制数,并且将两数拼接起来,才能够与20去比较。
希望能对你有帮助
zhujinqiang
2011-03-21
打赏
举报
回复
楼上解释的很清楚了。
单片机
I方C掉电重启数据保持
C语言
代码!
单片机
I方C掉电重启数据保持
C语言
代码!
AVR
单片机
C语言
库
AVR
单片机
C语言
库!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
单片机
C语言
视频教程--下载种子全集
单片机
C语言
视频教程,全程视频讲解
单片机
,助你快速学会
单片机
程序设计!
《51
单片机
C语言
快速上手》(第二版)
《51
单片机
C语言
快速上手》的第一版非常好!现在出第二版啦!想学习
单片机
请快点下载吧! 《51
单片机
C语言
快速上手》(第二版)
单片机
c语言
学习精华,强烈推荐!
单片机
c语言
学习精华,强烈推荐!给广大
单片机
学习者
单片机/工控
27,375
社区成员
28,770
社区内容
发帖
与我相关
我的任务
单片机/工控
硬件/嵌入开发 单片机/工控
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章