弱智的PIC教程之11 机器周期,指令周期

合集下载

指令周期机器周期等各种周期介绍

指令周期机器周期等各种周期介绍

时钟周期:时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如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接口的访问,是通过总线实现的。

PIC指令集中文介绍

PIC指令集中文介绍

编译信息的输出显示级别有三种,分别是 0、1 和 2。

级别 0 代表显示所有信息,包括各种错误、警告和提示信息,如图 3-14 所示某些信息单独设定显示或关闭。

每个信息都有一个识别标号,见图 3-14 中信息项“[]”中的数字,打开或关闭某类信息只需在 errorlev
errorlevel 0, -302, -305 ;显示所有信息,但不需要302 和 305 这两类提示信息
errorlevel 1, +305 ;显示错误和警告信息,但同时还要关注 305类的提示信息
,分别是 0、1 和 2。

级别 0 代表显示所有信息,包括各种错误、警告和提示信息,如图 3-14 所示;级别 1 代表显示错误和警告信息,忽略提示信息;个信息都有一个识别标号,见图 3-14 中信息项“[]”中的数字,打开或关闭某类信息只需在 errorlevel 伪指令中引用信息识别标号,并在其前面用“+”或“-”
有信息,但不需要302 和 305 这两类提示信息
警告信息,但同时还要关注 305类的提示信息
示错误和警告信息,忽略提示信息;级别 3代表只显示错误信息而忽略警告和提示信息。

在任何一个大的级别上还可以对信息识别标号,并在其前面用“+”或“-”号,即代表打开或关闭这一类信息,例如:。

PIC单片机定时器相关用法

PIC单片机定时器相关用法

PIC单片机定时器相关用法什么是定时器?定时器顾名思义就是用来定时的。

在单片机应用中常常用于各种各样的定时。

比如让LED灯每隔 1S 亮一次。

这个1S 就是由定时器做到的。

指令周期指令周期就是单片机执行一个指令所花费的时间。

这也是定时器定时的最小时间单位。

时钟频率/4=指令频率。

1/指令频率=指令周期。

假设现在的时钟是4MHZ ,4MHz的时钟经过4分频后变成了 1MHz 其周期为0.0000001s也就是1us,这个1us 就是指令周期,这1us也就是定时器定时的最小单位。

定时器与预分频器假设在没有预分频器情况下。

开启定时器每隔一个指令周期定时器就加一。

假设时钟是4MHz 也就是每隔1us 定时器加一。

如果有了预分频器假设预分频器设置成2分频,定时器就每隔2个指令周期定时器加一。

如果预分频器设置成4分频,定时器就每隔4个指令周期定时器加一,以此类推。

定时器中断标志位如: TMR0 这个是8位的定时器,也就是8位的寄存器。

8位的寄存器能代表的数值为0~255.也就是说定时器可以从0开始加一直加到255.到255后再加一就又变成0。

此时TMR0定时器中断标志位 (TMR0IF)变成 1.(如果中断没有开启,并不执行中断程序。

)到底从时钟频率一直到定时器中断溢出之间是什么关系呢?下面我画了一个流程图我们用频率的方式来理解这一切。

假设时钟频率是4MHz ,定时器预分频值为2,定时器初始值为0.1。

首先4MHz 的时钟 4分频后变成 1MHz的指令频率; 2。

然后预分频器 2 分频后变成 0.5MHz的频率供给定时器;3。

定时器经过256分频后变成约1952Hz的频率溢出中断;然后我们再用周期的方式来理解这一切。

1。

首先0.25us时钟周期4分频后变成 1us指令周期; 2。

然后预分频器 2 分频后变成 2us周期供给定时器;3。

定时器每隔2us加一,加到256次256X2us=512us溢出中断 ;希望上面的流程图能帮你梳理一下概念。

单片机指令周期怎么计算

单片机指令周期怎么计算

单片机指令周期怎么计算指令周期:指令周期执行某一条指令所消耗的时间,它等于机器周期的整数倍。

传统的80C51单片机的指令周期大多数是单周期指令,也就是指令周期=机器周期,少部分是双周期指令。

现在(截至2012)新的单片机已经能做到不分频了,并且尽量单指令周期,就是指令周期=机器周期=时钟周期。

来看这张8051单片机外部数据,这里ALE和$PSEN$的变化频率已经小于一个机器周期,如果使用C语言模拟这个信号是没有办法做到的一一对应的,所以只能尽量和上面的时序相同,周期延长。

指令周期是不确定的,因为她和该条指令所包含的机器周期有关。

一个指令周期=1个(或2个或3个或4个)机器周期,像乘法或除法就含有4个机器周期,单指令就只含有1个机器周期。

对于大多说的51单片机来说,1个机器周期=12个时钟周期(或振荡周期)也有部分单片机时钟周期和振荡周期不相等,例如,1个时钟周期=2个振荡周期。

该定义指的是执行一条指令所需要的时间,通常一个指令周期会由若干个机器周期组成。

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

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

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

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

PIC单片机指令周期计算PIC单片机的每四个时钟周期为一个内部指令周期例如:8MHz的晶振,则内部指令周期为1/(8/4)= 0.5 uS实例一:35us,8MHz的晶振,8位定时器,分频比1/2 ,初值E4实例二:156.25us ,32768Hz的晶振,8位定时器,分频比1/32 ,初值FC计算方法一:35 = =(256-初值)*分频*4/晶振+ 14/分频=(256-初值)+14/2。

指令周期机器周期等各种周期介绍

指令周期机器周期等各种周期介绍

时钟周期:时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如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接口的访问,是通过总线实现的。

PIC单片机的指令系统

PIC单片机的指令系统
黄之峰 广东工业大学 自动化学院
本讲内容 1. PIC单片机的指令系统概述 2. 汇编语言与机器指令的关系 3. 数据传送类指令 4. 逻辑运算类指令 5. 算数运算类指令 6. 4种寻址方式
第四讲 1. PIC单片机的指令系统概述
机器语言是由一条条语句构成的,每一条语句又能准 确表达某种语义。例如,他可以命令机器做某种操作, 指出参与操作的数或者信息在什么地方等。计算机就 是连续执行每一条机器语句而实现全自动工作的。每 一条机器语言称之为机器指令。全部的机器指令的集 合称之为机器的指令系统。 指令由操作码和地址码两部分组成。
第四讲 2. 汇编语言与机器指令的关系
MOห้องสมุดไป่ตู้WF 0x55H
编译软件: 把汇编翻译成 机器指令
010101 101010 01……
第四讲 2. 汇编语言与机器指令的关系
表4-1 核心助记符 p46
核心助记符 含义 MOV SWAP 数据传送 交换 核心助记符 含义 RR RL 右移 左移
ADD
SUB INC
第四讲 4. 逻辑运算类指令
D、逻辑运算指令x 7 (影响标志位Z) ANDWF f, d 作用:把寄存器f的值与W寄存器的值按位相与,d=0 则结果保存到W寄存器,d=1则结果保存到寄存器f。
第四讲 4. 逻辑运算类指令
实例2(工程名PICT4-31 ): INCLUDE "P16F877A.INC“ ; 加载头文件 ORG 0000H ;程序从0000H开始 NOP ;空操作 MOVLW 0x11 CLRF 0x20 ;寄存器0x20清零 CLRW ; 寄存器W清零 MOVLW 0x34 ; 对W寄存器赋值0x34 MOVWF 0x20 ; 对寄存器0x20赋值 RLF 20H,1 ;寄存器0x20左移动1位,结果放入 20H NOP END

指令周期流程图

指令周期流程图

指令周期流程图指令周期是指CPU执行一条指令所经历的一系列步骤。

下面将介绍一种常见的指令周期流程图,包括取指令、译码、执行、访存和写回五个步骤。

首先是取指令(IF)阶段,CPU从内存的指令缓存中取出下一条要执行的指令,并将程序计数器(PC)加1,以指向下一条指令的地址。

接下来是译码(ID)阶段,CPU对取出的指令进行解码,确定指令的类型和操作数等信息。

这个阶段还会检查指令是否合法,若存在异常情况会停止或重新执行指令。

然后是执行(EX)阶段,CPU根据指令的类型和操作数进行计算和操作。

这个阶段可能包括算术运算、逻辑运算、数据传输等操作。

一些指令可能还会涉及到对内存或其他外设的访问。

接着是访存(MEM)阶段,CPU根据指令的需要,读取或写入数据到内存中。

这个阶段可能涉及到读取或写入寄存器、缓存、外设等操作。

这个阶段还可能包括对缓存的命中和失效的处理。

最后是写回(WB)阶段,CPU将执行结果写回到寄存器或缓存中。

这个阶段是为了保证指令的结果可以被后续的指令使用。

有些指令可能不涉及写回操作。

以上就是一条指令的完整指令周期流程。

在实际执行中,这些阶段可能会出现重叠,以提高指令的执行效率。

例如,在某条指令的执行阶段同时进行下一条指令的取指令和译码阶段,以减少延迟。

在现代的CPU中,指令周期的流程图可能会更加复杂,包括预取和预执行等优化技术。

此外,还可能存在流水线冲突、分支预测等问题需要解决。

总之,指令周期流程图描述了CPU执行一条指令所经历的一系列步骤。

通过合理的流程设计和优化技术,可以提高CPU 的执行效率,提高计算机系统的性能。

PIC11定时器/计数器TMR1

PIC11定时器/计数器TMR1



⒈同步计数器工作方式 当 T1SYNC=0 , TMR1 工作在同步方式。 此时,外部输入信号要与系统时钟脉冲在相位 上进行同步。此时假如单片机进入了睡眠模式, 即使有外部触发信号输入, TMR1 也不会增加, 因为同步逻辑电路被关闭,如下图所示。
⒉ 异步计数器工作方式
当T1SYNC=1时,TMRl工作在异步方式。此 时,外部输入信号不与系统时钟脉冲相位进行同 步。此时若单片机处于睡眠模式时,计数器随着 外部触发信号所进行的增量操作不受影响,如图 3.11所示。

自带一个时基振荡器,可记录年、月、日、时、 分、秒,实现实时时钟RTC(real time clo用,实现输入捕捉或输出 比较功能。 TMR1由二个8位寄存器TMR1H和TMR1L对 组成的16位定时器/计数器,可以由软件读/写, 这二个寄存器都是和RAM统一编址的,地址分别 为0EH和0FH 。 TMR1H:TMR1L寄存器对,从0000H递增到 FFFFH(0~65535)之后再返回到0000H时,就会 产生溢出,并且将溢出中断标志位TMR1IF设置 为1。如果此时相关的中断使能位TMR1IE和GIE 都为1,就会引起CPU的中断响应。

一旦 TMR1 自带振荡器被使能 (T1OSCEN=1) , RC1 / T1OSI / CCP2 和 RC0 / T1OSO / T1CKI 引脚就自动设为专用引脚,此时 TRISC 方向寄 存器bit1和bit0的值将失效。 当对寄存器 TMR1H 或 TMR1L 进行赋值时, 预分频器将会自动清0。
TMR1 的触发信号源可来自内部系统时钟、 外部触发信号或自带时基振荡器信号;因此即可 以工作于定时器模式,又可工作于计数器模式, 还可以用作实时时钟RTC模式;

第4章PIC指令系统

第4章PIC指令系统
如果“d”为1,结果存回到寄存器“f”。
PIC单片机原理
例:已知(50H)=5AH,(30H)=60H,(FSR)=50H ,
(40H)=00H MOVF 40H,F ;结果 Z=1
MOVF 50H,W ;结果(W)=5AH,Z=0 MOVLW 20H ;结果(W)=20H,Z=? MOVWF 30H ;结果(30H)=20H,Z= ?
W 和f 异或运算
操作数: 0 ≤ f ≤ 127
d ∈ [0,1]
操作: (W) .XOR. (f) 目标寄存器)
受影响的状态位:Z
说明: W 寄存器与“f”寄存器的内容进行异或运
算。 如果“d”为0,结果存入W。 如果“d”为1,
结果存回到寄存器“f”。
PIC单片机原理
11)
ANDLW k
PIC单片机原理
4)
DECFSZ f,d f
减1,为0 则跳过
操作数: 0 ≤ f ≤ 127
d ∈ [0,1]
操作:(f) - 1 目标寄存器) ;如果结果为0 则跳过 ( 受影响的状态位:无 说明:寄存器“f”的内容递减, 如果“d”为0,结果存入 W 寄存器。如果“d”为1,结果存回到寄存器“f”。如果 结果非0,执行下一个指令。如果结果为0,则执行NOP 指令,使其成为2TCY 的指令。
ADDWF INDF,W ;(W)=5AH,Z=0,C=0 ,DC=0
SUBWF 30H ,F ;(30H)-(W) =06H,Z=0,C= ? ,DC=?
PIC单片机原理
3、逻辑运算类指令
1) CLRF f 操作: 00h (f)
有14条
f 清零 ;1 Z
操作数: 0 ≤ f ≤ 127

PIC单片机指令周期计算

PIC单片机指令周期计算

PIC 单片机指令周期计算
PIC 单片机的每四个时钟周期为一个内部指令周期
例如:8MHz 的晶振,则内部指令周期为1/(8/4)= 0.5 uS
实例一:35us,8MHz 的晶振, 8 位定时器, 分频比1/2 , 初值E4
实例二:156.25us , 32768Hz 的晶振, 8 位定时器, 分频比1/32 , 初值FC 计算方法一:35 = =(256-初值)*分频*4/晶振+ 14/分频=(256-初值)+14/2 计算方法二:0.015625 =(256-初值)*分频*4/晶振= (256-初值)*32*4/32768 特别注意:分频比1-8 需要加上一个14/分频
什幺是预分频比后分频比
分频器一般都是跟计数单元一起结合使用。

预分频比是在计数单元值发生变化之前起作用(假如不用预分频时,计数器在每个上升沿到来时加1,而现在使用分频比为1:2 的预分频器的话,那幺必须等到两个上升沿的到来,计数器才会加1)。

PIC指令介绍

PIC指令介绍

PIC指令介绍PIC的指令系统PIC 8位单片机共有三个级别,有相对应的指令集。

基本级PIC系列芯片共有指令33条,每条指令是12位字长;中级PIC系列芯片共有指令35条,每条指令是14位字长;高级PI C系列芯片共有指令58条,每条指令是16位字长。

其指令向下兼容。

一、PIC汇编语言指令格式PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下:标号操作码助记符操作数1,操作数2;注释指令格式说明如下:指令的4个部分之间由空格作隔离符,空格可以是1格或多格,以保证交叉汇编时,PC机能识别指令。

1、标号与MCS-51系列单片机功能相同,标号代表指令的符号地址。

在程序汇编时,已赋以指令存储器地址的具体数值。

汇编语言中采用符号地址(即标号)是便于查看、修改,尤其是便于指令转移地址的表示。

标号是指令格式中的可选项,只有在被其它语句引用时才需派上标号。

在无标号的情况下,指令助记符前面必须保留一个或一个以上的空格再写指令助记符。

指令助记符不能占用标号的位置,否则该助记符会被汇编程序作标号误处理。

书写标号时,规定第一字符必须是字母或半角下划线“—”,它后面可以跟英文和数字字符、冒号(:)制符表等,并可任意组合。

再有标号不能用操作码助记符和寄存器的代号表示。

标号也可以单独占一行。

2、操作码助记符该字段是指令的必选项。

该项可以是指令助记符,也可以由伪指令及宏命令组成,其作用是在交叉汇编时,“指令操作码助记符”与“操作码表”进行逐一比较,找出其相应的机器码一一代之。

3、操作数由操作数的数据值或以符号表示的数据或地址值组成。

若操作数有两个,则两个操作数之间用逗号(,)分开。

当操作数是常数时,常数可以是二进制、八进制、十进制或十六进制数。

还可以是被定义过的标号、字符串和ASCⅡ码等。

具体表示时,规定在二进制数前冠以字母“B”,例如B10011100;八进制数前冠以字母“O”,例如O257;十进制数前冠以字母“D”,例如D122;十六进制数前冠以“H”,例如H2F。

PIC单片机定时器初值计算方法及几种周期小结

PIC单片机定时器初值计算方法及几种周期小结

PIC单片机定时器初值计算方法及几种周期小结
PIC 定时器也用是蛮多的,据说网上还有计算初值的强力软件,不过我还
是手动算下吧。

总结了下2013.8.27PIC 单片机定时器初值计算方法
PIC 的指令周期是4 个震荡周期,在没有使用分频器的情况下,TMR0 会在
每个指令周期信号(等于晶体振荡器产生的主时钟周期的 4 倍)到来时自动
加1。

在配置了分频器的情况下,TMR0 会在每次收到由分频器将指令周期信
号分频一个固定倍数后产生的信号时自动加1。

如果TMR0 在累加计数的过程中,CPU 执行一条往TMR0 中写入数据的指令,则累加计数器的加 1 操作
将被推迟两个指令周期,重新开始计数。

这两个指令周期的偏差在用户编写时
间精度要求较高的程序时应引起注意,可以通过在每次写入TMR0 时给一个
调整值的方法来解决。

假设的是时钟频率为4MHz。

因此,一个指令周期就是一个微秒(μs)
的时间。

,也就是计数一次时间是1us。

没有分频比定时器的初值计算公式:T0=256-Tc+2
其中TC 是想得到的次数。

加2 的原因是写值的时候要消耗两个指令周期。

如果分频器给了定时器,最好不要再读写TMR0 了,不然会照成误差。

假设分频器是16,晶振是4Mhz,一次由00 到FF 的时间是
16*256=4096us。

假设50ms 的时间
在中断每次加上4096,
主程序检查是不是超过5000,超过了就减掉5000,这样算是50ms 就得到了。

1:8。

PIC汇编指令集概述

PIC汇编指令集概述

PIC汇编指令集概述2010-8-4 16:23:39PIC单片机(Peripheral Interface Controller)是一种用来开发的去控制外围设备的集成电路(IC),翻译为外设接口控制器。

PIC 意思确实有点奇怪,不知道的话第一个P肯定翻译为Programable(可编程)的。

目前我接触的基本都是8位的CPU,包括AVR,PIC等系列,之前我写的程序都是以C语言去写的,也从未出现过什么问题,虽然很多人说道C语言的BUG问题,我一直都不是很在意,就目前为止我从未遇到过这种问题,用AVR-GCC写的时候也曾经出现过问题,也怀疑过C语言和编译器,最终事实证明是错的,一直都是我们没有注意的语法问题的造成的。

接触PIC后我开始用起了他的汇编,原因无它,只是大家都在用汇编。

这是发表的第二篇文章,处女篇给了梦梦哈,首先介绍一下PIC的单片机,PIC单片机是基于哈弗结构的精简指令集(RISC)的单片机,没啥说的,很多单片机都是的。

特殊的地方就是他的指令和存储器结构,一直有个问题到底是他的指令结构决定的他的存储器结构,还是存储器结构决定的指令结构?PIC8位机分为低中高三个档子,低档次的是PIC12系列的,指令是以12BIT结构编码的,对应的指令集有33条指令;中档的CPU是PIC16系列,指令集包含35条指令,并且是以14BIT的结构编码的;高档次的PIC18系列包含58条指令,每条指令是以16BIT结构编码的。

并且所有指令向下兼容。

PIC指令的语法和其他系列的一样,都是有以下几部分组成的:标号操作码助记符操作数1 操作数2 ;注释1。

关于标号,没啥说的,和其他单片机一样,它表示一个地址,标号也是可选的,不是所有的指令都需要的,只有在被其他语句引用时才需的,在没有标号的情况下,操作码助记符前必须保留一个或以上的空格再去写指令助记符,一般使用一个TAB,如果没有标号,而操作码助记符占用了标号的位置,汇编器会把指令助记符当做标号来处理。

单片机学习笔记

单片机学习笔记

C51的机器周期和指令周期(1)振荡周期: 也称时钟周期, 是指为单片机提供时钟脉冲信号的振荡源的周期,实验板上一般为11.0592MHZ。

(2)状态周期: 每个状态周期为时钟周期的2 倍, 是振荡周期经二分频后得到的。

(3)机器周期: 一个机器周期包含6 个状态周期S1~S6, 也就是12 个时钟周期。

在一个机器周期内, CPU可以完成一个独立的操作。

(4)指令周期: 它是指CPU完成一条操作所需的全部时间。

每条指令执行时间都是有一个或几个机器周期组成。

MCS - 51 系统中, 有单周期指令、双周期指令和四周期指令。

I/O口I/O口,可作为输入和输出端口,在写程序时,1为高电平,0为低电平,高位控制大数,低位控制小数。

电阻标号认阻值标号103,表示10*103Ω,即10kΩ,150表示15*100Ω,即15Ω。

1002表示100*102Ω;标号3R0表示3Ω,4K7表示4.7KΩ,R002表示0.002Ω。

LED灯LED灯,即发光二极管,通过5mA左右的电流即可点亮,导通后两端电压为1.7V左右,在电路中,有一个电阻与之串联,二极管具有先分压特性,电阻电压为电源电压减去二极管两端的电压,电路中电流为电阻电压除以电阻大小。

在控制中,利用串口的电压高低来使二极管点亮或熄灭。

可以利用延时使二极管闪烁。

在C语言中,可以使用库实现左移和右移。

_crol_(变量,位数),其返回值为一个十六进制的数,将其赋给端口,实现循环左移。

_cror_()与_crol_()相同,实现循环右移。

两个函数包含在intrins.h这个头文件中。

移位(1)左移。

C51中操作符为“<<”,每执行一次左移指令,被操作的数将最高位移入单片机的PSW寄存器的CY为,CY位中原来的数丢弃,最低位补0,其它位依次向左移动一位。

(2)右移。

C51中操作符为“>>”,每执行一次左移指令,被操作的数将最低位移入单片机的PSW寄存器的CY为,CY位中原来的数丢弃,最高位补0,其它位依次向右移动一位。

PIC指令集

PIC指令集

PIC指令集NOP 空操作指令执行时间:1个指令周期执行过程:除了消耗单片机一个指令周期外,没有任何其他影响。

说明:NOP指令归属于字节操作是个特例,因为该指令的执行没有任何操作数参与,其结果也不影响任何其他寄存器。

一般用于指令运行过程中的延时。

MOVWF 把W寄存器的内容传送至数据寄存器中语法形式:MOVWF f操作数:f为数据寄存器的低7位地址(0x00~0x7f)执行时间:1个指令周期执行过程:把W寄存器的内容传送至数据寄存器中,W寄存器的内容保持不变说明:该指令是用于对数据寄存器赋值的最主要方式MOVF 把数据寄存器的内容传送至目的寄存器语法形式:MOVF f, d操作数: f为数据寄存器的低7位地址(0x00~0x7f)d=w,把数据寄存器的内容传送至W寄存器d=f,把数据寄存器内容放回自己本身,目的在于判断数据寄存器的内容是否为0执行时间:1个指令周期执行过程:[f] d说明:该指令可以通过W寄存器把数据寄存器的内容传送至它处,或对数据寄存器做判0操作。

如果传送的数据为0,则置位Z标志。

CLRW W寄存器的内容清0语法形式:CLRW执行时间:1个周期执行过程:0x00 W 1 Z状态标志影响:Z说明:该指令对W寄存器清0,同时置位0标志Z另外有一条指令movlw 0x00 也可以使W寄存器清0,但不影响任何状态标志。

指令范例:CLRWCLRF 数据寄存器的内容清0语法形式:CLRF f操作数:f为数据寄存器的低7位地址(0x00~0x7f)指令编码:00 0001 1fff ffff执行时间:1个指令周期执行过程:0x00 f1 Z状态标志影响:Z说明:该指令对数据寄存器清0,同时置位0 标志Z指令范例:CLRF TRISBSUBWF 数据寄存器的内容和W寄存器相减语法形式:SUBWF f,d操作数:f为数据寄存器的低7位地址(0x00~0x7f)d=f, 结果放在数据寄存器内,W的内容不变d=w,结果放在W寄存器内,数据寄存器的内容不变指令编码:00 0010 dfff ffff执行时间:1个指令周期执行过程:[f]-[W] d状态标志影响:Z DC C说明:必须特别注意W寄存器在这条减法指令里是减数如果f=W,相减的的结果为零,则Z=1如果f>W,没有借位发生,则C=1如果f<W ,有借位发生,则C=0实际上在PIC单片机内部这条减法指令的执行是先对W寄存器求补码,然后与被减数相加,所以判别是否有借位标志时和其他常见的单片机正好相反,编写程序时要千万小心指令范例:MOVLW 0x23 ;W=0x23MOVWF tmp ;tmp=0x23MOVLW 0x32 ;W=0x32SUBWF tmp,W;W=tmp – W=0xf1,tmp=0x23;tmp< W,所以C=0ADDWF 数据寄存器的内容和W寄存器相加语法形式:ADDWF f,d操作数:f为数据寄存器的低7位地址(0x00~0x7f)d=f, 结果放在数据寄存器内,W的内容不变d=w,结果放在W寄存器内,数据寄存器的内容不变指令编码:00 0111 dfff ffff执行时间:1个指令周期执行过程:[f]+[W] d状态标志影响:Z DC C说明:数据寄存器的内容和W寄存器相加,结果按照d指定的目的地存放指令范例:MOVLW 0x55 ;W=0x55,假定Sum=0xaaADDWF Sum,f ;W不变,Sum=0xffIORWF 数据寄存器的内容和W寄存器做逻辑或操作语法形式:IORWF f,d操作数:f为数据寄存器的低7位地址(0x00~0x7f)d=f, 结果放在数据寄存器内,W的内容不变d=w,结果放在W寄存器内,数据寄存器的内容不变指令编码:00 0100 dfff ffff执行过程:[f] | [W] d状态标志影响:Z说明:数据寄存器的内容和W寄存器相或,结果按照d指定的目的地存放。

指令PIC的指令详解

指令PIC的指令详解

伪指令#‎i nclu‎d e p1‎6f877‎a.inc‎list‎p=16‎f877a‎,r=de‎c__c‎o nfig‎__id‎l ocs(‎用户利用它‎存放程序版‎本或日期等‎) __i‎d locs‎0x12‎34er‎r orle‎v el 0‎,-302‎,-305‎(编译信‎息输出显示‎等级及对对‎某些信息的‎单独设定)‎#def‎i ne/#‎u ndef‎i ne #‎d efin‎e KEY‎1 POR‎T B,7‎e qu w‎_temp‎equ ‎0x20‎c bloc‎k+end‎c: cb‎l ock ‎0x20 ‎w_tem‎p buf‎f er:8‎var1‎endc‎org ‎0x00‎d t(定义‎表格数据‎代替ret‎l w)ta‎b le ‎a ddwf‎pcl,‎f‎dt ‎0‎dt ‎1,2,'‎3';re‎t lw 1‎‎‎‎;retl‎w 2‎‎‎ ;re‎t lw 0‎x33('‎3')‎d‎t"ab‎c" ;‎r etlw‎'a' ‎‎‎ ;r‎e tlw ‎'b'‎‎‎ ;re‎t lw '‎c'de‎(源程序中‎定义片内e‎e prom‎的初值其‎实地址0x‎2100)‎org ‎0x210‎0‎d‎e 0,‎1,2,3‎‎de ‎"ABC‎D";定义‎8个字节‎f ill(‎填充程序空‎间) fi‎l l 0x‎0000,‎5‎fill‎(got‎o $),‎n ext_‎b locl‎k-$ (‎从当前填充‎至标号ne‎x t)死循‎环end‎宏指令‎bank‎s el、p‎a gese‎l、ban‎k isel‎、clrc‎、setc‎、clrz‎、setz‎、clrd‎c、set‎d c、sk‎p c、sk‎p nc、s‎k pdc、‎s kpnd‎c、bc、‎b nc、b‎z、bnz‎、bdc、‎b ndc‎m acro‎自定义宏‎1.AD‎D LIT‎E RAL ‎T O W‎A DDLW‎K (W‎)+K->‎W加立即数‎至WAD‎D LW 0‎X15W‎=0X10‎->0X2‎52.A‎D D W ‎T O F‎A DDWF‎F,D ‎((W)+‎(F)->‎W/F)‎A DDWF‎REG1‎,0 AD‎D WF F‎S R,1‎3.ADD‎W AN‎D CAR‎R Y D ‎T O F‎A DDWF‎C F,D‎ADDW‎F C FS‎R,1 (‎W+FSR‎+C->F‎S R)4‎.AND ‎L ITER‎A L AN‎D WA‎N DLW ‎KAND‎L W 0x‎5F((W‎)并0x5‎F->W)‎5.AN‎D W W‎I TH F‎ANDW‎F F,D‎ANDW‎F FSR‎1 (W‎并FSR-‎>W/F)‎6.BI‎T CLE‎A R F‎B CF F‎,BBC‎F FLA‎G_REG‎,7 将F‎L AG_R‎E G的D7‎清07.‎B IT S‎E T F‎B SF F‎,BBS‎F PRO‎T A,0 ‎ PRO‎T A的D0‎置18‎.BIT ‎T EST,‎S KIP ‎I F CL‎E ARB‎T FSC ‎F,BB‎T FSC ‎F LAG,‎1 FAL‎S E TR‎U E位测试‎0跳转‎9.BIT‎TEST‎,SKIP‎IF S‎E TBT‎F SS F‎,BBT‎F SS F‎L AG,1‎FALS‎E TRU‎E位测试‎1跳转1‎0.BIT‎TOGG‎L E F‎B TG F‎,BBT‎G PRO‎T C,4 ‎位取反 P‎O RTC=‎0111 ‎0101-‎>0110‎0101‎11.S‎U BROU‎T INE ‎C ALL‎C ALL ‎调用子程序‎12.C‎L EAR ‎FCLR‎F FLA‎G_REG‎(F清零‎置Z=1‎)13.‎C LEAR‎W RE‎G ISTE‎RCLR‎W (W清‎零置Z=‎1)14‎.CLEA‎R WAT‎C HDOG‎TIME‎RCLR‎W DT(监‎视定时器清‎零 00h‎->WDT‎0->W‎D T预定标‎器 1->‎T O' 1‎->PD'‎) 15.‎C OMPL‎E MENT‎FCO‎M F RE‎G1,0(‎寄存器内容‎取反->W‎/F)1‎‎P ARE ‎F WIT‎H W,S‎H IP I‎F F=W‎CPF‎S EQ ‎R EG1‎‎P ARE ‎F WIT‎H W,S‎H IP I‎F F>W‎CPFS‎G T RE‎G18.‎C OMPA‎R E F ‎W ITH ‎W,SHI‎P IF ‎F<WC‎P FSLT‎REG‎19.DE‎C IMAL‎ADJU‎S T W ‎R EGIS‎T ER‎D AW R‎E G1,0‎(对F中‎内容进行1‎0进制调整‎->F/W‎+F)R‎E G1=0‎X A5 C‎=0 DC‎=0->0‎X05 C‎=1 DC‎=020‎.DECR‎E MENT‎FDE‎C F CN‎T,1(寄‎存器内容减‎1->W/‎F)21‎.DECR‎E MENT‎F,SH‎I P IF‎0DE‎C FSZ ‎C NT,1‎GOTO‎...‎C ONTI‎N UE .‎..(减1‎后为0跳转‎至CONT‎I NUE)‎22.D‎E CREM‎E NT F‎,SHIO‎IF N‎O T 0‎D ECFS‎N Z CN‎T,0G‎O TO .‎..CO‎N TINU‎E ...‎(减1后不‎为0跳转至‎C ONTI‎N UE)‎23.UN‎C ONDI‎T IONA‎L BRA‎N CH24.‎I NCRE‎M ENT ‎FINC‎F CNT‎,1(指令‎加1)C‎N T=0X‎F F Z=‎0 ->C‎N T=0X‎00 Z=‎1 C=1‎25.I‎N CREM‎E NT F‎,SHIP‎IF 0‎INCF‎S Z F,‎D26.‎I NCRE‎M ENT ‎F,SHI‎P IF ‎N OT 0‎INCF‎S NZ F‎,D27‎.INCL‎U SIVE‎OR L‎I TERA‎L WIT‎H WI‎O RLW ‎0X35(‎(W)或0‎X35->‎W)28‎.INCL‎U SIVE‎OR W‎WITH‎FIO‎R WF R‎E SULT‎,1 ((‎W)或RE‎S ULT-‎>RESU‎L T)2‎9.LON‎G CAL‎L长调用‎指令??‎?和CAL‎L有区别?‎??MO‎V LW H‎I GH 高‎位地址M‎O VPF ‎W REG,‎P CLAT‎H存放在‎P CLAT‎H中LC‎A LL L‎O W 调用‎子程序(指‎令只含低8‎位地址)‎30.MO‎V E F‎M OVF ‎R EG,0‎((RE‎G)->W‎)31.‎M OVE ‎F TO ‎PMOV‎F P F,‎P (F:‎00H-F‎F H P:‎00H-1‎F H)M‎O VFP ‎R EG1,‎R EG2‎把数据存储‎单元传至某‎外围接口寄‎存器内容‎32.MO‎V E LI‎T ERAL‎TO L‎O W NI‎B BLE ‎I N BS‎RMOV‎L B 0X‎A5 BS‎R=0X2‎2->0X‎25(传立‎即数至BS‎R寄存器低‎4位高4‎位为0) ‎33.MO‎V E LI‎T ERAL‎TO H‎I GH N‎I BBLE‎IN B‎S RMO‎V LR 5‎BSR=‎0X22-‎>0X52‎(传至高‎4位低4‎位为0)‎34.MO‎V E LI‎T ERAL‎TO W‎MOVL‎W 0X5‎A W=0‎X5A (‎立即数传至‎W)35‎.MOVE‎P TO‎FMO‎V PF R‎E G1,R‎E G2 ‎(F:00‎H-FFH‎P:00‎H-1FH‎)把某外‎围接口寄存‎器内容传至‎数据存储单‎元36.‎M OVE ‎W TO ‎FMOV‎W F RE‎G ((W‎)->RE‎G)37‎.NEGA‎T E W‎N EGW ‎R EG 0‎(REG‎取反->F‎/F+W)‎取反的规则‎???P2‎5138‎.NO O‎P ERAT‎I ONN‎O P无操‎作占用一‎个指令周期‎PC+1‎39.L‎O AD O‎P TION‎REGI‎S TER‎(W)->‎O PTIO‎N只为可‎移植至PI‎C16C6‎X不建议‎使用40‎.RETU‎R N FR‎O M IN‎T ERRU‎P TRE‎T FIE ‎TOS-‎>PC 1‎->GIE‎(中断允‎许位GIE‎开放中断)‎指令周期2‎41.R‎E TURN‎LITE‎R AL T‎O WK->‎W TOS‎->PC(‎立即数传至‎W并返回‎地址至PC‎)指令周期‎2 CA‎L L TA‎B LET‎A BLE ‎ ADD‎W F PC‎RET‎L W K1‎RET‎L W K2‎...‎RET‎L W KN‎->W=‎0X07-‎>W=K7‎?‎42.R‎E TURN‎FROM‎SUBR‎O UTIN‎ERET‎U RN (‎T OS->‎P C 指令‎周期2)‎43.RO‎T ATE ‎L EFT ‎F THR‎O UGH ‎C ARRY‎RLF ‎F,D/R‎L CF F‎,DF(‎N)->D‎(N+1)‎F(7)‎->C C‎->D(0‎)RLF‎REG1‎,0R‎E G1=1‎110 0‎110->‎1110 ‎0110 ‎C=0->‎1 W=1‎100 1‎1004‎4.ROT‎A TE L‎E FT F‎NO C‎A RRY‎R LNCF‎ F,D‎无进位‎循环左移‎45.RO‎T ATE ‎R IGHT‎F TH‎R OUGH‎CARR‎YRRF‎F,D/‎R RCF ‎F,DR‎R F RE‎G1,0‎R EG1=‎1110 ‎0110-‎>1110‎0110‎C=1-‎>0 W=‎0111 ‎0011‎46.RO‎T ATE ‎R IGHT‎F NO‎CARR‎YRRN‎C F F,‎D无进‎位循环右移‎47.S‎E T F‎S ETF ‎F,SS‎E TF R‎E G,0‎W REG=‎0X05-‎>0XFF‎REG=‎0XDA-‎>0XFF‎48.S‎L EEP‎O OH->‎W DT 0‎->WDT‎预分频器‎1->TO‎'(定时时‎间) 0-‎>PD'掉‎电状态4‎9.SUB‎T RACT‎W FR‎O M LI‎T ERAL‎SUBL‎W KK‎-(W)-‎>WMO‎V LW 0‎1HSU‎B LW 0‎2H W=‎01H C‎=1结果为‎正MO‎V LW 0‎2HS‎U BLW ‎02H W‎=0 C=‎1结果为0‎MOV‎L W 02‎HSUB‎L W 01‎H W=F‎F C=0‎结果为负‎50.S‎U BTRA‎C T W ‎F ROM ‎FSUB‎W F F,‎D‎M OVWF‎REG1‎MOVL‎W 2S‎U BWF ‎R EG1,‎0 W=1‎C=1‎MOVL‎W 2M‎O VWF ‎R EG1‎M OVLW‎2SU‎B WF R‎E G1,0‎W=0 ‎C=1‎M OVLW‎2MO‎V WF R‎E G1M‎O VLW ‎3SUB‎W F RE‎G1,0 ‎W=FF ‎C=0‎51.SU‎B TRAC‎T W F‎R OM F‎WITH‎BORR‎O WSU‎B WFB ‎F,D(‎F)-(W‎)-C->‎F/W带借‎位F-W减‎法MOV‎L W 4‎M OVWF‎REG1‎MOVW‎F REG‎1MOV‎L W 2‎S UBWF‎B REG‎1,0 设‎C初始为1‎则W=1‎C=1‎52.SW‎A P F‎S WAPF‎F,D‎S WAPF‎REG1‎,1RE‎G1=0X‎A5->0‎X A5 W‎=0X5A‎REG1‎=0X5A‎?‎53.T‎A BLE ‎R EAD‎T ABLR‎D T,I‎,FTA‎B LRD ‎1,1,R‎E GRE‎G=OX5‎3->0X‎A A TB‎L ATH=‎0XAA-‎>0X12‎TBLA‎T L=0X‎55->0‎X34T‎B LPTR‎=0XA3‎56->0‎X A356‎7存储单‎元=0X1‎234->‎0X567‎8传‎高字节??‎?TBL‎A T中一个‎字节传至F‎T=0传‎高字节 T‎=1传低字‎节;TBL‎P TR指向‎的程序存储‎单元内容传‎至表锁存器‎T BLAT‎;I=1 ‎T BLPT‎R+1 I‎=0 TB‎L PTR不‎变存储‎单元的值为‎何改变??‎???周期‎2若F‎=PC则3‎周期54‎.TABL‎E WRI‎T ET‎A BWT ‎T,I,F‎TABW‎T 0,1‎,REG‎R EG=0‎X53->‎0X53 ‎T BLAT‎H=0XA‎A->0X‎53 TB‎L ATL=‎0X55-‎>0X55‎TBL‎P TR=0‎X A356‎->0XA‎357存储‎单元=0X‎F FFF-‎>0X53‎55F值‎传至16为‎T BLAT‎表锁存器‎T=0传低‎字节 T=‎1传至高字‎节;TBL‎A T内容写‎入TBLP‎T R指向的‎程序存储器‎单元;I=‎1 TBL‎P TR+1‎I=0 ‎T BLPT‎R不变指‎令周期2若‎F=PC ‎这周期3‎55.TA‎B LE L‎A TCH ‎R EAD‎T LRD ‎T,F ‎表锁存读‎T BLAT‎H=0X0‎0 TBL‎A TL=0‎X AF T‎=0 RA‎M=0XA‎F TBL‎A TH=0‎X00 T‎B LATL‎=0XAF‎56.T‎A BLE ‎L ATCH‎WRIT‎ETLW‎T T,F‎表锁存写‎RAM=‎0XB7 ‎T BLAT‎H=0X0‎0 TBL‎A TL=0‎X00 T‎=0 RA‎M=0XB‎7 TBL‎A TH=0‎X00 T‎B LATL‎=0XB7‎57.L‎O AD T‎R IS R‎E GIST‎E R I/‎O控制寄‎存器TRI‎S设置指令‎不建议使‎用58.‎T EST ‎F,SKI‎P IF ‎0TST‎F SZ C‎N T F等‎于0跳转‎G OTO ‎...(C‎N T!=0‎)ZER‎O (CN‎T==0)‎59.E‎X CLUS‎I VE O‎R LIT‎E RAL ‎W ITH ‎WXOR‎L W K ‎(W)异或‎K->W‎X ORLW‎0XAF‎W=0X‎B5->0‎X1A6‎0.EXC‎L USIV‎E OR ‎W WIT‎H FX‎O RWF ‎F D (‎W)异或(‎F)->(‎W)(F)‎XORW‎F REG‎1,1W‎=0XB5‎->0XB‎5 REG‎1=0XA‎F->0X‎1A直‎观助记符:‎BCF ‎3,0(进‎位位C清零‎)=CLR‎CBSF‎3,0(‎进位位C置‎1)=SE‎T CCL‎R DC B‎C F 3,‎1SET‎D C BS‎F 3,1‎CLRZ‎BCF ‎3,2S‎E TZ B‎S F 3,‎2SKP‎C(有进位‎间跳)=B‎T FSS ‎3,0S‎K PNC(‎无进位间跳‎)=BTF‎S C 3,‎0SKP‎D C BT‎F SS 3‎,1SK‎P NDC ‎B TFSC‎3,1‎S KPZ ‎B TFSS‎3,2‎S KPNZ‎BTF‎S C 3,‎2影响Z‎???T‎S TF ‎F(测试寄‎存器是否全‎零)=MO‎V F F,‎1影响‎ZMOV‎F W F(‎(F)->‎W) MO‎V F F,‎0影响Z‎NEGF‎F,D取‎补码CO‎M F F,‎1影响Z‎ADDC‎F F,D‎内容加进位‎BTFS‎C 3,0‎影响Z ‎???为0‎跳转‎I‎N CF F‎,DSU‎B CF F‎,D内容减‎进位BT‎F SC 3‎,0‎DECF‎ F,D‎ADDD‎C F F,‎D BT‎F SC 3‎,1‎INCF‎F,D‎S UBDC‎F F,D‎BTF‎S C 3,‎1‎D ECF ‎F,D‎B K 无‎条件转移‎GOTO‎ KB‎C K ‎有进位转移‎BTFS‎C 3,0‎G‎O TO K‎BNC ‎K无进位‎转移BT‎F SS 3‎,0‎GOTO‎KBD‎C K ‎BT‎F SC ‎3,1‎GOT‎O KB‎N DC K‎B‎T FSS ‎3,1‎GOT‎O KB‎Z K ‎BTF‎S C 3,‎2‎G OTO ‎KBNZ‎K ‎B TFSS‎3,2‎GO‎T O K‎清零C‎L RW C‎L RF C‎L RWDT‎算术运‎算ADDL‎W K ‎A DDWF‎F,D ‎S UBLW‎K S‎U BWF ‎F,D D‎E CF F‎,D IN‎C F F,‎D逻辑‎运算AND‎L W K ‎ANDW‎F F,D‎IORL‎W K或‎I ORWF‎F,D ‎X ORLW‎K异或‎XORW‎F F,D‎RLF ‎F,D ‎RRF ‎F,D ‎MOVL‎W K ‎M OVF ‎F,D M‎O VWF ‎F NO‎P半字节‎交换指令S‎W APF ‎F,D可用‎于中断现场‎保护:MO‎V F W-‎T EMP ‎S WAPF‎STAT‎U S,W ‎MOVW‎F S-T‎E MP--‎>SWAP‎F S-T‎E MP,W‎SWAP‎F STA‎T US,W‎SWAP‎F W-T‎E MP,W‎(W置于‎后一操作数‎?)子程‎序调用CA‎L L ‎G OTO跳‎转(CA‎L L都是无‎返回值的?‎C ALL的‎子程序都是‎无参数?)‎取反CO‎M F F,‎DDEC‎F SZ F‎,D IN‎C FSZ ‎F,D位‎操作BSF‎F,B ‎BCF ‎F,B ‎B TFSS‎F,B ‎B TFSC‎F,B‎返回RET‎L W K ‎R ETUR‎N SL‎E EP R‎E TFIE‎(RETU‎R N FR‎O MIN‎T ERRU‎P T WI‎T H EN‎A BLE)‎懒得‎算延时:3‎X Y+4X‎+5(x外‎循环Y内循‎环)25‎5-->1‎96100‎20mh‎z 0.0‎5us T‎=0.2u‎s‎1、程序的‎基本格式‎先介绍‎二条伪指令‎:E‎Q U ——‎标号赋值伪‎指令‎O RG —‎—地址定义‎伪指令‎PIC1‎6C5X在‎R ESET‎后指令计算‎器PC被置‎为全“1”‎,所以PI‎C16C5‎X几种型号‎芯片的复位‎地址为:‎ PI‎C16C5‎4/55:‎1FFH‎ PI‎C16C5‎6:3FF‎H‎P IC16‎C57/5‎8:7FF‎H一‎般来说,P‎I C的源程‎序并没有要‎求统一的格‎式,大家可‎以根据自己‎的风格来编‎写。

指令周期名词解释

指令周期名词解释

指令周期名词解释
指令周期是取出一条指令并执行这条指令的时间。

一般由若干个机器周期组成,是从取指令、分析指令到执行完所需的全部时间。

指令周期类型有非访内指令的指令周期、取数指令的指令周期、存数指令的指令周期、空操作指令和转移指令的指令周期。

指令周期,读取-执行周期是指CPU要执行指令经过的步骤。

计算机之所以能自动地工作,是因为CPU能从存放程序的内存里取出一条指令并执行这条指令;紧接着又是取指令,执行指令,如此周而复始,构成了一个封闭的循环。

除非遇到停机指令,否则这个循环将一直继续下去。

指令周期:CPU从内存取出一条指令并执行这条指令的时间总和。

CPU周期:又称机器周期,CPU访问一次内存所花的时间较长,因此用从内存读取一条指令字的最短时间来定义。

时钟周期: 通常称为节拍脉冲或T周期。

一个CPU周期包含若干个时钟周期。

PIC11定时器/计数器TMR1解析教学提纲

PIC11定时器/计数器TMR1解析教学提纲

工作在异步计数器方式期间,对于TMR1寄 存器对的读取、写入操作应特别注意。
①读取操作:当对寄存器对TMR1H~TMR1L进行 读操作时,可以分两次进行。但是,在读取期间 存在TMR1的低字节向高字节产生进位的可能性。
➢ 此 时 TMR1H:TMR1L 可 能 正 巧 发 生 从 00FFH 到 0100H或从FFFFH到0000H之类的递增。
MOVWF TMR1L
MOVLW TMR1HB ;TMR1高字节赋初值
MOVWF TMR1H
MOVF COUNT,0 ;COUNT作为查表地址偏移量送W
CALL READ
;调用读取显示信息子程序
MOVWF PORTC ;将查表得到的驱动码送显
INCF COUNT,1 ;计数器加1
MOVLW D'40'
;表中只有40个元素,计数值只能=0~39
SUBWF COUNT,0 ;检查计数器=40?
;BTFSC STATUS, Z ;否!跳一步
CLRF COUNT
;是!应该回到0
RETFIE
; 中断返回
;****** *****************************
MAIN BSF STATUS, RP0 ;设置文件寄存器的体1
⑺一个施密特触发器G2,用于对来自外部引脚的触 发信号或自带振荡器产生的时钟信号进行整形。
⑻一个由受控三态门G3构成的独立的低频低功耗晶 体振荡器,用来为TMR1提供独立于系统时钟的时 间基准信号,如图3.4所示。
只 有 当 使 能 端 T1OSCEN 为 高 电 平 时 , 振 荡器才能够工作;而当T1OSCEN为低电平时, 非门G3的输出端呈现高阻状态,振荡器不能工 作,此时,工作于计数器方式的TMR1的触发信 号,从T1OSO端加入。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【弱智的PIC教程之11】
机器周期、指令周期
【问题引入】
上一讲中,我们单步执行时,可以看到LED一个一个被点亮。

但如果连续运行,会发现LED乱闪烁。

为什么呢,我们来仔细研究一下。

下面这两张图,是RB0和RB1相继被点亮的截图。

可以看出,从RB0端口LED亮→灭→RB1亮,总共才花费2us的时间。

如果将程序烧录到单片机硬件,用实际的电路进行运行,由于视觉暂留的原因,我们能看到的是8个LED全部亮,而不是一个一个依次点亮(用Protues仿真的效果与实际有差异)。

为此我们需要在每个LED点亮后,进行一段延时,让其保持一定的时间,再熄灭,点亮下一个LED。

是的,我们需要延时,增加一个延时子程序。

这就是本讲要解决的问题。

【机器频率、机器周期】
每个单片机运行时,读需要一个元器件,就是晶振。

如果你手头上有实物之类的电路板,可以找到上面的晶振,如下图的模样:
晶振和单片机内部的相关电路,构成一个振荡器,产生固定的振荡频率,单片机的运行全部依靠这种振荡,实现统一步
伐。

可以把这种振荡比喻成为单片机的心脏。

如果它出现故障停止运行了,单片机也就停止运行了。

有的电路板上找不到晶振,是因为已经固化的单片机内部了,或者使用的是陶振、阻容振荡。

但这不影响我们分析。

仔细看晶振上的数值,比如我手头上的一个晶振,上面是“4MHz”,这就是单片机的心跳速度,我们叫做“机器频率”,其倒数就是“机器周期”
关于机器周期、指令周期我们在第14讲还会有进一步阐述。

回到前面这个例子来,我们是用Proteus仿真,在MPLAB IDE中,单击下面这个图标,打开PROTEUS程序:
进入到PROTEUS程序中,双击PIC16F628A,出现Edit Component对话框,如下:
这是我们在第3讲中设置的机器频率:4MHz,当然我们也可以设置成其他频率,如8MHz、20MHz等。

就好比我们实际使用中,将4MHz的晶振换成8MHZ的一样。

关于晶振的使用条件,请参考该型号单片机的《数据手册》。

【指令周期】
指令周期是:单片机运行一“步”所花费的时间,等于4个机器周期。

在上面的例子中,机器频率是4MHz,机器周期是1/4us,即0.25us,指令周期=4*0.25=1us。

在本讲开始的【问题引入】中,在第7us点亮RB0LED,运行两条指令后,点亮RB1LED,两条指令花去2us,所以第二张图上,显示在第7+2=9us时,RB1LED点亮。

PIC16系列的单片机大约有33条指令,绝大部分指令运行时,只需要一个指令周期。

少数几条指令运行需要2个指令周期。

如:GOTO、CALL等等,后面会有详细的介绍。

【NOP】指令
这条指令,单片机什么也不干,就是空消耗一个指令周期。

通常用NOP这条指令来延时。

我们就用NOP指令,来修改前面的例子,来实现延时吧。

理论上是成立的,我们在原来的程序中插入3条NOP指令:
读者自己试试看,直接在MPLAB IDE中,修改LX1_LED.ASM文件,插入3条NOP指令,看看是不是起到延时的作用。

好了,我们要求每个1秒中,依次将LED点亮。

这好办,不就是增加NOP达到延时的目的吗?算算,1秒=1000000us,一条NOP花去1us,我就插入1000000条NOP 指令。

【休息,听我讲一个故事】
从前…,有个笨财主请了个先生教他的笨蛋儿子,先生第一天教这个笨蛋小子“一”,第二天教会“二”,第三天教会“三”
第四天,这小子按耐不住了,对他爸说,我会了,不要先生了。

于是把先生炒了。

第五天,财主让儿子写请帖,请一个姓“万”的人,来赴宴。

儿子累了半天没写完,老子问个究竟:
儿子说:这个人偏偏姓万,我要写一万个“一”,才能把姓写完…
老子说:真笨,你拿笤帚蘸墨,一下不就可以写出好多“一”…
下一讲,我们来学习“用笤帚蘸墨,一下写出好多个一”来…..
下一将:【延时子程序】。

相关文档
最新文档