我将开始一个项目,在这个项目中我需要对 PIC 微控制器的汇编语言有一个很好的了解。我非常熟悉 C/C++,所以我知道如何编写大部分代码,而且我已经为 PIC 完成了许多项目,所以我了解其架构,但我所有的编程都是用“C”完成的。

是否有一本好书或网站可以很好地解释所有汇编命令的含义以及如何为 PIc 微控制器执行相当简单的任务(闪烁 LED、基本数学等)?

编辑:这篇文章的主要目的是请求学习汇编的资源,而不是争论 PIC 中 C 语言与汇编语言的优点,或者 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 - (式中MPLAB使用HI-TECH C编译器)    6.1。 PIC编程使用ICD2指南。

<强>实验7 - (定时器(定时器0和Timer2))

<强>实验8 - (USART)

<强>实验9 - (软件PWM&A / d)


它是基于所述PIC 16系列,最值得注意的是,16F84A,16F877A和16F917 ..实施例被完全注释,并且实验充分解释。

我在写的反汇编的信徒。开始加载具有恒定也许寄存器(得阅读教程或可以学到一些东西那一步),一个很简单的一个或两个行程序。组装。保存二进制的格式,你有能力或者愿意(如果支持英特尔六角也许,或精灵)编写一个程序来读取。

写一个程序来读取二进制文件,并提取该程序然后把这些字节和写一个分解装置(即使供应商有一个分解装置仍然应该写一个)。

现在开始迭代的过程中,学习新的指令或使用该指令,在一次执行一条指令一条新的途径。编写代码以反汇编指令或选项。尝试写入汇编操纵每个位中的指令。

这是你通过设置你就会知道指令集相比,每天都使用它大多数人更好的指令得到的时候,你就会知道如何编写了使用各操作码的选项汇编,你也可以学习为什么这个指令只能从它的位置的地址N个字节和其他人可以访问什么,或者该指令只能使用一个N位立即和其他人可以使用任意值。之类的事情。

我已经使用这个过程多次,得知许多指令集,因人而异。第一对三中的处理之后上述可能只需要一个下午来完成。

编辑:

这里的目标是教育不是一个伟大的SourceForge项目。只要你喜欢你是唯一的一个要读取它的输出可以是作为难看或不完整的。

注:可变长度指令集的通用汇编器可以有点困难,你不想线性反汇编要遵循所有的执行路径上的情况下,二进制文件。我会避免。服用,其执行有些直线组装拆卸然后简单的程序并不困难甚至在可变长度指令集。你可以学到不少关于通过拆卸和检查C编译器(或其他高级语言)的输出的指令集,如果编译器不具备的汇编程序输出选项,或者没有反汇编器,你可能不会得到以利用这个(除非它是一个固定长度指令集)。

一旦你学会汇编程序的一个处理器还要注意,第二个是要容易得多,等等。你需要从一个到下一个学习的东西往往成为能有多大这一跳是,什么是对的立即,是直接接在检查操作码间接寻址,基本上所有的东西的规则。你可以学习它不看操作码,但你必须要依靠文件或汇编语言错误信息是高质量的。

PIC 列表: http://piclist.com/ .

尤其,

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top