amobbs.com 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
回复: 60

十几年工作经验总结的单片机编程思想

  [复制链接]
(17607759)
发表于 2019-12-13 09:56:19 | 显示全部楼层 |阅读模式
本帖最后由 jjj 于 2019-12-13 09:58 编辑

1.死循环
2.状态机
3软件分层
(裸机程序非阻塞!)
(17607589)
发表于 2019-12-13 09:59:09 | 显示全部楼层
楼主账号名很赞
(17607556)
发表于 2019-12-13 09:59:42 | 显示全部楼层
裸机,基本上都是时间片轮询吧。
(17606118)
发表于 2019-12-13 10:23:40 | 显示全部楼层
我现在50K的程序量都是用前后台。
(17604528)
发表于 2019-12-13 10:50:10 | 显示全部楼层
简单点用 定时器+状态机  
复杂点用  OS+任务(同步机制)
(17592844)
发表于 2019-12-13 14:04:54 | 显示全部楼层
你们都玩的好高级我现在还是死循环的玩法
(17592130)
发表于 2019-12-13 14:16:48 | 显示全部楼层
你们都玩的好高级我现在还是找个例程改改就跑
(17591646)
发表于 2019-12-13 14:24:52 | 显示全部楼层
if  else           
(17591214)
发表于 2019-12-13 14:32:04 | 显示全部楼层
再加一个,模块化
(17591132)
发表于 2019-12-13 14:33:26 | 显示全部楼层
一直没研究太懂这些。
我自己弄了个定时器,做周期的任务
又弄了个状态量,负责状态切换的。
交叉着用。
(17587431)
发表于 2019-12-13 15:35:07 | 显示全部楼层
(17586123)
发表于 2019-12-13 15:56:55 | 显示全部楼层
不仅仅是单片机,总结起来所有计算机程序都是大循环套小循环。
(17585260)
发表于 2019-12-13 16:11:18 | 显示全部楼层

if  else+1 除了这个很少用其他的。
(17584788)
发表于 2019-12-13 16:19:10 | 显示全部楼层
if   switch  这个全都是状态机。
(17583842)
发表于 2019-12-13 16:34:56 | 显示全部楼层
if  else 走天下
(17583600)
发表于 2019-12-13 16:38:58 | 显示全部楼层

逼格高一点,if else是采用当前人工智能算法中的决策树理论
if中的比较结果则是人工智能中的,聚类等分类技术
(17583400)
发表于 2019-12-13 16:42:18 | 显示全部楼层
ZHAOBAO511 发表于 2019-12-13 16:11
if  else+1 除了这个很少用其他的。

再+1
(17582354)
发表于 2019-12-13 16:59:44 | 显示全部楼层
玩了几年了,还没有研究的这么深入,楼主有好的教程推荐吗?
(17580720)
 楼主| 发表于 2019-12-13 17:26:58 | 显示全部楼层
本帖最后由 jjj 于 2019-12-14 16:19 编辑

if else switch 这些都是编程技巧。不是编程思想
其它技巧还有
__packed  强制类型转换  指针 回调函数 结构体 共用体  C语言位域(位段) 条件编译  宏定义  static关键字  结构体指针 c库函数 事件驱动  这些统统是技巧, 只要多看多写多悟多以练,就能熟能生巧。  
前提是要在编程思想的指导下做技巧训练。
(17573952)
发表于 2019-12-13 19:19:46 | 显示全部楼层
死循环,时间片轮,中断
(17573491)
发表于 2019-12-13 19:27:27 来自手机 | 显示全部楼层
我准备用lf  else 申请专利
(17568817)
发表于 2019-12-13 20:45:21 | 显示全部楼层
可能做到这三点,基本上可以应付所有的裸机编程了
(17565124)
发表于 2019-12-13 21:46:54 | 显示全部楼层
jjj 发表于 2019-12-13 17:26
if else switch 这些都是编程技巧。不是编程思想
其它技巧还有
__packed  强制类型转换  指针 回调函数 结 ...

总结很好   赞同
(17564535)
发表于 2019-12-13 21:56:43 | 显示全部楼层
定时器状态机
(17524552)
发表于 2019-12-14 09:03:06 来自手机 | 显示全部楼层
目前只用前后台系统。
(17498251)
 楼主| 发表于 2019-12-14 16:21:27 | 显示全部楼层
上面好几位网友说的“前后台”我是不是可以理解为死循环 + 事件驱动
(17491216)
发表于 2019-12-14 18:18:42 | 显示全部楼层
不够干。。。。
(17488762)
发表于 2019-12-14 18:59:36 | 显示全部楼层
楼主实在是高!赶紧申请专利!在国际杂志上发表论文!数十年的心血呀!
(17480235)
发表于 2019-12-14 21:21:43 | 显示全部楼层
jjj 发表于 2019-12-13 17:26
if else switch 这些都是编程技巧。不是编程思想
其它技巧还有
__packed  强制类型转换  指针 回调函数 结 ...


牛比,申请专利,走起。。。






(17478833)
发表于 2019-12-14 21:45:05 来自手机 | 显示全部楼层
一切都是while(1)还有for(;;)
(17478583)
发表于 2019-12-14 21:49:15 | 显示全部楼层
至少加一条,把所有的全局变量放在一个gv struct里面,马上成了面向对象
(17434708)
发表于 2019-12-15 10:00:30 | 显示全部楼层
本帖最后由 xtwhf 于 2019-12-15 10:08 编辑
RAMILE 发表于 2019-12-14 21:49
至少加一条,把所有的全局变量放在一个gv struct里面,马上成了面向对象


太高级了!单片机居然可以找对象! 真没想到结构穿个马甲就成了对象
(17426082)
发表于 2019-12-15 12:24:16 | 显示全部楼层
目前还没看到干货。。。
(17391236)
 楼主| 发表于 2019-12-15 22:05:02 | 显示全部楼层
xtwhf 发表于 2019-12-14 18:59
楼主实在是高!赶紧申请专利!在国际杂志上发表论文!数十年的心血呀! ...

怎么感觉像是讽刺我呀
(17389629)
发表于 2019-12-15 22:31:49 | 显示全部楼层
jjj 发表于 2019-12-15 22:05
怎么感觉像是讽刺我呀

既然享受了部分人的点赞,那也要忍受另部分人的吐槽
(17387112)
发表于 2019-12-15 23:13:46 | 显示全部楼层
定时器+状态机  
死循环。 现在用的几乎都是这两种。  
(17354765)
 楼主| 发表于 2019-12-16 08:12:53 | 显示全部楼层
xtwhf 发表于 2019-12-15 22:31
既然享受了部分人的点赞,那也要忍受另部分人的吐槽

差点把本给忘了
(17352818)
发表于 2019-12-16 08:45:20 | 显示全部楼层

而我就不同了,我是if  elseif   else
(16307878)
 楼主| 发表于 2019-12-28 11:01:00 | 显示全部楼层
jjj 发表于 2019-12-13 17:26
if else switch 这些都是编程技巧。不是编程思想
其它技巧还有
__packed  强制类型转换  指针 回调函数 结 ...

忘了 一个很重要的技巧,“面向对象”, 简单说就是把相关的数据、属性、操作封装在一个结构体中
(16303461)
发表于 2019-12-28 12:14:37 | 显示全部楼层
习惯自己的思维了
(16297225)
发表于 2019-12-28 13:58:33 | 显示全部楼层
单片机也就是这样了,但是玩得熟练要花点时间
(16289991)
发表于 2019-12-28 15:59:07 | 显示全部楼层
用不好操作系统,搞不出好东西,不解释。
(16126688)
发表于 2019-12-30 13:20:50 | 显示全部楼层
楼主有qq等联系方式吗
(16125932)
发表于 2019-12-30 13:33:26 | 显示全部楼层
用习惯了状态机,再切换到操作系统的事件触发,有点不习惯
(16091429)
发表于 2019-12-30 23:08:29 | 显示全部楼层
你这总结的精简又深奥.
(16055486)
发表于 2019-12-31 09:07:32 | 显示全部楼层
时间片轮询挺好用,资源占用少,比较灵活
(16052103)
发表于 2019-12-31 10:03:55 | 显示全部楼层
我认为没有最好的编程方法,只有最适合一个项目的编程方法。裸跑架构,不同的RTOS,我认为有时间都尝试下,跑跑例程,正如武侠小说老套路,主角学尽百家特长,融汇贯通,终成一代宗师
(16051934)
发表于 2019-12-31 10:06:44 | 显示全部楼层
精辟
(16040853)
发表于 2019-12-31 13:11:25 来自手机 | 显示全部楼层
搭车问下有ai写单片机程序的吗
(16039240)
发表于 2019-12-31 13:38:18 | 显示全部楼层
Pjm2008 发表于 2019-12-13 10:50
简单点用 定时器+状态机  
复杂点用  OS+任务(同步机制)

任务同步用事件标志位  传信息用队列?
(16026767)
发表于 2019-12-31 17:06:11 | 显示全部楼层
所有程序都是死循环吧。
(15933195)
发表于 2020-1-1 19:05:43 来自手机 | 显示全部楼层
硬件支持什么 就用什么
(15932613)
发表于 2020-1-1 19:15:25 | 显示全部楼层
能用就行  只有老板点头就点到为止
(15880615)
发表于 2020-1-2 09:42:03 | 显示全部楼层
我的目的是稳定运行  不出问题

然后再谈思想 哈哈
(15876313)
 楼主| 发表于 2020-1-2 10:53:45 | 显示全部楼层
unnormal 发表于 2020-1-2 09:42
我的目的是稳定运行  不出问题

然后再谈思想 哈哈

2者是相辅相成的
(15875547)
发表于 2020-1-2 11:06:31 | 显示全部楼层
jjj 发表于 2020-1-2 10:53
2者是相辅相成的

恩恩

同意同意

(4536375)
发表于 2020-5-12 16:52:43 | 显示全部楼层
liu672992381 发表于 2019-12-13 19:27
我准备用lf  else 申请专利

申请专利,走起
(4217569)
发表于 2020-5-16 09:26:09 | 显示全部楼层
shiva_shiva 发表于 2019-12-15 12:24
目前还没看到干货。。。

目前还没看到干货。。。   +1
(3998860)
发表于 2020-5-18 22:11:18 | 显示全部楼层
系统无非就是这几种结构,很实用,单片机,控制上位机基本都是这个模式。
(3442284)
发表于 2020-5-25 08:47:34 | 显示全部楼层
如果RAM太小,如256byte,时间片轮询挺好用是不够用的。
回帖提示: 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号-1 )

GMT+8, 2020-7-4 04:58

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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