单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
上一页
10/13
下一页
楼主: Similarv
打印上一主题下一主题

请工程化,定制化你的单片机代码

  [复制链接]
回帖奖励40 黑币
回复本帖可获得 2 黑币奖励! 每人限 1 次
361#
ID:915029发表于 2021-7-28 15:20|只看该作者
正好可以对以后代码风格有一个方向
362#
ID:953589发表于 2021-7-29 08:08|只看该作者
很好的文章,加强了对定时器的理解
363#
ID:915029发表于 2021-7-29 11:13来自手机|只看该作者
Similarv 发表于 2020-1-13 16:52
你的做法当然也没有问题,不过我是这么做的:
按键就只是做按键检测,并且设置相应的“按键已触发”标志 ...

想问楼主,key press time是怎样和按压按键时间联系的,也就是按多长时间,time增加多少,这点我有点想不明白,是if(++key~press~time)这个语句吗?
364#
ID:451287发表于 2021-8-2 14:58|只看该作者
学到了新的编程思路,不用再DELAYMS(),浪费系统资源
365#
ID:957885发表于 2021-8-2 21:33|只看该作者
我想问一下,这里的
“从微观上看,单片机是没法在同一时刻做2件事情的!所以,每到10ms的时候,单片机会”先把1ms的事情做完再做10ms的事“;每到100ms的时候,单片机会”先把1ms的事情做完再做10ms的事,再做100ms的事”
是不是一个单片机一个默认的优先级吗?如果是这样,那么有些程序中“忙则等待”是不是为了避免1ms的事到10ms时还没做完,两件事同时做而让单片机死机吗?
希望楼主解答
366#
ID:476527发表于 2021-8-3 08:45|只看该作者
queen11 发表于 2021-7-29 11:13
想问楼主,key press time是怎样和按压按键时间联系的,也就是按多长时间,time增加多少,这点我有点想不 ...

key_press_time是一个当某键被按下时,去数(第三声)数(第四声)的一个变量;
而这个变量所在的函数,是一个每1ms执行一次的函数,故而key_press_time每数一次数,按键就被持续按下了多少ms
367#
ID:476527发表于 2021-8-3 08:47|只看该作者
小麦种子 发表于 2021-8-2 21:33
我想问一下,这里的
“从微观上看,单片机是没法在同一时刻做2件事情的!所以,每到10ms的时候,单片机会 ...

没有你想的那么复杂,之所以是先做1ms的事在做10ms的事再做100ms的事,只是因为编写代码时,1ms的程序被放在了10ms的程序和100ms的程序的前面,你如果喜欢的话可以把100ms的程序放前面。
368#
ID:958310发表于 2021-8-4 14:49|只看该作者
真是好文章啊
369#
ID:816988发表于 2021-8-4 21:15|只看该作者
好帖子,学习中,楼主加油
370#
ID:958897发表于 2021-8-5 20:34|只看该作者
初学者,受益良多!感谢
371#
ID:959049发表于 2021-8-5 22:01|只看该作者
堪比教科书级别的文章
372#
ID:927469发表于 2021-8-25 07:03|只看该作者
非常好的学习贴,谢谢分享
373#
ID:810999发表于 2021-8-25 16:40|只看该作者
非常不错,学习了。
374#
ID:585365发表于 2021-8-26 11:02|只看该作者
虽然不是特别理解,但确实值得学习
375#
ID:382826发表于 2021-8-27 19:06|只看该作者
收藏,学习了!
376#
ID:907347发表于 2021-8-28 09:27|只看该作者
确实不错,大家不要用无脑循坏了
377#
ID:854029发表于 2021-8-29 16:59|只看该作者
虽然我看不懂,但还是觉得很厉害的样子
378#
ID:569384发表于 2021-8-31 09:06|只看该作者
delay有毒
379#
ID:78901发表于 2021-11-13 17:44|只看该作者
真是定时延时的好文章
380#
ID:34149发表于 2021-11-15 16:49|只看该作者
谢谢,老师的指导!
381#
ID:624685发表于 2021-11-15 17:16|只看该作者
看完还是有点糊涂,努力学习
382#
ID:980153发表于 2021-11-16 09:25|只看该作者
谢谢分享,真的是好资料!
383#
ID:927850发表于 2021-11-16 10:23|只看该作者
学习了,非常不错的文章
384#
ID:384081发表于 2021-11-17 08:43|只看该作者
高手,膜拜了
385#
ID:410182发表于 2021-11-22 15:33|只看该作者
多谢楼主分享!有空的话能再分享一些吗
386#
ID:254747发表于 2021-11-24 17:20|只看该作者
if(++key_press_time< =0 ) --key_press_time; 这句我理解不了 哪个大师给我将一下  怎么加了又减啊 是防止数据溢出吗  能讲一下吗  

387#
ID:254747发表于 2021-11-24 17:21|只看该作者
这个帖子安逸   我这几天就到处找 怎么把按键的 while()这个检测给干掉  没有想到在这里看到了  现在我写的程序都不用 delay了 哈哈哈
388#
ID:984566发表于 2021-11-25 11:09|只看该作者

很不错的文章,启迪匪浅。
389#
ID:548757发表于 2021-11-25 17:49|只看该作者
两年多!众望期待更新!!!!!
390#
ID:875095发表于 2021-11-27 17:04|只看该作者
入门必备啊,写的好
391#
ID:59830发表于 2021-11-27 18:43|只看该作者
不错的知识点,值得初学者学习.
392#
ID:964852发表于 2021-11-28 10:29|只看该作者
大师,更新下,正好想学习下状态机
393#
ID:509408发表于 2021-11-29 17:27|只看该作者
不同的功能函数可以单独定义一套自己的计时时基变量(通常是1ms)、调用标志、内部子步骤执行号(step)等等。其中把时基变量放进定时器里面累加或递减,一些你想要共享给外部调用数据可以定义成全局变量、方便独立调试排除问题。 以下是我常用的程序框架 (这里随便放了一段)
void Demon_B(void)  {
   if(lgRunTime_B< cTimes_B)     return;     //定时时间未到 return不往下执行。
   {
       lgRunTime_B = 0;     //定时时间清0
       if(FLAG_B& SET_Flow1){     //需要演示的标志立起?

       if(cgStep_B==0){     //步骤0
         //执行代码
         cTimes_B = 10;   //延时10ms  
       }else if(cgStep_B==1){   //步骤1
         //执行代码  
         cTimes_B = 1000;//延时1000ms  
     } else{;}
       if(++cgStep_B>5)     cgStep_B = 0;     //步骤号大于5
     }}}
按照这样思路创建不同功能的ABCD函数(名字懒得取-_-),每个函数有自己的独立延时而不会引起干扰动作。执行步骤号中也可以塞入一些带返回值函数、其他功能的全局变量、标志什么的 if 判断一下,不符合就简单粗暴的return掉,前提是你自己的逻辑思路要清晰,原则上应尽量减少函数之间的耦合以提高效率。最后主调函中用 FLAG_B 标志调用或关闭它们,很方便灵活。
394#
ID:254747发表于 2021-11-29 17:31|只看该作者

哪位大哥给我讲一下哦     是不是 残值  就比如  用户随便按了一下  保留的值在里面   后面自己清理了
395#
ID:965189发表于 2021-11-29 22:06|只看该作者
好料,是我等初哥学习的好东西。
396#
ID:476527发表于 2021-11-30 09:12|只看该作者

是防止它溢出,限制它只往上加,加到最大之后就不再增加
其实这个代码我一般不这么写的,这案例是我把我经常用的 宏函数 给展开了:

#define JINC(x) if(++x< = 0) --x  //自增x,且不使其溢出

这样定义一个宏之后,以后凡是只想进行 “变量自增”操作又不想要变量溢出的时候,只要直接用这个宏就好啦。
例如本案例的源码其实是:

JINC(key_press_time);
397#
ID:254747发表于 2021-11-30 09:56|只看该作者
Similarv 发表于 2021-11-30 09:12
是防止它溢出,限制它只往上加,加到最大之后就不再增加
其实这个代码我一般不这么写的,这案例是我把我 ...

非常感谢指导  谢谢  
398#
ID:969161发表于 2021-11-30 22:12|只看该作者
好资料,好文章。
399#
ID:969161发表于 2021-11-30 23:30|只看该作者
这个资料让我增长很多思路,写代码有明显提高了。
400#
ID:986929发表于 2021-12-2 16:15|只看该作者
受益匪浅

手机版|小黑屋|51黑电子论坛|51黑电子论坛6群QQ管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网