一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 2470|回复: 1
收起左侧

[51单片机] Proteus_MCS-51的一百个例子

[复制链接]
发表于 2011-7-5 11:45 | 显示全部楼层 |阅读模式
本帖最后由 ad2000 于 2011-7-5 11:50 编辑

MCS-51的一百个例子
http://filemarkets.com/file/end2012/6ec40ba4/


如果下载慢,点击下面免费注册,速度能稍快些
http://www.yunfile.com/user/insert/end2012.html
发表于 2017-1-28 10:16 | 显示全部楼层
本帖最后由 钟义亭 于 2017-1-28 19:10 编辑

由于本人水平有限,今后可能更多的以潜水的形式出现,
希望不会被踢出去(在友坛莫坛只下载不发表曾经被踢过),
不是不发表,水平确实有限

只會  MCS-51 組合語言 的
大陸 不玩 匯編語言 的

http://www.sinowealth.com/zh/pro ... id=81&from_page=top


当年学微机原理时,学过x86的汇编,考完试就全忘了;
学单片机时,学过8051的汇编,毕业两年后就忘了
其实所谓的全忘指的是指令集忘了,不同片子的汇编,规则还是一样的。
比较熟 是指熟到什么地步呢 。ARM 调试底层时,遇到奇怪的问题,
打开Disassembly 查看反汇编代码,基本 都能看得懂,
偶尔会有几个指令不认识,翻翻指令集就能看明白,但没写过
本来用C写的,但发现太耗时间,就改用ASM,一边翻指令集一边写。

我知道个好处是 用人单位说要:精通 C、C++  JAVA、汇编、
android、.net、HTML  时候。
你少了个 被拒绝的理由。

现在 回答问题,学习汇编有什么意义?以下回答只针对嵌入式软件,非嵌入式,
不是不想回答,只是不懂,不敢乱答。


1、某些特殊环境,必须要用。比方说前几年 中颖的MCU 就不支持C,几年过去了,
现在支不支持 不清楚,不过即便 8位机支持了,想必4位机 还是不支持的。
(这个几年没接触了,不太了解,但这个是最刚性的一个理由。)


EM78P447芯片
由于义隆 没有提供 C的编译环境,只能 以汇编进行编码,
而汇编的结构、条理性与C语言比较 不是很清晰,
再加上EM78单片机 结构的独特性


2、你说不支持C 太low了。好吧,我们用支持C的,调试底层,会遇到一些奇怪的、
无厘头的问题,得打开反汇编窗口,看看硬件是怎么执行的,
必要时还要在汇编层面单步执行,一次只执行一条汇编指令。
举个例子,变量out映射到某个pin了,你要在这个pin上产生一个下降沿,
你就写了句 out=1; out=0; 但是运行起来,却只有低电平,没有下降沿,
why ?看看汇编吧,out=1 没了!被编译器优化掉了,根本没执行。
好吧,我们加个volatile。
3、裸跑太不爽了。那行,我们移植个OS吧,复杂点就Linux,简单点就 μCos,
汇编又跑出来了。在执行main之前 我们得分配好内存,安排好中断向量表,
放好 heap和stack;进入main了,任务切换,要保存现场,要更新寄存器,还得靠汇编。
4、底层太麻烦了,我们直接 搞应用层。OK,做个信号处理吧,AD采集了大量数据,
要求差分,要算频谱,要做滤波,计算量太大,用 while用for都可以,
但时间。还是用汇编吧。当然,此处不仅仅 是将C改成汇编,因为都用汇编了,
而且 只是一个单进程,纯运算的函数,就不考虑可移植性了,
我们可以将其他的优化都用上,比方以位移代乘除,以空间换时间,
总之一切都是 为了提高效率。据我本人经历,
最高的一次是将函数运行时间缩小了20倍。20倍什么概念?要是 不用优化,
老老实实 用C的话,按照摩尔定律十八个月翻一番,你得要六年才能增长16倍。
当然换个好的算法更好,但你C用的算法,ASM也能用啊,还是比你快。
5、好吧,最后不谈实际应用。即便真不写、不看汇编,汇编 也是有用的,
学汇编的过程就是 理解计算机的过程。不告诉你 CPU的控制流、数据流,
学一堆 寄存器、累加器的名词 有用么?用语言描述也可以,
“将寄存器A出栈”,这不就是“POP A”吗?
只不过你自己 typedef了一套汉语描述的、不完整的指令集罢了。
那学计算机原理有什么用呢?还是跟上面回答一样,一是底层,二是效率。
比方说写个bootloader,不考虑可移植性,启动代码有现成的,
那用C写也可以,但你起码得明白 啥叫中断向量表,程序要 怎么跳转吧。



1.png 2.jpg
1.jpg 1.jpg 1.jpg 1.jpg














































评分

参与人数 2一乐金币 -80 收起 理由
snoopy8008 -40 5376-40=5336
384065902 -40

查看全部评分

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-11 16:08 , Processed in 0.060060 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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