版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
指令是单片机的领导核心,就是指挥CPU按要求进行一系列操作的命令。一般来说,单片机都具有自己特有的指令系统,相互之间大都互不兼容。PIC单片机系列按照不同用户的要求分成三个不同的应用档次。第4章PIC指令系统
指令的执行时间总是分解成两部分:取指过程和执行过程,取指的快慢直接与指令的字节数有关,而指令的执行快慢与时钟的振荡频率有关。在以往的单片机结构中,程序存储器和数据存储器的地址空间和数据传输通道都相互并用,必须采用分时操作顺序执行。而PIC单片机指令的执行过程是遵循着一种全新哈佛总线体系结构的原则,充分利用计算机系统在程序存储器和数据存储器之间地址空间的相互独立性,取指过程和执行程序可以流水线操作同时进行。
4.1指令流水线操作原则
FlushFetch4FetchSUB_1
Tcy0Tcy1Tcy2Tcy3Tcy4
PIC单片机指令流水线示意
Execute1Fetch31.MOVLW55h
Fetch1Execute3Fetch2Execute2
Fetch42.MOVWFPORTB3.CALLSUB_14.BSFPORTA,BIT3在这种寻址方式中,操作数或其中之一(另一个是W)是立即数,随指令码携带,而无需再到其他地方去寻找。指令中的操作数为8-位常数.使用立即数寻址方式的指令有:
movlw,addlw,retlw,etc.如:ADDLW 16H指令寻址方式说明1.寄存器立即寻址14-位立即寻址指令OPCODEkkkkkkkk2.寄存器直接寻址7-位直接从指令中获取2-位从‘STATUS’寄存器中获取如:IORWF 26H,09-位有效寄存器地址IRPRP1RP0OPCODETOPDZDCCSTATUS寄存器14-位指令fffffffRP1RP0fffffff7-位来自指令字2-位来自STATUS寄存器3.寄存器间接寻址8-位间接地址来自FSR(选择寄存器).1-位来自STATUS寄存器.例如:MOVWFINDFIRPfffffffffIRPRP1RP0TOPDZDCCfffffffSTATUS寄存器8-位FSR寄存器有效的9-位寄存器地址8-位来自FSR1-位来自STATUS寄存器
这是一种比较特别的寻址方式,是通过两个寄存器INDF和FSR的组合而实现功能的。操作数是FSR寄存器内容为指针,所指向寄存器单元的内容。
间接寻址FSR和INDF用于间接寻址FSR
是地址指针INDF
保存移动的值522FSRINDFWritingReading521222324522FSRINDF521222324movlw 22movwf FSRmovlw 5movwf INDFmovlw 22movwf FSRmovf INDF,Wmovwf 5间接寻址实例运行机制:
a)清从0x20to0x7F所有的RAM区域
b)间接地址载入FSRc)每一次对‘INDF’运行,由FSR指向的寄存器被使用例子:
movlw 0x20
movwf FSRLOOP clrf INDF
incf FSR,F
btfss FSR,7
goto LOOP <nextinstruction>0000000000000000FSR=20hINDF00h04h20h7Fh数据记忆区这是PIC单片机的特色之一,它可以对所有的RAM数据存储器进行位寻址,即置位和清零等。如:BSF26H,4 ;(26H原为26H)4.位寻址每条指令的字节长度为14位,主要由说明指令功能的操作码和参与指令处理的操作数组成。操作码部分,简称助记符,如表4-2核心助记符,是借用英语单词来间接表达和定义其操作功能。
操作数部分,是按照操作码的操作功能,对操作数进行处理。根据操作数的源地址和目标地址的访问性质,可以有多种表现形式:主要有直接寻址、间接寻址、立即寻址和位寻址四类。4.2指令集说明
核心助记符
指令系统补充字符说明
数据传送类指令共有4条指令,主要功能是将数据从源地址(或立即数)传送至目标地址中。4.2.1数据传送类指令
【例题4-1】请利用数据传送类指令编写一段子程序,将立即数20H传送到通用寄存器20H中。
【例题4-2】请利用数据传送类指令编写一段子程序,将通用寄存器20H和30H中的内容进行交换。算术运算类指令是PIC单片机指令系统中,承担运算功能的重要部分,共有6条指令。主要有加减指令、增量和减量指令4.2.2算术运算类指令
【例题4-3】请将通用寄存器20H、30H构成的16位数据与通用寄存器40H、50H构成的16位数据相加后放入40H、50H中,已知其和不会超出65535。
逻辑运算类指令是一组比较复杂的指令,形式较多,可以对位和字节进行逻辑操作。主要有与、或、异或、清零、置位、取反和左右移位等14条指令4.2.3逻辑运算类指令
【例题4-4】请将数据存储器20H和30H中的数据分别与立即数20H、30H相与和相或后相加,结果放入40H存储器中,请编写相应的程序。
【例题4-5】请编写一个完整的程序,将数据存储器20H低4位和30H高4位组合成一个八位二进制数据,并从RC端口输出。
控制转移类指令,是在指令系统中形式灵活、功能较强的一组指令,共11条。它们是构成程序循环和跳转的关键要素,一般可以分为有条件跳转和无条件跳转两大类。
4.2.4控制转移类指令
这是一种比较特殊的转移形式,根据位测试或加减1后的内容判断条件的成立与否,而决定程序继续执行还是间跳执行指令。 当前判断语句A
下一条语句B再下一条语句C1.相对转移间跳
PIC指令系统的绝对转移,主要由CALL和GOTO语句引出。在指令机器码内部本身并没有携带完整的转移目标地址,只包含低11位地址,而高2位将由PCLATH寄存器给出。 【例题4-6】请将通用寄存器单元20H-2FH,分别对应赋值20H-2FH,请编写相应的软件程序。
2.绝对转移和调用
【例题4-7】请分析以下程序片段,并指出当程序执行完后,涉及到的所有存储器单元的结果。
MOVLW 22H MOVWF 22H MOVWF FSR ADDWF INDF,F INCF INDF SWAPF 22H,W RLF 22H,W DECF FSR,F MOVWFINDF BSF INDF,7【例题4-6】编写散转指令程序PICmicro指令集
14位内核之字节操作指令构成OPCODEdfffffffd=DestinationBit
d=0fordestinationW d=1fordestinationFf=7-bitRegisterAddressExample:ADDWF REG,WADDWF f,dNOP - MOVWF f CLRW - CLRF f SUBWF f,d
DECF f,d
IORWF f,d
ANDWF f,d
XORWF f,d
ADDWF f,d
MOVF f,d
COMF f,d
INCF f,d
DECFSZ f,d
RRF f,d
RLF f,d
SWAPF f,d
INCFSZ f,d
字节操作121
移动数据:立即数,WandFMyVarmovf
MyVar,Wincf
MyVar,FWorWREGFileRegistersmovwf
MyVar21立即数movlw 1PICmicro指令集
汇总ADDWF f,d AddWandfANDWF f,d ANDWandfCLRF f ClearfCLRW - ClearWCOMF f,d ComplementfDECF f,d DecrementfDECFSZ f,d Decrementf,skipifzeroINCF f,d IncrementfINCFSZ f,d Incrementf,skipifzeroIORWF f,d InclusiveORWandfMOVF f,d MovefMOVWF f MoveWtofNOP - NoOperationRRF f,d RotaterightfthroughcarryRLF f,d RotateleftfthroughcarrySUBWF f,d SubtractWfromfSWAPF f,d SwapnibblesoffXORWF f,d ExclusiveORWandfBCF f,b BitclearfBSF f,b BitsetfBTFSC f,b Bittestf,skipifclearBTFSS f,b Bittestf,skipifsetSLEEP - GointostandbymodeCLRWDT - ClearwatchdogtimerRETLW k Return,placeliteralinWRETFIE - ReturnfrominterruptRETURN - ReturnfromsubroutineCALL k CallsubroutineGOTO k Gotoaddress(kis9-bit)MOVLW k MoveliteraltoWIORLW k InclusiveORliteralwithWADDLW k AddliteralwithWSUBLW k SubtractWfromliteralANDLW k ANDliteralwithWXORLW k ExclusiveORliteralwithWByte-OrientedOperationsBit-OrientedOperationsLiteralandControlOperationsf=FileRegister,k=literalvalue(8-bit),b=bitaddress<0to7>,d=destination(Worfileregister)PICmicro指令集
位操作14位内核之位操作指令构成OPCODEbfffffffb=3-BitAddress(BitNumber)
f=7-bitRegisterAddressbb例:BTFSC STATUS,CBTFSC f,bBCF f,b
BSF f,b
BTFSC f,b
BTFSS f,b
位操作00000000Bit7Bit0PICmicro指令集
立即数和控制操作k14位内核之立即数和控制指令构成OPCODEkkkkkkkk=8-bitImmediateValue例:MOVLW 0x2FMOVLW kSLEEP - CLRWDT - RETLW k RETFIE - RETURN - CALL k GOTO k MOVLW k IORLW k ADDLW k SUBLW k ANDLW k XORLW k 立即数和控制操作14-bit单片机指令集
操作实例NOP NoOperationSyntax: NOPOperands: NoneOperation: NooperationStatus: NoneEncoding: 0000000000
0000Words: 1Cycles: 1
例:
NOP14-bit核指令集
字节操作14位内核之字节操作指令构成OPCODEdfffffffd=DestinationBit
d=0fordestinationW d=1fordestinationFf=7-bitRegisterAddressExample:ADDWF REG,WADDWF f,dNOP - MOVWF f CLRW - CLRF f SUBWF f,d
DECF f,d
IORWF f,d
ANDWF f,d
XORWF f,d
ADDWF f,d
MOVF f,d
COMF f,d
INCF f,d
DECFSZ f,d
RRF f,d
RLF f,d
SWAPF f,d
INCFSZ f,d
Byte-OrientedOperationsPICmicroMCU指令集
字节操作MOVWF MoveWtofSyntax: MOVWFfOperands: 0<=f<=127Operation: (W)->(f)Status: NoneEncoding: 0000001fff
ffffWords: 1Cycles: 1
例:
MOVWF FSR
执行前 FSR =0xFF W =0x4F
执行后 FSR =0x4F W =0x4FPICmicroMCU指令集
字节操作CLRW ClearWSyntax: CLRWOperands: NoneOperation: 00h->(W) 1->ZStatus: ZEncoding: 00000100000000Words: 1Cycles: 1
例:
CLRW
执行前 W =0x4F
执行后 W =0x00 Z =1PICmicroMCU指令集
字节操作CLRF ClearfSyntax: CLRFfOperands: 0<=f<=127Operation: 00h->(f) 1->ZStatus: ZEncoding: 0000011fff
ffffWords: 1Cycles: 1
例:
CLRFFSR
执行前 FSR =0x4F
执行后 FSR =0x00 Z =1PICmicroMCU指令集
字节操作SUBWF SubtractWfromfSyntax: SUBWFf,dOperands: 0<=f<=127 d={0,1}Operation: (f)-(W)->destStatus: C,DC,ZEncoding: 000010dfff
ffffWords: 1Cycles: 1
例:
SUBWFFSR,W
执行前 FSR =0x03 W =0x02 C =? Z =?
执行后 FSR =0x03 W =0x01 C =1 Z =0PICmicroMCU指令集
字节操作DECF DecrementfSyntax: DECFf,dOperands: 0<=f<=127 d={0,1}Operation: (f)-1->destStatus: ZEncoding: 000011dfff
ffffWords: 1Cycles: 1
例:
DECFFSR,F
执行前 FSR =0x01 Z =0
执行后 FSR =0x00 Z =1PICmicroMCU指令集
字节操作MOVF MovefSyntax: MOVFf,dOperands: 0<=f<=127 d={0,1}Operation: (f)->destStatus: ZEncoding: 001000dfff
ffffWords: 1Cycles: 1
例:
MOVFFSR,F
执行前 FSR =0x00 Z =0
执行后 FSR =0x00 Z =1PICmicroMCU指令集
字节操作DECFSZ Dec.f,Skipif0Syntax: DECFSZf,dOperands: 0<=f<=127 d={0,1}Operation: (f)-1->dest skipifresult=0Status: NoneEncoding: 001011dfff
ffffWords: 1Cycles: 1(2)例:Loop
DECFSZCNT,F GOTO LoopContinue
执行前 PC=addressLoop
执行后 CNT =CNT-1 ifCNT=0, PC=addressContinue elseCNT!=0, PC=addressLoop+1PICmicroMCU指令集
字节操作RRF RotateRightf->CSyntax: RRFf,dOperands: 0<=f<=127 d={0,1}Operation:Status: CEncoding: 001100dfff
ffffWords: 1Cycles: 1例: RRF CNT,W
执行前 CNT =11100110 C =0
执行后 CNT =11100110 W =01110011 C =0CRegisterfPICmicroMCU指令集
14位内核之位操作指令构成OPCODEbfffffffb=3-BitAddress(BitNumber)
f=7-bitRegisterAddressbbExample:BTFSC STATUS,CBTFSC f,bBCF f,b
BSF f,b
BTFSC f,b
BTFSS f,b
位操作PICmicroMCU指令集
位操作BCF BitClearfSyntax: BCFf,bOperands: 0<=f<=127 0<=b<=7Operation: 0->(f<b>)Status: NoneEncoding: 0100bb
bfff
ffffWords: 1Cycles: 1
例:
BCFFSR,4
执行前 FSR =00110000
执行后 FSR =00100000PICmicroMCU指令集
位操作BTFSS BitTestf,Skipif1Syntax: BTFSSf,bOperands: 0<=f<=127 0<=b<=7Operation: skipif(f<b>)=1Status: NoneEncoding: 0111bb
bfff
ffffWords: 1Cycles: 1(2)例:Here
BTFSSCNT,2False GOTO ElsewhereTrue
执行前 PC=addressHere
执行后 ifCNT<2>=1, PC=addressTrue ifCNT<2>=0, PC=addressFalsePICmicroMCU指令集
立即数操作k14位内核之立即数操作指令构成OPCODEkkkkkkkk=8-bitImmediateValue例:MOVLW 0x2FMOVLW kMOVLW k IORLW k ADDLW k SUBLW k ANDLW k XORLW k 立即数操作PICmicroMCU指令集
立即数操作MOVLW 立即数送给WSyntax: MOVLWkOperands: 0<=k<=255Operation: k->(W)Status: NoneEncoding: 110000kkkk
kkkkWords: 1Cycles: 1
例:
MOVLW0x5A
执行后 W =0x5APICmicroMCU指令集
立即数操作ADDLWW与立即数相加Syntax: ADDLWkOperands: 0<=k<=255Operation: (W)+k->(W)Status: C,DC,ZEncoding: 111110kkkk
kkkkWords: 1Cycles: 1
例:
ADDLW0x15
执行前
W =0x10
执行后 W =0x25PICmicroMCU指令集
立即数操作ANDLW W与立即数相与Syntax: ANDLWkOperands: 0<=k<=255Operation: (W)ANDk->(W)Status: ZEncoding: 111001kkkk
kkkkWords: 1Cycles: 1
例:
ANDLW0x5F
执行前
W =0xA3
执行后 W =0x03PICmicroMCU指令集
控制类操作k14位内核之RETLW指令构成OPCODEkkkkkkkk=8-bitImmediateValueSLEEP - CLRWDT - RETLW kRETFIE - RETURN - CALL k GOTO k 控制类操作14位内核之CALL/GOTO指令构成OPCODEk=11-bitImmediateValuekkkkkkkkkkkPICmicroMCU指令集
控制类操作SLEEP 进入SLEEPSyntax: SLEEPOperands: NoneOperation: 00h->WDT 1->TO 0->PDStatus: TO,PDEncoding: 00000001100011Words: 1Cycles: 1
例:
SLE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国沸腾磁化电热开水器数据监测研究报告
- 建筑装饰融资居间合同模板
- 亲子餐厅装修项目管理协议
- 2025至2030年中国塑杯灌装封盖机数据监测研究报告
- 2025年中国角型旋转式研磨机市场调查研究报告
- 瑜伽馆装修免租合同范例
- 创业投资贷款居间协议模板
- 2025年中国电动黄油定量注油机组市场调查研究报告
- 2025至2030年中国雷达声纳电子配件数据监测研究报告
- 2025至2030年中国防毒半面罩数据监测研究报告
- 2025年度土地经营权流转合同补充条款范本
- 南通市2025届高三第一次调研测试(一模)地理试卷(含答案 )
- 2025年上海市闵行区中考数学一模试卷
- 2025中国人民保险集团校园招聘高频重点提升(共500题)附带答案详解
- 0的认识和加、减法(说课稿)-2024-2025学年一年级上册数学人教版(2024)001
- 医院安全生产治本攻坚三年行动实施方案
- 法规解读丨2024新版《突发事件应对法》及其应用案例
- Python试题库(附参考答案)
- 大断面隧道设计技术基本原理
- 41某31层框架结构住宅预算书工程概算表
- 成都市国土资源局关于加强国有建设用地土地用途变更和
评论
0/150
提交评论