




已阅读5页,还剩222页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章 PIC系列单片机原理与应用,7.1 PIC系列单片机简介7.2 PIC16C54单片机的硬件结构7.3 PIC16C5X单片机的指令系统7.4 PIC单片机的开发环境7.5 PIC16C73单片机简介,7.1.1 PIC单片机的主要特点 7.1.2 PIC单片机选型指南,7.1 PIC系列单片机简介,7.1.1 PIC单片机的主要特点,PIC系列单片机是美国Microchip公司推出的RISC型高性价比嵌入式控制器,具有运行速度高、功耗小、驱动能力强等优点,在电脑外设、家电控制、电讯通信、智能仪器仪表、汽车电子以及金融电子等领域得到了广泛应用。,7.1.1 PIC单片机的主要特点,PIC单片机具有如下特点: (1)型号丰富。便于用户根据所需的功能和资源选择型号。 (2)采用低价OTP型芯片降低成本。 (3)每个型号的单片机都有相应的仿真芯片,开发实时性好。 (4)采用RISC型CPU和单字指令系统,取指令和执行指令是并行进行的,程序执行效率高。 (5)驱动能力强,最大输入电流达25mA,最大输出电流达20mA。 (6)具有睡眠和低功耗模式,可保持较低的功耗。 (7)自带看门狗定时器,内置RC振荡计时器,运行可靠性高。 (8)采用熔丝深埋工艺,保密性能好。,7.1.1 PIC单片机的主要特点,PIC单片机的内部资源: (1)EEPROM数据区:仅用作数据存储器,具有掉电保护功能。 (2)FLASH程序/数据区:数据既可长期保存,又能快速擦写。 (3)A/D转换器:简称ADC,将模拟量转换成数字量。 (4)CCP模块:它可工作于捕捉模式、比较模式或脉宽调制模式。 (5)USART模块:也称为SCI模块,它是一种串行通信接口。 (6)CAN模块:可用于组成过程监测与控制的局域网络。 (7)LIN:低成本的串行通信网络,用作辅助总线网络。 (8)SPI:即串行外设接口,它可实现单片机与外部器件的通信。 (9)I2C:用于实现单片机与外部器件之间的串行通信。 (10)USB:用于实现单片机与外部器件之间的快速通信。,7.1.1 PIC单片机的主要特点,PIC单片机的产品可分为三个级别: (1)基本级产品,如PIC12CXX和PIC16C5X系列。特点:价格低,体积小,使用数量大,便于嵌入便携式电子产品。 (2)中级产品,如PIC16CXX系列。特点:品种丰富,性价比高,可应用于各种高、中、低档电子产品。 (3)高级产品,如PIC17CXX和PIC18CXX系列。特点:速度快,指令周期最短为160ns,在一些应用场合可取代DSP,广泛应用于中高档电子设备。 根据温度,PIC单片机的所有型号又都有商用级(0+70)、工业级(-40+85)和汽车级(-40+125 )芯片。,7.1.2 PIC单片机选型指南,PIC系列8位单片机选择表1,7.1.2 PIC单片机选型指南,PIC系列8位单片机选择表2,7.2.1 主要资源及引脚功能7.2.2 中央处理器7.2.3 存储器结构7.2.4 特殊功能寄存器7.2.5 系统配置字7.2.6 看门狗,7.2 PIC16C54单片机的硬件结构,7.2.1 主要资源及引脚功能:主要资源,PIC16C54单片机主要具有下列硬件资源: (1)RISC型8位中央处理器(CPU); (2)32字节的片内数据存储器RAM; (3)51212位程序存储器; (4)采用数据总线和指令总线分离的哈佛结构; (5)12位双向输入/输出口; (6)1个带预分频器的8位定时/计数器,简称TIMER0; (7)两级硬件堆栈; (8)复位电路:内部集成了上电复位电路和看门狗复位电路; (9)时钟电路:支持4种振荡类型,工作频率范围为020MHz。,PIC16C5X系列单片机的内部结构框图,7.2.1 主要资源及引脚功能:主要资源,PIC16C54单片机共有18个引脚,各个引脚的功能如下: (1)VDD:电源正极。额定电压为5V,可工作电压范围2.56.25V。 (2)VSS:电源负极,即地线。 (3)OSC1/CLKIN:振荡信号输入端。 (4)OSC2/CLKOUT:振荡信号输出端 (5)#MCLR:复位端,内带施密特电路。该引脚为低时单片机复位。 (6)TOCKI:TIMER0的外部计数输入端,内带施密特电路。当TIMER0设置为定时器时,为避免干扰,应将其接VDD或VSS。 (7)RA0RA3:端口A。它是4位的双向三态I/O口,可以位操作,每一位可单独定义为输入或输出。 (8)RB0RB7:端口B。它是8位的双向三态I/O口,可以位操作,每一位可单独定义为输入或输出。,7.2.1 主要资源及引脚功能:引脚功能,PIC16C5X系列其它型号单片机的结构与PIC16C54单片机的结构基本相同,只是具有更多的I/O引脚和更大的存储器空间,例如PIC16C55单片机有20个I/O口,PIC16C56单片机有1K的程序存储器。此外,C系列的PIC单片机均采用OTP型程序存储器,相比同类产品具有较好的价格优势,而对应的F系列则采用FLASH程序存储器。,7.2.1 主要资源及引脚功能:引脚功能,PIC16C54单片机引脚定义图,7.2.1 主要资源及引脚功能:引脚功能,7.2.2 中央处理器:时钟,PIC16C54单片机支持以下种时钟振荡类型: (1)LP型:低功率晶体振荡,适用频率范围为32KHz40KHz; (2)XT型:标准晶体/陶瓷振荡,适用频率范围为100KHz4MHz; (3)HS型:高速晶体振荡,适用的频率范围为4MHz20MHz; (4)RC型:阻容振荡。 LP型、XT型和HS型振荡器既能通过晶体与片上振荡器配合产生时钟,也可以直接作为外部时钟源。在RC型振荡器中,R的典型值为3K100K,C的典型值不小于20pF。RC型振荡器有利于降低系统成本,但是振荡频率精确性较差,只适用于时间精确度要求不高的应用场合。,PIC16C54单片机的时钟电路如下图所示:(1)当PIC16C54单片机使用外部晶体振荡器时,OSC1引脚和OSC2引脚分别接晶体的两端;(2)当PIC16C54单片机使用外部振荡信号时,OSC1引脚接振荡信号,OSC2引脚悬空;(3)当PIC16C54单片机使用RC振荡器时,OSC1接RC电路,OSC2引脚输出频率为振荡器频率1/4的时钟信号。,7.2.2 中央处理器:时钟,使用片外晶体(适用于HS、XT、LP型),RC振荡型时钟电路,使用外部时钟源(适用于HS、XT、LP型),7.2.2 中央处理器:时钟,PIC16C54单片机主要有以下3种复位方式: (1)上电复位(Power on Reset,简称POR)。单片机内部集成有上电复位电路,即POR电路。上电复位时,引脚#MCLR可以接VDD也可以悬空,但两种情况下复位的时序不同。 (2)手动复位。当引脚#MCLR为低电平时,单片机进入复位状态;当引脚#MCLR恢复为高电平时,DRT开始计时,并继续保持复位状态;DRT计时18ms后溢出,完成手动复位。 (3)看门狗(WDT)复位:单片机内部集成有看门狗电路,它使用独立的内部RC振荡电路,当计时溢出时对单片机复位。看门狗的基本溢出周期为18ms。,7.2.2 中央处理器:复位,上电复位过程: (1)如果引脚#MCLR接VDD,上电时POR电路产生复位信号,引脚#MCLR随VDD一同上升;当它达到“1”时,复位定时器DRT开始计时,并继续保持复位状态;DRT计时18ms后溢出,完成上电复位。这里18ms是DRT的计时周期TDRT。 (2)如果引脚#MCLR悬空,上电时VDD迅速升高并由POR电路产生复位信号,引脚#MCLR仍为低电平,单片机仍处于复位状态;待引脚#MCLR变为高电平后,DRT开始计时,并继续保持复位状态;DRT计时18ms后溢出,完成上电复位。,7.2.2 中央处理器:复位,引脚#MCLR接VDD时的上电复位过程,引脚#MCLR悬空时的上电复位过程,7.2.2 中央处理器:复位,复位后部分寄存器的状态,注:X不确定,U不变,Q特定值,B二进制数,H十六进制数,7.2.2 中央处理器:复位,如下图所示,PIC16C54单片机的将输入时钟4分频形成4个互不重叠的节拍Q1,Q2,Q3,Q4,它们构成单片机的一个“指令周期”,每个指令周期包含4个振荡周期。 PIC16C54单片机所有的微操作都同步于节拍的上升沿。在Q1节拍,程序计数器PC加1;指令码在Q4节拍从程序存储器中取出,并锁存于指令寄存器中,在下一指令周期被译码并执行。因此,取指令与执行指令是并行进行的,加快了指令执行速度。,7.2.2 中央处理器:时序,PIC16C54单片机的时序,7.2.2 中央处理器:时序,7.2.3 存储器结构:程序存储器,PIC16C54单片机的程序存储器采用OTP型EPROM,存储空间为12位512字,地址指针为9位的程序计数器PC,如下图所示。 PIC单片机的所有指令都是单字指令,但不同级别单片机的指令字长有时不同。PIC16C54单片机的字长是12位。有些型号的PIC单片机具有更大的程序存储空间,它们通常被分为若干页(Page)。,PIC16C54单片机的程序存储器空间,7.2.3 存储器结构:程序存储器,PIC16C54片内有32个8位的数据存储器RAM,为了方便编程,它们被当作寄存器来寻址使用。数据存储器RAM按功能可分为特殊功能寄存器组和通用寄存器组,它们都具有位寻址能力,可以进行位操作。在数据存储器区,特殊功能寄存器有7个;通用寄存器有25个。 有些型号的PIC单片机具有更大的数据存储空间,它们通常被分为若干区(Bank),例如PIC16C57单片机的数据存储空间就被分为4个区。程序员在同一时刻只能访问同区内的数据存储器,跨区访问时必须先通过FSR寄存器改变区号。,7.2.3 存储器结构:数据存储器,PIC16C54C的数据空间 PIC16C57的数据空间,7.2.3 存储器结构:数据存储器,PIC16C54单片机有2级硬件堆栈,因此最多只能嵌套调用2级子程序。PIC系列单片机的堆栈不占用程序存储器和数据存储器空间。,7.2.3 存储器结构:堆栈,PIC16C54单片机的特殊功能寄存器的地址及功能,7.2.4 特殊功能寄存器,PIC16C54单片机有7个具有特殊功能的寄存器:间址寄存器INDF、8位定时/计数寄存器TMR0、程序计数器的低8位PCL、状态寄存器STATUS、存储体选择寄存器FSR、I/O寄存器PORTA和I/O寄存器PORTB;它们占有内部RAM空间的低7字节地址。 此外,它还有3个特殊寄存器:W、TRIS和OPTION,它们不占用数据存储器空间或程序存储器空间。 下面对这些寄存器分别进行介绍。,7.2.4 特殊功能寄存器,(1)W寄存器:它是最常用的工作寄存器,不可寻址,用来存放指令中的第二个操作数,或进行内部数据传送,或存放运算结果。(2)INDF:间址寄存器。它只是一个逻辑寄存器,物理上不存在,对它寻址相当于对由FSR指示的寄存器进行间接寻址。(3)PORTA、PORTB:2个并行I/O口的寄存器。PORTA仅低4位有效,对应引脚RA0RA3;PORTB的8位都有效,对应引脚RB0RB7。I/O口作为输入时没有锁存,外部信号必须保持至CPU读入为止;作为输出时有锁存。复位后所有I/O口都置成输入态。(4)TRIS:I/O方向控制寄存器,它的每一位对应一个I/O口的方向,“1”表示输入,“0”表示输出。TRIS寄存器不可寻址,通过执行TRIS指令可将W寄存器的内容写入TRIS寄存器。,7.2.4 特殊功能寄存器,(5)TMR0:带预分频器的8位循环定时/计数寄存器。TMR0是定时/计数器TIMER0的寄存器,并且可带有预分频器。TIMER0采用递增方式循环计数,当计数至0FFH时,在下一个计数发生后,它将自动清零,重新开始计数。TIMER0的输入脉冲可以是内部时钟、外部信号或是预分频器的输出。TMR0寄存器对所有输入脉冲的响应延迟时间都是2个指令周期。当使用外部信号时,它的脉冲宽度不得小于1/2指令周期。预分频器的输入脉冲可以是内部时钟或外部信号,用外部信号时其频率不能超过50MHz;输出脉冲宽度不得小于1个指令周期。通过设置OPTION寄存器,可以配置TIMER0的时钟源和预分频器。通过读取TMR0寄存器,可以实现定时/计数的功能。,7.2.4 特殊功能寄存器,(6)OPTION:参数定义寄存器,用来定义TIMER0的时钟源和预分频器的工作参数。OPTION寄存器不可寻址,通过执行OPTION指令可对它进行设置。由OPTION寄存器定义的参数包括TIMER0时钟源选择位TOCS、TIMER0时钟源触发沿选择位TOSE、预分频控制位PSA以及预分频系数选择位PS2PS0。,7.2.4 特殊功能寄存器,OPTION各位的含义,7.2.4 特殊功能寄存器,OPTION各位的功能描述,7.2.4 特殊功能寄存器,OPTION与预分频系数的对应关系,7.2.4 特殊功能寄存器,(7)STATUS:程序状态字,存放CPU工作时的状态,根据STATUS的值可以了解CPU的当前状态,并作出相应的处理。(8)FSR:数据空间间接寻址指针。PIC16C54中FSR的Bit0Bit4在间接寻址中用来选择32个数据寄存器。Bit5Bit7为只读位,恒为1。芯片上电复位时,FSR为1,FSR是不定的,因此它可能指向任何一个Bank;由于PIC16C54只有一个Bank,所以上电复位不会影响FSR的寻址结果。芯片手动复位或者看门狗复位时,FSR为1,FSR保持原来的值不变。,7.2.4 特殊功能寄存器,STATUS各位的含义,7.2.4 特殊功能寄存器,STATUS各位的功能描述,7.2.4 特殊功能寄存器,影响#PD、#TO的事件,7.2.4 特殊功能寄存器,RESET后的#PD、#TO状态,7.2.4 特殊功能寄存器,7.2.5 系统配置字,在PIC系列单片机内有一种特殊的系统配置字(Configuration Word),它的主要功能是设置程序加密位、使能/关闭看门狗,以及选择时钟振荡类型,下面给出了系统配置字各位的含义与功能描述。系统配置字独立于程序存储区之外,在PIC16C54单片机内部它的地址为1FFEH1FFFH。 下面这段程序用于设置系统配置字,执行的结果是不对程序加密,使能看门狗,并选择标准晶体/陶瓷振荡型(XT型)时钟。 _CONFIG B111111111101,系统配置字各位的含义,7.2.5 系统配置字,系统配置字的各位的功能描述,7.2.5 系统配置字,时钟振荡类型,7.2.5 系统配置字,7.2.6 看门狗,看门狗WDT(Watch Dog Timer)是一种用来防止单片机程序运行“失控”的电路,它利用独立的计时器计时,如果由于程序失控导致WDT在规定的时间内不能被清零,那么WDT计时器溢出时将产生复位信号,使得单片机重新启动。 PIC16C54单片机内部集成一个自振式的RC振荡计时器,即使芯片时钟停止振荡,看门狗依然能正常工作。通过设置系统配置字,可以使能/关闭看门狗;通过设置OPTION寄存器,可以将预分频器提供给看门狗,调整它的溢出周期。看门狗的基本溢出周期为18ms,由于最大分频比达1:128,所以看门狗的最大溢出周期约为2.5秒。,7.3.1 指令格式7.3.2 寻址方式7.3.3 PIC16C5X的指令集7.3.4 PIC16C5X指令详解,7.3 PIC16C5X系列单片机的指令系统,7.3 PIC16C5X系列单片机的指令系统,PIC单片机采用精简指令集,其指令数量少且都是单字指令。不同级别PIC单片机的指令集略有不同。其中,基本级有33条指令,指令字长为12位,如PIC16C54;中级有35条指令,每条指令字长14位,如PIC16C73;高级共有58条指令,指令字长16位,如PIC18F4480。但是,功能相同的指令对应的名称也相同,使得指令码的变化对编程而言是透明的,从而实现了汇编语言程序的向下兼容。 本节以PIC16C5X系列单片机为例,逐一介绍基本级PIC系列单片机的33条指令。,7.3 PIC16C5X系列单片机的指令系统,如前所述,特殊功能寄存器STATUS的低5位是受指令影响的标志位,它们是超时标志位#T0、低功耗模式标志位#PD、零标志位Z、半进位位DC以及进位位C。这些标志位的置位和清零条件参见7.2.4节,各指令对标志位的具体影响将在指令详解中说明。 本节的常数采用十进制或十六进制表示,其中十六进制采用0xSS格式,如0x1F。,7.3 PIC16C5X系列单片机的指令系统,符号定义,7.3.1 指令格式,PIC系列单片机的每条汇编指令由4个部分组成,格式如下: 标号 操作码助记符 操作数1,操作数2;注释 指令的4个部分之间用空格隔开,空格可以是1个或多个。(1)标号 标号代表指令的符号地址,第一个字符必须是字母或半角下划线“_”,后面可以是英文、数字字符、冒号等的组合。标号是指令格式中的可选项,没有标号时,指令助记符前面必须保留一个或多个空格。,(2)操作码助记符 操作码助记符可以是指令助记符,也可以是伪指令及宏命令,是必选项。(3)操作数 操作数由数值或以符号表示的数据或地址值组成,是可选项。如果操作数有两个,则两个操作数之间用逗号隔开。(4)注释 注释用于程序说明,以便用户阅读程序,注释与指令的其它部分之间用分号隔开,是可选项。 注释可以单独作为一行。在汇编时,它被忽略。,7.3.1 指令格式,7.3.2 寻址方式,根据操作数的来源,PIC单片机指令的寻址方式可分为四种:立即数寻址、直接寻址、寄存器间接寻址和位寻址。下面对各种寻址方式做简要的介绍。,7.3.2 寻址方式:立即数寻址,立即数寻址:操作数包含在指令中。 例:MOVLW 0x16;0x16(W) 该例的操作数0x16包含在指令中。汇编后,立即数包含在指令码中。,7.3.2 寻址方式:直接寻址,直接寻址:PIC16C54共有32个寄存器,记为F0F31,对任何寄存器的访问都是直接寻址。 例:MOVWF 8 ;(W)(F8) MOVWF 31 ;(W)(F31),寄存器间接寻址:利用寄存器INDF和FSR可以实现“寄存器间接寻址”。其中,INDF并不是物理存在的寄存器,而是一个虚拟的间接寻址指针,真正的目标寄存器地址保存在FSR中。对PIC16C54来说,实际的目标寄存器地址存放在FSR的低5位,这意味着间接寻址的地址范围是00H1FH。例如下面这段程序可将0x55送入F5寄存器。 例:MOVLW 0x05 ;5(W) MOVWF FSR ;(W)(FSR),结果(FSR)=5 MOVLW 0x55 ;0x55(W) MOVWF INDF ;(W)(F5),结果(F5)=0x55,7.3.2 寻址方式:寄存器间接寻址,位寻址:该方式可以对寄存器的任何一位进行操作。 例:BSF 8,2 ; 将F8的第2位置为“1”,7.3.2 寻址方式:位寻址,7.3.3 PIC16C5X的指令集,PIC16C5X共有33条指令,它们按操作类型可分为面向字节操作类、面向位操作类、常数操作类和控制操作类等四类指令。,7.3.3 PIC16C5X的指令集:面向字节操作类,面向字节操作类指令共有18条,包括数据传送、算术和逻辑运算、数据移位和交换等操作。这些操作都是在W寄存器与F寄存器之间进行。 指令码的结构如下图所示,其中Bit11Bit6是指令的操作码;Bit5是方向位,d=1时,操作结果存入F寄存器;d=0时,操作结果存入W寄存器。指令码的Bit4Bit0是F寄存器的地址,对PIC16C54单片机来说,可以选择范围是031。,面向字节操作类指令码结构,7.3.3 PIC16C5X的指令集:面向字节操作类,面向位操作类指令共有4条。其中,指令码的Bit11Bit8是指令操作码,Bit7Bit5是位地址,Bit4Bit0是寄存器地址。,面向位操作类指令码结构,7.3.3 PIC16C5X的指令集:面向位操作类,常数操作类指令共有4条。其中,指令码的Bit11Bit8是指令操作码,Bit7Bit0是常数K。,常数类指令码结构,7.3.3 PIC16C5X的指令集:常数操作类,控制操作类指令共有7条,除GOTO指令外,其他指令的指令码的基本结构与常数类指令码的相同。GOTO指令的指令码结构如下,其中,Bit11Bit9是操作数,Bit8Bit0是常数K。,GOTO指令码结构,7.3.3 PIC16C5X的指令集:控制操作类,指令汇总1,7.3.3 PIC16C5X的指令集,指令汇总2,7.3.3 PIC16C5X的指令集,指令汇总3,7.3.3 PIC16C5X的指令集,注释:(1)除了GOTO指令外,任何有关写PC的指令都将会把PC寄存器的第9位清零,由于每个程序页面空间包括512个单元,因此子程序必须放在程序空间中每个页面的前256个单元。(2)若对I/O寄存器进行操作,如“SUBWF 6,1”,那么F6(即PORTB)所使用的的值取自当前B口状态,而非B口输出锁存器的历史值。(3)指令“TRIS F”(F=5、6或7)将W寄存器的内容写入指定的I/O口控制寄存器。(4)用户可以使用预分配器对CPU时钟分频,并将分频后的时钟信号作为TIMER0或WDT的计数时钟。如果预分频器被分配给TIMER0且F=1,那么对TMR0寄存器的任何操作,都会顺带清零预分频器。,7.3.3 PIC16C5X的指令集,7.3.4 PIC16C5X指令详解,(1)ADDWF 指令格式: ADDWF F,d 指令编码: 0001 11df ffff 指令操作数: 0F31,它是数据寄存器的地址,由指令码的Bit4Bit0指出;d=0或1。 执行时间: 1个指令周期 执行结果: (F)+(W)(d) 标志位影响: Z,DC,C 说明: 该指令将F寄存器的内容与W寄存器的内容相加。d=0时,结果存入W寄存器,F寄存器的内容不变;d=1时,结果存入F寄存器,W寄存器的内容不变。,范例: MOVLW 0xC2 ; 0xC2(W) MOVWF 9; (W)(F9),结果(F9)=0xC2 MOVLW 0x17; 0x17(W) ADDWF 9,0; (F9)+(W)(W),结果(W)=0xD9,7.3.4 PIC16C5X指令详解,(2)ANDLW 指令格式: ANDLW K 指令编码: 1110 kkkk kkkk 指令操作数: 0K255,它是立即数,由指令码的Bit7Bit0指出。 执行时间: 1个指令周期 执行结果: (W)&K(W) 标志位影响: Z 说明: 该指令将W寄存器的内容和立即数K按位进行“逻辑与”运算,并将结果放在W寄存器中。,7.3.4 PIC16C5X指令详解,范例: MOVLW 0xA3; 0xA3(W) ANDLW 0x5F; (W)&0x5F(W),结果(W)=0x03,7.3.4 PIC16C5X指令详解,(3)ANDWF 指令格式: ANDWF F,d 指令编码: 0001 01df ffff 指令操作数: 0F31,它是数据寄存器的地址,由指令码的Bit4Bit0指出;d=0或1。 执行时间: 1个指令周期 执行结果: (W)&(F)(d) 标志位影响: Z 说明: 该指令将F寄存器的内容和W寄存器的内容按位进行“逻辑与”运算。d=0时,结果存入W寄存器,F寄存器的内容不变;d=1时,结果存入F寄存器,W寄存器的内容不变。,7.3.4 PIC16C5X指令详解,范例: MOVLW 0xC2 ; 0xC2(W) MOVWF 9; (W)(F9),结果(F9)=0xC2 MOVLW 0x17; 0x17(W) ANDWF 9,0; (F9) 结果(F9)=0xC2,(W)=0x02,7.3.4 PIC16C5X指令详解,(4)BCF 指令格式: BCF F,B 指令编码: 0100 bbbf ffff 指令操作数: 0F31,它是数据寄存器的地址,由指令码的Bit4Bit0指出;0B7,它是数据位编号,由指令码的Bit7Bit5指出。 执行时间: 1个指令周期 执行结果: 0(F) 标志位影响: 无 说明: 该指令可将数据寄存器的指定位清“0”,常用于清除标志位,或把某个输出引脚置成低电平。,7.3.4 PIC16C5X指令详解,范例: MOVLW 0xC7; 0xC7(W) MOVWF 9; (W)(F9),结果(F9)=0xC7 BCF 9,7; 0(F9),结果(F9)=0x47,7.3.4 PIC16C5X指令详解,(5)BSF 指令格式: BSF F,B 指令编码: 0101 bbbf ffff 指令操作数: 0F31,它是数据寄存器的地址,由指令码的Bit4Bit0指出;0B7,它是数据位编号,由指令码的Bit7Bit5指出。 执行时间: 1个指令周期 执行结果: 1(F) 标志位影响: 无 说明: 该指令可对数据寄存器的指定位置“1”,常用于置位标志位,或把某个输出引脚置为高电平。,7.3.4 PIC16C5X指令详解,范例: MOVLW 0x0A; 0x0A(W) MOVWF 9; (W)(F9),结果(F9)=0x0A BSF 9,7; 1(F9),结果(F9)=0x8A,7.3.4 PIC16C5X指令详解,(6)BTFSC 指令格式: BTFSC F,B 指令编码: 0110 bbbf ffff 指令操作数: 0F31,它是数据寄存器的地址,由指令码的Bit4Bit0指出;0B7,它是数据位编号,由指令码的Bit7Bit5指出。 执行时间: 1个或2个指令周期,不满足跳转条件时为1个指令周期,满足跳转条件执行跳转时为2个指令周期。 执行结果: 当(F)为0时跳过下一条指令。 标志位影响: 无 说明: 若(F)=1,顺序执行下一条指令,若(F)=0,则下一条指令用NOP代替来执行,这就使得指令执行了2个指令周期。该指令常用于按标志位实现程序的跳转。,7.3.4 PIC16C5X指令详解,范例: HERE BTFSC 9,1; 指令执行前程序计数器PC中; 的指令代码为HERE指令, 若;(F9)=0,则PC中指令代; 码为TRUEW;若(F9)=1,;则PC中指令代码为FLASH。 FLASH GOTO SU TRUEW,7.3.4 PIC16C5X指令详解,(7)BTFSS 指令格式: BTFSS F,B 指令编码: 0111 bbbf ffff 指令操作数: 0F31,它是数据寄存器的地址,由指令码的Bit4Bit0指出;0B7,它是数据位编号,由指令码的Bit7Bit5指出。 执行时间: 1个或2个指令周期,不满足跳转条件时为1个指令周期,满足跳转条件执行跳转时为2个指令周期。 执行结果: 当(F)为1时跳过下一条指令。 标志位影响: 无 说明: 若(F)=0,顺序执行下一条指令;若(F)=1,则下一条指令用NOP代替来执行,这时指令执行了2个指令周期。该指令常用于按标志位实现程序的跳转。,7.3.4 PIC16C5X指令详解,范例: HERE BTFSS 9,1; 指令执行前程序计数器PC中; 的指令代码为HERE指令, 若;(F9)=1,则PC中指令代; 码为TRUEW;若(F9)=0,;则PC中指令代码为FLASH。 FLASH GOTO SU TRUEW,7.3.4 PIC16C5X指令详解,(8)CALL 指令格式: CALL K 指令编码: 1001 kkkk kkkk 指令操作数: 0K255,它是子程序的入口地址,由指令码的Bit7Bit0指出。 执行时间: 2个指令周期 执行结果: (PC)+1栈顶;K(PC),即操作数K仅表示目的地址的低8位;(STATUS)(PC);0PC 标志位影响: 无 说明: 程序转移指令,先将CALL指令的下一条指令地址压入堆栈,8位立即数指定的地址被传到PC计数器的Bit7Bit0,PC计数器的Bit10Bit9来自STATUS的Bit6Bit5,而Bit8被清零。,7.3.4 PIC16C5X指令详解,范例: HERE CALL THERE; 指令执行前PC中存的是指令 ;HERE; 指令执行后PC中存; 的是指令THERE,栈顶存的 ; 是指令FLASH。 FLASH GOTO SU,7.3.4 PIC16C5X指令详解,(9)CLRF 指令格式: CLRF F 指令编码: 0000 011f ffff 指令操作数: 0F31,它是数据寄存器的地址,由指令码的Bit4Bit0指出。 执行时间: 1个指令周期 执行结果: 0x00(F);1Z 标志位影响: Z 说明: 该指令将F寄存器清零,并将零标志位Z置1。 范例: CLRF 8; 结果(F8)=0,7.3.4 PIC16C5X指令详解,(10)CLRW 指令格式: CLRW 指令编码: 0000 0100 0000 指令操作数: 该指令无操作数 执行时间: 1个指令周期 执行结果: 0(W);1Z 标志位影响: Z 说明: 该指令将W寄存器清零,并将零标志位Z置1。 范例: CLRW; 结果(W)=0,7.3.4 PIC16C5X指令详解,(11)CLRWDT 指令格式: CLRWDT 指令编码: 0000 0000 0100 指令操作数: 该指令无操作数 执行时间: 1个指令周期 执行结果: 0WDT计时器;0WDT预分频器(如果将预分频器分配给WDT);1#TO;1#PD 标志位影响: #TO、#PD 说明: 将看门狗计时器清零。如果单片机将预分频器分配给看门狗,则预分频器也被清零。标志位#TO、#PD被置1。 范例: CLRWDT; 将看门狗计时器和预分频器清零。,7.3.4 PIC16C5X指令详解,(12)COMF 指令格式: COMF F,d 指令编码: 0010 01df ffff 指令操作数: 0F31,它是数据寄存器的地址,由指令码的Bit4Bit0指出;d=0或1。 执行时间: 1个指令周期 执行结果: #(F)(d) 标志位影响: Z 说明: 该指令将F寄存器的内容按位取反。d=0时,结果存入W寄存器,F寄存器的内容不变;d=1时,结果存入F寄存器,W寄存器的内容不变。 范例: COMF 9,0; #(F9)(W),7.3.4 PIC16C5X指令详解,(13)DECF 指令格式: DECF F,d 指令编码: 0000 11df ffff 指令操作数: 0F31,它是数据寄存器的地址,由指令码的Bit4Bit0指出;d=0或1。 执行时间: 1个指令周期 执行结果: (F)-1(d) 标志位影响: Z 说明: 该指令将F寄存器的内容减1。d=0时,结果存入W寄存器,F寄存器的内容不变;d=1时,结果存入F寄存器中,W寄存器的内容不变。 范例: DECF 9,0 ;(F9)-1(W),7.3.4 PIC16C5X指令详解,(14)DECFSZ 指令格式: DECFSZ F,d 指令编码: 0010 11df ffff 指令操作数: 0F31,它是数据寄存器的地址,由指令码的Bit4Bit0指出;d=0或1。 执行时间: 1个或2个指令周期 执行结果: (F)-1(d),当结果为0时跳过下一条指令。 标志位影响: 无 说明: 该指令将F寄存器的内容减1。d=0时,结果存入W寄存器,F寄存器的内容不变;d=1时,结果存入F寄存器,W寄存器的内容不变。如果结果为0则跳过下一条指令,而用NOP代替,指令执行时间为两个指令周期;如果结果不是0,则顺序执行下一条指令。,7.3.4 PIC16C5X指令详解,范例: LOOP DECFSZ 9,1; 指令执行前PC中内容为指令; LOOP,执行一次后F9减1。 ; 若F9的值为0,则PC内容为; CONTINOUS; 若F9的值不为; 0,则PC内容为LOOP1 GOTO LOOP CONTINOUS,7.3.4 PIC16C5X指令详解,(15)GOTO 指令格式: GOTO K 指令编码: 101k kkkk kkkk 指令操作数: 0K511,它是目标地址,由指令码的Bit8Bit0指出。 执行时间: 2个指令周期 执行结果: K(PC); (STATUS)(PC) 标志位影响: 无 说明: 无条件跳转指令。 范例: GOTO HERE; 指令执行后PC计数器中存的;是指令HERE,7.3.4 PIC16C5X指令详解,(16)INCF 指令格式: INCF F,d 指令编码: 0010 10df ffff 指令操作数: 0F31,它是数据寄存器的地址,由指令码的Bit4Bit0指出;d=0或1。 执行时间: 1个指令周期 执行结果: (F)+1(d) 标志位影响: Z 说明: 该指令将F寄存器的内容加1。d=0时,结果存入W寄存器,F寄存器的内容不变;d=1时,结果存入F寄存器,W寄存器的内容不变。 范例: INCF 9,0;(F9)+1(W),7.3.4 PIC16C5X指令详解,(17)INCFSZ 指令格式: INCFSZ F,d 指令编码: 0011 11df ffff 指令操作数: 0F31,它是数据寄存器的地址,由指令码的Bit4Bit0指出;d=0或1。 执行时间: 1个指令周期或2个指令周期 执行结果: (F)+1(d),当结果为零时跳过下一条指令。 标志位影响: 无 说明: 该指令将F寄存器的内容加1。d=0时,结果存入W寄存器,F寄存器的内容不变;d=1时,结果存入F寄存器,W寄存器的内容不变。如果结果为0则跳过下一条指令,而用NOP代替,指令执行时间为两个指令周期;如果结果不为0,则顺序执行下一条指令。,7.3.4 PIC16C5X指令详解,范例: HERE INCFSZ 9,1; 指令执行前PC中内容为指令 ; HERE,执行一次后F9加1。; 若F9的值为0,则PC中的内; 容为CONTINOUS;若F9的值; 不为0,则PC中的内容为; HERE1。 GOTO LOOP CONTINOUS,7.3.4 PIC16C5X指令详解,(18)IORLW 指令格式: IORLW K 指令编码: 1101 kkkk kkkk 指令操作数: 0K255,它是立即数,由指令码的Bit7Bit0指出。 执行时间: 1个指令周期 执行结果: (W)|K(W) 标志位影响: Z 说明: 该指令将W寄存器的内容和立即数K按位进行“逻辑或”运算。并将结果放在W寄存器中。,7.3.4 PIC16C5X指令详解,范例: MOVLW 0x9A; 0x9A(W) IORLW 0x35; (W)|0x35(W),结果(W)=0xBF,7.3.4 PIC16C5X指令详解,(19)IORWF 指令格式: IORWF F,d 指令编码: 0001 00df ffff 指令操作数: 0F31,它是数据寄存器的地址,由指令码的Bit4Bit0指出;d=0或1。 执行时间: 1个指令周期 执行结果: (W)|(F)(d) 标志位影响: Z 说明: 该指令将F寄存器的内容与W寄存器的内容按位进行“逻辑或”运算。d=0时,结果存入W寄存器,F寄存器的内容不变;d=1时,结果存入F寄存器,W寄存器的内容不变。,7.3.4 PIC16C5X指令详解,范例: MOVLW 0x13; 0x13(W) MOVWF 9; (W)(F9),结果(F9)=0x13 MOVLW 0x91; 0x91(W) IORWF 9,0 ; (W)|(F9)(W); 结果(F9)=0x13,(W)=0x93,7.3.4 PIC16C5X指令详解,(20)MOVF 指令格式: MOVF F,d 指令编码: 0010 00df ffff 指令操作数: 0F31,它是数据寄存器的地址,由指令码的Bit4Bit0指出;d=0或1。 执行时间: 1个指令周期 执行结果: (F)(d) 标志位影响: Z 说明: 该指令将F寄存器的内容传送到d指示的寄存器中。d=0时,结果存入W寄存器,F寄存器的内容不变;d=1时,结果存入F寄存器,W寄存器的内容不变。 范例: MOVF 9,0 ;(F9)(W),7.3.4 PIC16C5X指令详解,(21)MOVLW 指令格式: MOVLW K 指令编码: 1100 kkkk kkkk 指令操作数: 0K255,它是立即数,由指令码的Bit7Bit0指出。 执行时间: 1个指令周期 执行结果: K(W) 标志位影响: 无 说明: 将立即数K传送到W寄存器中 范例: MOV
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 物业设备维修保养流程
- 2025年中医药煎煮技术操作规范考试答案及解析
- 建筑工程现场检测记录表填写指南
- 2025年眼科常见眼病诊断术前评估答案及解析
- 2025年内分泌科糖尿病患者康复护理综合考试卷答案及解析
- 小学英语核心素养提升方案范文
- 2025年鹤峰县国有资本投资运营有限公司及下属公司公开招聘工作人员12人笔试参考题库附带答案详解
- 2019年养殖项目绩效评估报告
- 2025年贵州交建毕节高速公路营运管理中心招聘53人笔试参考题库附带答案详解
- 2025年心理咨询与治疗技术综合检测模拟考试卷答案及解析
- 禁毒禁烟教育主题班会
- 交通运输公司安全生产目标考核奖惩制度
- 蛛网膜囊肿的治疗与护理
- 外卖站长个人工作总结
- 中医基础理论经络培训课件
- 亚麻籽油在营养保健领域的应用考核试卷
- 尿液标本临床微生物实验室检验操作指南
- 2024铁路营业线作业人员北斗安全预警防护系统技术条件
- 南京市、盐城市2025届高三年级第一次模拟考试(一模)英语试卷(含答案)+听力音频
- 羊水异常课件
- 煤矿“冬季四防”专项安全风险辨识评估报告
评论
0/150
提交评论