我要开始工作的一个项目,我需要有汇编语言编写PIC单片机的体面的理解。 我非常熟悉C / C ++,所以我知道怎么大部分代码,我已经做了很多项目,为PIC已经让我明白的架构,但已经尽了它所有的编程在“C”。
有一本好书或网站,做得很好,解释什么是所有议会命令的含义及如何为PIC单片机做的相当简单的任务(闪烁LED的,基本的数学,等...)?
编辑:这篇文章的主要目的是要求学习资源大会,不是辩论C的优点VS大会在知情同意的,或者是否PIC是一个“好”的微控制器使用。 我使用的是PIC18单片机,如果有什么差别。
还有更多的是一个PIC架构,具有显著不同的指令集。 Microchip的不具有爱特梅尔AVR的例如建筑的一致性。 所以,你需要指定你使用的是什么 - PIC12,16,24,32例如。
所以首先我会建议避免的基础上,PIC汇编器学习内容上说PIC12,这可能不是非常适用于PIC24。 第二,我会避免使用PIC在所有如果我可能可能作为一个软件开发 - 尽管我承认有其他方面的考虑,你可能别无选择。
你可能有一个选择了不使用汇编器。 虽然低端PIC不也许是最适合的C代码生成,这是编译器作者的问题; 它仍然是比较划算的开发时间方面用C在可能的情况。 在另一方面,对于大批量的产品,如果你能使用汇编代码放入一个较小的部分,这可能是一个因素。 决定你需要汇编之前,您已经测试了一个C的解决方案往往是一种“过早优化”。 即使C实现失败的大小或时间限制,你可以把它的原型,并重新编写它满足约束条件。 做多仍可能比从头开始汇编代码,并与设计和指令集,同时奋力快。 告诉你的老板,你会原型在C,那么当它符合要求,没有人会愿意浪费钱重新编码是宋不可移植,难以维护的汇编代码。
最后回答你的问题,假设你需要得到工作快速,高效地完成,使用Microchip的实例和应用程序,注意事项尽可能,并与来自制造商的指令集参考指令集熟悉。 为下端部分设置的指令也不大。 对于每天的日常工作,我喜欢使用的“指令集卡”作为一项备忘录 - 总结每个指令的所有必要的细节,通常在几页 - 打印双面和层压吧! )。 这里是一个PIC16例子
这可能是一个相当晚的答复,但你可以从主要是为通过应用学习PIC组装此实验课程中受益。
检查: http://embedded-ju.ucoz.com/
检查实验片,它包括:
实验0 - (介绍MPLAB)
实验1 - (介绍PIC大会指令集)
实验2 - (更多关于指令集和模块化编程技术)
实验3 - (基本系统的分析和设计)
3.1。 指南硬件I
实验4 - (LCD - HD44780)
实验5 - (键盘)
实验6 - (使用HI-TECH C编译器在MPLAB)6.1。 PIC程序与ICD2指南。
实验7 - (定时器(定时器0和Timer2))
实验8 - (USART)
实验9 - (软件PWM&A / d)
它是基于PIC的16个系列,最值得注意的是,16F84A,16F877A和16F917 ..的例子是完全注释,和实验充分说明。
我在写一个反汇编的信徒。 开始加载具有恒定也许寄存器(得阅读教程或可以学到一些东西那一步),一个很简单的一个或两个行程序。 组装。 保存二进制的格式,你有能力或者愿意(如果支持英特尔六角也许,或精灵)编写一个程序来读取。
写一个程序来读取二进制文件,解压缩程序,然后把这些字节写一个反汇编(即使供应商有一个反汇编你还是应该写一个)。
现在启动迭代的过程中,学习新的指令或使用该指令,在一次执行一条指令一条新的途径。 编写代码以反汇编指令或选项。 尝试编写汇编操纵每个位的指令。
到时候你通过设置你就会知道指令集相比,每天都使用它大多数人更好的指令得到的,你就会知道如何编写汇编程序的每一个为每个操作码的选项,你也可以了解为什么这个指令只能从它的位置的地址N个字节和其他人可以访问什么,或者该指令只能使用一个N位立即和其他人可以使用任意值。 诸如此类的事情。
我已经使用这个过程多次,学到了很多指令集,情况因人而异。 第一对夫妇,三节过后上述过程可能只需要一个下午的时间来完成。
编辑:
这里的目标是教育不是一个伟大的SourceForge项目。 只要你喜欢,你是唯一一个要读它的输出可以是丑陋或不完整。
注意:可变长度指令集的通用汇编器可以有点困难,你不想线性反汇编要遵循所有的执行路径上的情况下,二进制文件。 我会避免。 服用,其执行有些直线组装拆卸然后简单的程序并不困难甚至在可变长度指令集。 你可以学到不少关于通过拆卸和检查C编译器(或其他高级语言)的输出的指令集,如果编译器不具备的汇编程序输出选项,或者没有反汇编器,你可能不会得到以利用这个(除非它是一个固定长度指令集)。
另外请注意,一旦你学会汇编程序的一个处理器,第二个是要容易得多,等等。 你需要从一个到下一个学习的东西往往成为能有多大这一跳是,什么是对的立即,是直接接在检查操作码间接寻址,基本上所有的东西的规则。 你可以学习它不看操作码,但你必须要依靠文件或汇编语言错误信息是高质量的。
该PICList: http://piclist.com/ 。
特别是,
- 在“入门清单的PIC单片机”有许多好的建议。
- 麦克迈凯轮PIC18F指令集汇总, HTML和PDF具有的所有PIC18F‘16位内核’的汇编语言指令的一页纸的总结。
文章来源: Whats the best resource to learn Assembly language for PIC microcontroller's [closed]