发新帖本帖赏金 0.10元(功能说明)我要提问
返回列表
打印
[51单片机]

一线研发之声 之 吐槽51谁能解?

[复制链接]
楼主: sedatefire
手机看帖
扫描二维码
随时随地手机跟帖
41
支持楼上。
其实C语言,不管是什么MCU,我都尽量做到,应用程序跟MCU无关,只在底层驱动跟MCU的硬件相关。
所以,我的各种程序,8位、16位、32位,在应用层都差不多,移植时往往不需要任何修改就可以使用。

比如,用几个LED指示信息(各种闪烁等等),由于不同的MCU对IO操作差别大,所以,我在应用层都是直接操作内存,只在底层驱动中,把这个信息跟IO关联,与电脑类似(电脑要装驱动就是因为硬件的问题)。

使用特权

评论回复
42
hnkf118| | 2014-12-21 16:48 | 只看该作者
是的,我现在就是这么做的, 贴图说明。

MB005.jpg (145.41 KB )

MB005.jpg

MB004.jpg (251.49 KB )

MB004.jpg

MB003.jpg (54.46 KB )

MB003.jpg

MB002.jpg (183.43 KB )

MB002.jpg

mb.jpg (202.54 KB )

mb.jpg

mb协议000.jpg (231.4 KB )

mb协议000.jpg

间隔控制005.jpg (132.29 KB )

间隔控制005.jpg

间隔控制004.jpg (124.47 KB )

间隔控制004.jpg

间隔控制003.jpg (113.9 KB )

间隔控制003.jpg

间隔控制002.jpg (155.09 KB )

间隔控制002.jpg

间隔控制001.jpg (194.78 KB )

间隔控制001.jpg

间隔控制000.png (8.01 KB )

间隔控制000.png

使用特权

评论回复
评论
itelectron 2014-12-21 21:48 回复TA
很漂亮 
评分
参与人数 2威望 +7 收起 理由
chennemo + 1 很给力!
dong_abc + 6 整洁
43
hnkf118| | 2014-12-21 16:49 | 只看该作者
所贴 的代码 都是在51上 ARM上 可以直接使用的 与硬件相关的 抽象出来了。 这个也没考虑什么 外部RAM 内部RAM什么的区别, 只在意实现,都是标准C的用法。

使用特权

评论回复
44
天师猫神| | 2014-12-21 16:53 | 只看该作者
学习了,学习了,

使用特权

评论回复
45
unciauncia| | 2014-12-23 12:20 | 只看该作者
51还没玩明白

使用特权

评论回复
46
john_lee| | 2014-12-23 12:27 | 只看该作者
已经远离并遗忘51很久了。

使用特权

评论回复
47
sedatefire|  楼主 | 2014-12-23 13:16 | 只看该作者
john_lee 发表于 2014-12-23 12:27
已经远离并遗忘51很久了。

谢谢捧场,51眼下其实多数也是老一辈的人在玩...
新人都从M0/M3入门了

使用特权

评论回复
48
hnkf118| | 2014-12-23 15:48 | 只看该作者
其实从哪个芯片开始都没关系,只要是用C,51/ARM都可以。主要还是算法、程序思路。 ARM也好,51也好,就是寄存器数量不一样而已。 底层的东西没太多区别。

使用特权

评论回复
49
sedatefire|  楼主 | 2014-12-24 09:03 | 只看该作者
hnkf118 发表于 2014-12-23 15:48
其实从哪个芯片开始都没关系,只要是用C,51/ARM都可以。主要还是算法、程序思路。 ARM也好,51也好,就是 ...

新人如果从51入手,要关心寄存器,要关心using,关心xdata等芯片相关的细节,没法集中精力关心软件思想。

使用特权

评论回复
50
叶伤| | 2014-12-24 14:07 | 只看该作者
按照楼主这么说,我这里还真是属于南蛮地区了。都是C51开始的,新概念51单片机C语言教程,郭天祥的。新手入门只需要实现功能,为什么要关心using,xdata,idata。编译通过,烧录成功,现象复现,这就可以了,这才叫新手入门。如果什么都懂,那已经属于大牛了。从MO/M3入门那是软转硬的吧,软件已经有了一定基础才有那份功力去理解M0 的 GPIO_EN |= 1<<12和GPIO_EN |= 4<<12;

使用特权

评论回复
51
圣骑士by| | 2014-12-24 17:30 | 只看该作者
弱弱的问一下 你们都用哪家的C51?

使用特权

评论回复
52
xouou_53320| | 2014-12-24 21:58 | 只看该作者
hnkf118 发表于 2014-12-21 16:48
是的,我现在就是这么做的, 贴图说明。

求源码  让我学学 怎么弄

使用特权

评论回复
53
hnkf118| | 2014-12-25 01:20 | 只看该作者
圣骑士by 发表于 2014-12-24 17:30
弱弱的问一下 你们都用哪家的C51?

绝大部分是STC的51芯片,当然也有中颖,...其他厂家的51,相对STC而言比较少,STC我应用很多场合,好像我还没那么频繁的遇到莫些高人遇到的那些著名的问题,虽然STC有些东西用起来,可能是让人一开始不怎么理解,当你的知识+经验到了一定程度后,知道原理了,可以避免很多事情。 (多看资料,反复看资料,把你看到的,并且理解了的这部分写成模块)我写51程序 从来不关心什么using 什么, 也比较少关心xdata pdata idata 这些的区别,我现在的原则反而不是莫些大卡说的,变量一定要内部的data 区, 反而我是喜欢用xdata 声明变量,除了中断中要求非常苛刻的变量用data 或者 idata 声明外,其余一概xdata . 好像通讯也好,处理也好。 没什么问题。 就当你什么都不知道。 为了方便移植就定义几个可能与51的宏就可以了。 比如说xdata的变量声明为
#ifdef __C51__
#define MY_XDATA xdta
#define MY_CODE  code
#else
#define MY_XDATA
#define MY_CODE const
#endif


u16_t MY_XDATA A;.... 等变量 例如这样子。

多联系。多看别人的好的实现,别老是看入门的东西。 哈哈。 适当的看高级点的东西,一次看不懂,多次看, 说不定灵感一来就明白道理了。

哈,乱说的一通。。。

使用特权

评论回复
54
hnkf118| | 2014-12-25 01:25 | 只看该作者
是多练习,打错字了。。。。  我前面说了 为了兼容, 不使用bdata bit类型等51扩展的一些特性,不过看你的实际需求。如果项目很苛刻,那是用自己的水平,榨干51的一起特性就是了。大多数应用,没那么苛刻的。别想的那么难, 有些确实一下子弄不懂的,放以后,先搞容易的。这个是一个实践性很强的东西。所以要多动手。多思考。

使用特权

评论回复
55
hnkf118| | 2014-12-25 01:58 | 只看该作者
















































这次再上传点照片。我这个也是51, PIC ARM上面跑的MODBUS协议的从机。主机的话 我就不贴了. 这里也顺带的贴几张51的串口的驱动。MODBUS 是建立在这样的UART驱动之上的,ARM PIC的串口也封装成一样的函数接口,便于移植。 而且这个代码是支持多串口通讯的。我测试的平台是LPC1768(4串口),LPC1752(ZLG的板子),STC12C5608AD, STC12C5412, PIC12F726,。。。等等 也是用与产品上面的代码。 我好像就没关心过51太多自己的特性。
当然还有按键的,LED的 等 都写成统一的了,节省很多精力。

以后有机会开放部分源代码吧。最近版本还在更新。 代码还没写的很完善。


使用特权

评论回复
56
逍遥派掌门| | 2014-12-25 16:32 | 只看该作者
个人认为:
C51适合从硬件出身的使用者;
ARM更适合软件出身的使用者。

使用特权

评论回复
57
yanyanyan168| | 2014-12-25 17:24 | 只看该作者
好贴留名

使用特权

评论回复
58
sedatefire|  楼主 | 2014-12-26 10:22 | 只看该作者
逍遥派掌门 发表于 2014-12-25 16:32
个人认为:
C51适合从硬件出身的使用者;
ARM更适合软件出身的使用者。

maybe

使用特权

评论回复
59
yongxing912| | 2014-12-30 11:16 | 只看该作者
有时间要思考一下

使用特权

评论回复
60
dun20062006| | 2015-1-2 19:56 | 只看该作者
楼主厉害,标记一下,细细品味

使用特权

评论回复
发新帖 本帖赏金 0.10元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则