本篇文章介绍了基于单片机平台开发的一些基本理论知识,包括了硬件最小系统的说明以及基于单片机开发的过程。文中还额外介绍了ARM体系架构,帮助读者从更深层次去熟悉我们平常最容易接触的开发平台,熟悉这些寄存器定义和处理器模式能够帮助我们在定位诸如死机等难以下手的问题时,提供一些方法。
文章目录
最简单片机系统与开发步骤
单片机最小系统
开发步骤
ARM架构
寄存器
处理器模式
我们先从最简单的实现,来介绍单片机的硬件最小系统和单片机系统开发的一般过程。
只有一个AT89S51单片机是无法实现任何功能的,除了要向单片机供电之外,还要有若干个简单的外围器件构成最简单片机系统并预留程序烧录的接口。下面介绍了最简单片机系统中都包含什么元素。
以控制一个发光二极管为例,介绍单片机系统的开发过程。要想开发一个单片机系统,首先要非常明确系统的功能是什么,然后根据功能要求规划硬件(也就是设计电路)和设计软件(单片机程序),最后把程序下到单片机中进行硬件和软件联合调试,直到系统功能达到设计要求为止。
因为现在很少有使用汇编语音进行编程的工程师了,我们这边只对这门语言根据上面提到的代码片做一些简要的介绍。
汇编语言(assembly language)是一种低级的与硬件打交道的语言。这段程序代码由 6行组成,除第一行的标号 START 外,其余5行就是5条指令(instruction。每一条指令会对单片机下一条命令,使单片机完成某种操作。这5条指令从头到尾执行一遍,就实现了发光二极管 D1 点亮500ms->熄灭500ms,即一次闪烁。
单片机会顺序地执行每一条指令并实现相应的操作。如第2行指令"MOV P1,#00H"让单片机的 P1 口输出0,执行完这条指令后,P10~P1.7 均为0。于是连接在 P1.0上的发光二极管被点亮。
完整的指令由标号(可选)、助记符、目的操作数、源操作数及注释(可选)组成如下图所示。
标号是以英文字母开头的字母、数字或某些特殊符号的组合,例如 D_1:、START:等。汇编语言对字母的大小写不敏感,但习惯上都使用大写字母。另外,标号可以和其他指令在同一行,也可以单独为一行。以下两种写法是等价的。
指令中助记符是必不可少的,它用来表示指令的操作功能。如上图中助记符 MOV是单词 Move 的简写,其功能是把源操作数 (00H)载入目的操作数(P1)中。而目的操作数是指令最终作用的对象。源操作数参与指令的操作,指令的执行将使用到源操作数。如指令MOV P1,#00H的功能是把 00H载入P1中。源操作数中,#号代表其后的00H是一个立即数,也就是说该指令的源操作数由一个立即数充当,指令执行完毕后,P1=00H,即P1.0~P1.7口输出均为0。
注释是程序编写人员为了他人或自己阅读程序时方便而标记的,可以用来提高程序的可读性和调试的方便性。在汇编语言中,分号后面的部分是不会影响指令的,只是程序中解释说明的部分。也就是说,分号后的部分并不是可执行程序的一部分。下图是控制发光二极管闪烁的完整程序。
我们开发单片机程序的工具称之为Keil,是国际上比较流行的单片机程序的开发和仿真软件。我们可以在Keil选择芯片的型号,这样集成开发环境就会自动帮我们拉取诸如启动文件等资源。
程序的下载首先需要我们正确的将下载器和板卡预留的下载接口相连,然后我们把使用下载软件把通过集成开发环境编译出来的可执行文件烧录到芯片上即可。
ARM架构,曾称进阶精简指令机器(Advanced RISC Machine)更早称作Acorn RISC Machine,是一个32位精简指令集(RISC)处理器架构。
ARM一共有37个寄存器,七个处理模式。处理模式包括:用户模式(USR),快速中断模式(FIQ),普通中断模式(IRQ),管理模式(SVC),数据访问中止模式(ABT),未定义指令中止模式(UND),系统模式(SYS)
37个寄存器,其中31个为通用寄存器,6个位状态寄存器,都是 32 位的寄存器。
下面是通用寄存器按作用分类:
通用寄存器有针对不同模式专属的,也有所有模式公用的寄存器。R0-R7(8个所有模式共用)、R8-R12(FIQ单独用,其他六种模式共用,共有10个)、R13-R1(USR和SYS共用2个,其他模式单独用2*5=10个,共12个)、R15(8个所有模式公用),则有总数31 =8+10+12+1。
6 个状态寄存器,都是 32 位的寄存器。CPSR(1个)/SPSR(5个)。
当异常发生,MCU进入相应的异常模式时,以下工作是由硬件自动完成的:
从异常工作模式退回到之前的工作模式时,需要由软件来完成以下工作:
ARM处理器对7种工作模式的定义如下:
十六宿舍 原创作品,转载必须标注原文链接。
©2023 Yang Li. All rights reserved.
欢迎关注 『十六宿舍』,大家喜欢的话,给个,更多关于嵌入式相关技术的内容持续更新中。