时钟周期、总线周期详细说明

合集下载

总线周期的概念

总线周期的概念

DMA总线周期的概念1.微处理器是在时钟信号CLK控制下按节拍工作的。

8086/8088系统的时钟频率为4.77MHz,每个时钟周期约为200ns。

2.由于存贮器和I/O端口是挂接在总线上的,CPU对存贮器和I/O 接口的访问,是通过总线实现的。

通常把CPU通过总线对微处理器外部(存贮器或I/O接口)进行一次访问所需时间称为一个总线周期。

一个总线周期一般包含4个时钟周期,这4个时钟周期分别称4个状态即T1状态、T2状态、T3状态和T4状态。

1.DMA的通道选择不是随便的,要根据映像来。

2.外设地址的自增,可能会曾到下一个外设,比如:0X40012400为ADC1的起始地址0X40012800就是ADC2的起始地址了所以在设置此元素是否要递增时要注意了。

STM32 DMA使用详解DMA部分我用到的相对简单,当然,可能这是新东西,我暂时还用不到它的复杂功能吧。

下面用问答的形式表达我的思路。

DMA有什么用?直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。

无须CPU的干预,通过DMA数据可以快速地移动。

这就节省了CPU的资源来做其他操作。

有多少个DMA资源?有两个DMA控制器,DMA1有7个通道,DMA2有5个通道。

数据从什么地方送到什么地方?外设到SRAM(I2C/UART等获取数据并送入SRAM);SRAM的两个区域之间;外设到外设(ADC读取数据后送到TIM1控制其产生不同的PWM占空比);SRAM到外设(SRAM中预先保存的数据送入DAC产生各种波形);……还有一些目前还搞不清楚的。

DMA可以传递多少数据?传统的DMA的概念是用于大批量数据的传输,但是我理解,在STM32中,它的概念被扩展了,也许更多的时候快速是其应用的重点。

数据可以从1~65535个。

直接存储器存取(Direct Memory Access,DMA)是计算机科学中的一种内存访问技术。

它允许某些电脑内部的硬体子系统(电脑外设),可以独立地直接读写系统存储器,而不需绕道 CPU。

微机原理复习(杏)

微机原理复习(杏)

微机原理复习1.微型计算机结构(3总线结构:地址总线、数据总线、控制总线)有16根数据线和20根地址,8086可寻址的内存地址空间达220,即1MB; 8086可寻址的I/O地址空间达216,即64KB;2.8086内部组成,BIU和EU的功能及各自的组成,熟知相应寄存器、功能部件在哪个接口部件中。

EU负责指令的执行;算术逻辑单元(ALU),可完成8位或16位操作数进行算术或逻辑运算; 8个16位通用寄存器(AX、BX、CX、DX、SI、DI、SP和BP);标志寄存器;BIU负责CPU与存储器、I/O设备之间的数据传送。

◆4个16位段寄存器(DS、CS、ES、SS); 8086中有4个16位段寄存器,它们是:CS(代码段寄存器)、DS(数据段寄存器)、SS(堆栈段寄存器)和ES(附加段寄存器)◆指令指针寄存器(IP);指令指针寄存器IP提供下一条要取出的指令所在存储单元的16位偏移地址。

◆20位的地址加法器;8086CPU采用段地址、段内偏移地址两级存储器寻址方式,由一个20位地址加法器根据16位段地址和16位段内偏移地址计算出20位的物理地址PA(Physical Address)。

其计算方法是:将CPU中的16位段寄存器内容左移4位(×16)与16位的逻辑地址(又称偏移地址)在地址加法器内相加,得到所寻址单元的20位物理地址。

▪物理地址 = 段地址×10H+偏移地址假设(CS)=FE00H,(IP)=0400H,那么下一条要取出的指令所在内存单元的20位物理地址PA=FE00H×10H+0400H=FE400H。

3.8086的寄存器结构寄存器是CPU内部用来存放地址、数据和状态标志的部件,8086有14个16位寄存器和8个8位寄存器数据寄存器AX、BX、CX、DX指针和变址寄存器SP、BP、SI、DI标志寄存器FRFR是一个16位的寄存器。

9个位用作标志位:◆状态标志位有6个,控制标志位有3个CF:进位标志:指令执行后,如果运算结果在最高位上产生了一个进位或借位,则CF=1;否则,CF=0。

时钟周期

时钟周期

时钟周期(Clock Cycle):又称节拍周期,是处理操作的最基本单位。

(晶振频率的倒数,也称T状态) 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。

在一个时钟周期内,CPU仅完成一个最基本的动作。

对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250us。

由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。

显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。

但是,由于不同的计算机硬件电路和器件的不完全相同,所以其所需要的时钟周频率范围也不一定相同。

我们学习的8051单片机的时钟范围是1.2MHz-12MHz。

在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。

机器周期在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。

例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。

完成一个基本操作所需要的时间称为机器周期。

一般情况下,一个机器周期由若干个S周期(状态周期)组成。

8051系列单片机的一个机器周期同6个S 周期(状态周期)组成。

前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。

指令周期(Instruction Cycle):取出并执行一条指令的时间。

指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成。

指令不同,所需的机器周期数也不同。

对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。

第四章 8088的总线周期和时序

第四章 8088的总线周期和时序
23
第6章 输入和输出
输入和输出设备是计算机系统的重要组 成部分。
程序
输 计 入 装 置 机 算
输 出 装

原始 数据 信息

24
常用输入装置有: 键盘、扫描仪等. 常用输出装置有: CRT、打印机等. 磁盘、磁带既可做输入也可做输出. 微处理器与外设的连接都是通过输入输出 接口电路进行的。由于外设的功能多种多样, 原理不同,工作速度不同,因此接口电路也是 多种多样。 接口电路分为并行接口和串行接口. 8255A、A/D及D/A等接口将在后面介绍。
5
4.2
8088的总线
4.2.1 8088的两种组态 • 最小组态:系统中只有一片8088,其存储 容量不大,所要连的I/O端口也不多,总线 控制逻辑电路被减到最小。 • 最大组态:构成的系统较大,可能包含不 只一片微处理器,或要求有较强的驱动能 力,带有一个总线控制器8288。
6
4.2.2 8088的引脚和功能
31
2.状态信息 输入设备 用READY表示准备好否? READY=1,准备好; READY=0,未准备好。 输出设备 常用BUSY表示忙否? BUSY=1忙。 例:打印机若不忙,可送数 3.控制信号 (0或1)控制继电器的吸合与断开 或外设的启动与停止等。 状态信息、控制信号与数据是不同性质 的信息,必须区分开来,但微机只有通用的 32 IN/OUT指令。即只能:
16
4.3 最小模式下的8088时序
4.3.1 8088的读周期时序
T1
CLK IO/M A19~A16/S6~S3 A15~A8 AD7~AD0 ALE RD DT/R DEN
17
T2
高IO
T3
低M S6~S3

总线周期的名词解释是什么

总线周期的名词解释是什么

总线周期的名词解释是什么总线周期,又称总线时钟周期,是指计算机系统中各个设备进行数据传输和通信所需要的时间间隔。

在计算机系统中,总线相当于一条电子通路,用于连接各个设备,让它们能够相互传递数据和指令。

不同设备之间的数据传输需要通过总线进行,而总线周期则是用来衡量这个传输过程的时间。

总线周期的长度是由计算机系统的时钟频率决定的。

时钟频率通常以赫兹(Hz)作为单位,表示每秒钟发生的时钟脉冲的次数。

比如,如果计算机系统的时钟频率为1 GHz(即10^9 Hz),那么每秒钟会有10亿个时钟脉冲产生。

总线周期则是时钟周期的倒数,可以用来衡量一个总线操作所需要的时间。

在计算机系统中,各个设备之间的通信需要进行诸如读取、写入、传输等操作。

这些操作会涉及到数据的传输和处理,而总线周期则是用来计算这些传输和处理所需时间的基本单位。

在每个总线周期内,数据会以特定的方式在总线上传输,设备之间要进行的操作会按照时序进行。

当一个总线周期结束后,下一个总线周期即开始,设备之间的下一个操作也会相继执行。

总线周期可以进一步细分为读周期和写周期。

读周期即设备从总线上读取数据的时间段,写周期则是设备向总线上写入数据的时间段。

读周期和写周期的长度取决于设备的特性和总线的带宽。

通常情况下,读周期比写周期短,因为读取数据的操作要比写入数据的操作简单。

在一个总线周期内,可能会有多个设备进行读操作,但一次只能有一个设备进行写操作,以避免数据冲突和干扰。

总线周期对于计算机系统的性能和效率有着重要的影响。

如果总线周期过长,会导致设备之间的数据传输速度变慢,影响计算机系统的响应速度和运行效率。

相反,如果总线周期过短,设备之间的数据传输可能会出现错误和冲突,导致系统不稳定。

因此,合理设置总线周期是计算机系统设计中需要考虑的关键因素之一。

总线周期的名词解释就是上述所述,它是计算机系统中用来衡量设备之间数据传输所需要的时间间隔。

它是由计算机系统的时钟频率决定的,用来标记一个总线操作的开始和结束。

单片机时钟周期、机器周期、指令周期与总线周期

单片机时钟周期、机器周期、指令周期与总线周期

单片机时钟周期、机器周期、指令周期与总线周期时钟周期:时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12us),是计算机中最基本的、最小的时间单位。

在一个时钟周期内,CPU仅完成一个最基本的动作。

对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250us。

由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。

显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。

具体计算就是1/fosc。

也就是说如果晶振为1MHz,那么时钟周期就为1us;6MHz的话,就是1/6us。

8051单片机把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。

机器周期:在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。

例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。

完成一个基本操作所需要的时间称为机器周期。

一般情况下,一个机器周期由若干个S周期(状态周期)组成。

8051系列单片机的一个机器周期同6个S周期(状态周期)组成。

前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。

具体计算为:时钟周期Xcycles。

如果单片机是12周期的话,那么机器周期就是T×12。

假设晶振频率为12M,单片机为12周期的话,那么机器周期就是1us。

例如外接24M晶振的单片机,他的一个机器周期=12/24M秒;52系列单片机一个机器周期等于12个时钟周期。

设晶振频率为12MHz时,52单片机是12T的单片机,即频率要12分频。

8086总线周期时钟周期

8086总线周期时钟周期
17
2. 总线接口部件 BIU 负责CPU与存储器、I/O设备之间传送数据、地址、 状态及控制信息。 组成:
● 4个段地址寄存器(CS、DS、ES、SS) ● 16位的指令指针寄存器IP(Instruction Pointer) ● 20位的地址加法器 ● 6字节的指令队列缓冲器 ● 总线控制逻辑
注意:一个存储单元的物理地址是惟一的,而它对应 的逻辑地址是不惟一的。
30
(3)指令指针寄存器IP—— 16位
功能:用来存放将要执行的下一条指令在代码段中的 偏移地址。在程序运行过程中,BIU自动修改 IP中的内容,使它始终指向将要执行的下一条 指令。
注意:程序不能直接访问IP,但是可通过某些指令修 改IP的内容。例如, 执行转移指令时,会将转 移的目标地址送入IP中,以实现程序的转移。
19
在8086存储空间中,把16字节的存储空间称作一内存节 (paragraph)。要求各个逻辑段从节的整数边界开始,即段 首地址低4位应该是“0”,把段首地址的高16位存放在段寄 存器DS或CS或SS或ES中。
00000H 00010H 00020H …… FFFF0H
20
允许段在整个存储空间浮动,即段与段之间可以 部分重叠、完全重叠、连续排列。在整个存储空间中 可设置若干个逻辑段。
地址指针自动增量;DF=1,表示地址指针自动减量。DF 可通过STD指令置位,也可通过CLD指令复位。
● IF(Interrupt Flag) 中断允许标志位 ----- 用于控制CPU是否允许响应可屏蔽中断请求。 IF=1,表示允许CPU响应可屏蔽中断请求。 IF=0, 表示禁止CPU响应可屏蔽中断请求。 IF可通过STI指令置 位(置1),也可通过CLI指令复位(清零)。

8086CPU时序

8086CPU时序

中断响应周期
中断响应周期
二、最小方式系统总线周期 总线保持请求和总线授予时序
当系统中CPU之外的总线主设备需要占用总线时,向CPU 之外的总线主设备需要占用总线时, 当系统中 之外的总线主设备需要占用总线时 发出一个总线保持请求信号HOLD,该信号可能与时钟信号不 发出一个总线保持请求信号 , 同步。 到该信号时, 同步。CPU在每个时钟周期的上升沿检测到该信号时,在当前 在每个时钟周期的上升沿检测到该信号时 发出HLDA 总线周期的T4后或下一个总线周期的 后或下一个总线周期的T1后 发出 总线周期的 后或下一个总线周期的 后 , CPU发出 信号,并让出总线。 信号,并让出总线。
二、最小方式系统总线周期
读周期
8086最小方式系统读总线周期时序图
二、最小方式系统读写时序
写周期
8086最小方式系统写总线时序图
二、最小方式系统总线周期
CPU中止现行程序 从CPU中止现行程序 转中断服务程序这 一过程, 一过程,用两个总线 周期。 周期。 第一个响应周期 : AD15 AD0 /S7 15使AD15-AD0、/S7、 19/S /S6 16/S 悬空。 /S3 A19/S6-A16/S3悬空。 第二个响应周期 : 外设向数据总线上 输送一个字节的中 断类型号。 断类型号。 每一响应周期的T 每一响应周期的 T1 状态输出一个高电 平脉冲, 平脉冲 , 作为地址 锁存信号。 锁存信号。
5.2 8086系统总线时序 8086系统总线时序
一、基本概念
指令周期:执行一条指令所需要的时间, 指令周期:执行一条指令所需要的时间,有若干总线周期 组成。 组成。 总线周期(机器周期) CPU进行一次数据传输所需的时间。 总线周期(机器周期):CPU进行一次数据传输所需的时间。 进行一次数据传输所需的时间 状态。 一个总线周期至少包括 4个T状态。 状态(时钟周期) CPU处理动作的最小单位位时间 处理动作的最小单位位时间。 T状态(时钟周期):CPU处理动作的最小单位位时间。就 是时钟信号CLK的周期。 CLK的周期 是时钟信号CLK的周期。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

时钟周期:时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。

在一个时钟周期内,CPU仅完成一个最基本的动作。

对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250us。

由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。

显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。

8051单片机把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。

机器周期:在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。

例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。

完成一个基本操作所需要的时间称为机器周期。

一般情况下,一个机器周期由若干个S周期(状态周期)组成。

8051系列单片机的一个机器周期同6个S周期(状态周期)组成。

前面已说过一个时钟周期定义为一个节拍(用P 表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。

例如外接24M晶振的单片机,他的一个机器周期=12/24M 秒;指令周期:执行一条指令所需要的时间,一般由若干个机器周期组成。

指令不同,所需的机器周期也不同。

对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。

对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。

通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。

总线周期:由于存贮器和I/O端口是挂接在总线上的,CPU对存贮器和I/O接口的访问,是通过总线实现的。

通常把CPU通过总线对微处理器外部(存贮器或I/O接口)进行一次访问所需时间称为一个总线周期。

总结一下,时钟周期是最小单位,机器周期需要1个或多个时钟周期,指令周期需要1个或多个机器周期;机器周期指的是完成一个基本操作的时间,这个基本操作有时可能包含总线读写,因而包含总线周期,但是有时可能与总线读写无关,所以,并无明确的相互包含的关系。

指令周期:是CPU的关键指标,指取出并执行一条指令的时间。

一般以机器周期为单位,分单指令执行周期、双指令执行周期等。

现在的处理器的大部分指令(ARM、DSP)均采用单指令执行周期。

机器周期:完成一个基本操作的时间单元,如取指周期、取数周期。

时钟周期:CPU的晶振的工作频率的倒数。

例子:22.1184MHZ的晶振,它的晶振周期、时钟周期和机器周期分别是多少?以51为例,晶振22.1184M,时钟周期(晶振周期)就是(1/22.1184)μs,一个机器周期包含12个时钟周期,一个机器周期就是0.5425μs。

一个机器周期一般是一条指令花费的时间,也有些是2个机器周期的指令,DJNZ,是双周期指令.--------------------------------------------------------红皮书118页说cpu的操作频率可达60MHZ,这个频率是机器周期还是指令周期?ARM机器周期跟指令周期有什么对应关系?由于ARM采用的是三级流水线的技术,所有的指令执行都由相同的三个阶段取指,译码,执行,那么所有的指令的执行时间是不是都是相同的?我的理解是:如果ARM不接pll(即ARM直接采用晶振的周期),ARM的机器周期就是晶振的振荡周期,这两个是等同的,所有的指令的执行时间都是相同的,且都等于晶振周期;如果ARM连接并使能pll,则1/Fcclk就是机器周期,指令的执行频率等于Fcclk。

请教高手指点更正,多谢!!zlgarm :没有机器周期的概念,只有主时钟的概念,它是OLL的输出。

如果程序和数据均在片内RAM中,这样计算指令执行时间1、一般指令需1个主时钟时间2、每次跳转增加3个主时钟时间(也许是2个,需要确认)3、从RAM中取一个操作数多增加一个主时钟时间,以次类推4、保存一个结果到RAM中多增加一个主时钟时间,以次类推5、访问片内外设,增加一个外设时钟时间注意伪指令ldr rn,=x需要从ram中取一个操作数。

slump:如果从FLASH中运行,启动MAM后,当指令不在MAM缓冲中,需用MAMTIM个周期进行MAM预取指。

所以程序跳转的开销是相当大的。

--------------------------------------------------------8051、ARM和DSP指令周期的测试与分析本文对三种最具代表性的微控制器(AT89S51单片机、7TDMI核的LPC2114型单片机和TMS320F2812)的指令周期进行了分析和。

为了能观察到指令周期,将三种控制器的GPIO口设置为数字输出口,并采用循环不断地置位和清零,通过观察GPIO口的波形变化得到整个循环的周期。

为了将整个循环的周期与具体的每一条指令的指令周期对应起来,通过C语言源程序得到汇编语言指令来计算每一条汇编语言的指令周期。

1 AT89S51工作机制及指令周期的AT89S51单片机的时钟采用内部方式,时钟发生器对振荡脉冲进行2分频。

由于时钟周期为振荡周期的两倍(时钟周期=振荡周期P1+振荡周期P2),而1个机器周期含有6个时钟,因此1个机器周期包括12个晶振的振荡周期。

取石英晶振的振荡频率为11.059 2 MHz,则单片机的机器周期为12/11.059 2=1.085 1 μs。

51系列单片机的指令周期一般含1~4个机器周期,多数指令为单周期指令,有2周期和4周期指令。

为了观察指令周期,对单片机的P1口的最低位进行循环置位操作和清除操作。

源程序如下:#includemain() {while(1) {P1=0x01;P1=0x00;}}采用KEIL uVISION2进行编译、链接,生成可执行文件。

当调用该集成环境中的Debug时,可以得到上述源程序混合模式的反汇编代码:2:main()3: {4:while(1)5:{6:P1=0x01;0x000F759001MOVP1(0x90),#0x017:P1=0x00;0x0012 E4CLRA0x0013 F590MOVP1(0x90),A8:}0x001580EDSJMPmain (C:0003)其中斜体的代码为C源程序,正体的代码为斜体C源程序对应的汇编语言代码。

每行汇编代码的第1列为该代码在器中的位置,第2列为机器码,后面是编译、链接后的汇编语言代码。

所有指令共占用6个机器周期(其中“MOVP1(0x90),#0x01”占用2个机器周期,“CLR A”和“MOV P1(0x90),A”各占用1个机器周期,最后一个跳转指令占用2个机器周期),则总的循环周期为6×机器周期=6×1.085 1 μs=6.51 μs。

图1 P1口最低位的波形将编译、链接生成的可执行文件到AT89S51的Flash中执行可以得到P1口最低位的波形,如图1所示。

整个循环周期为6.1 μs,与上面的分析完全一致。

2 LPC2114工作机制及指令周期的测试LPC2114是基于ARM7TDMI核的可加密的单片机,具有零等待128 KB的片内Flash,16 KB的SRAM。

时钟频率可达60 MHz(晶振的频率为11.059 2 MHz,时钟频率设置为11.059 2×4 =44.236 8 MHz,片内外设频率为时钟频率的1/4,即晶振的频率)。

7TDMI核通过使用三级流水线和大量使用内部寄存器来提高指令流的执行速度,能提供0.9 MIPS/MHz的指令执行速度,即指令周期为1/(0.9×44.236 8)=0.025 12 μs,约为25 ns。

为了观察指令周期,将LPC2114中GPIO的P0.25脚设置为输出口,并对其进行循环的置位操作和清除操作。

C 源程序如下:#include"config.h"//P0.25引脚输出#defineLEDCON0x02000000intmain(void){//设置所有引脚连接GPIOPINSEL0 = 0x00000000;PINSEL1 = 0x00000000;//设置LED4控制口为输出IO0DIR = LEDCON;while(1){IO0SET = LEDCON;IO0CLR = LEDCON;}return(0);}采用ADS1.2进行编译、链接,生成可执行文件。

当调用AXD Debugger时,可以得到上述源程序的反汇编代码:main[0xe59f1020]ldrr1,0x4000024840000224[0xe3a00000]movr0,#040000228[0xe5810000]strr0,[r1,#0]4000022c[0xe5810004]strr0,[r1,#4]40000230[0xe3a00780]movr0,#0x200000040000234[0xe1c115c0]bicr1,r1,r0,asr #1140000238[0xe5810008]strr0,[r1,#8]4000023c[0xe5810004]strr0,[r1,#4]40000240[0xe581000c]strr0,[r1,#0xc]40000244[0xeafffffc]b0x4000023c40000248[0xe002c000]dcd0xe002c000每行汇编代码的第1列为该代码在器中的位置,第2列为机器码,后面是编译、链接后的汇编语言代码。

循环部分的语句最关键的就是下面3句:4000023c[0xe5810004]strr0,[r1,#4]40000240[0xe581000c]strr0,[r1,#0xc]40000244[0xeafffffc]b0x4000023c在AXD Debugger中,将其调用到RAM中运行程序得到循环部分GPIO的P0.25的输出波形,如图2所示。

从图中可以看出,循环周期中保持为高电平的时间为1350 ns左右,低电平的时间为450 ns左右,即指令“str r0,[r1,#4]”和指令“str r0,[r1,#0xc]”均需350 ns左右,而跳转指令则需100 ns左右。

这主要是由于以下原因造成的:①ARM的大部分指令是单周期的,但是也有一些指令(如乘法指令)是多周期的;②基于核的微控制器只有加载、存储和指令可以对存储器的数据进行访问,这样从存储器读数据或向存储器写数据要增加1个时钟周期;③访问片内外设要增加一个外设时钟周期。

相关文档
最新文档