ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:36.37KB ,
资源ID:24934568      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24934568.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(R单片机指令系统.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

R单片机指令系统.docx

1、R单片机指令系统第五章AVR单片机指令系统计算机的指令系统是一套控制计算机操作的代码,称之为机器语言。计算机只能识别和执行机器语言的指令。为了便于人们理解、记忆和使用,通常用汇编语言指令来描述计算机的指令系统。汇编语言指令可通过汇编器翻译成计算机能识别的机器语言。AVR单片机指令系统是RISC结构的精简指令集,是一种简明易掌握效率高的指令系统。SL-DIY02-3开发实验器使用AT90S8535单片机,有118条指令, 而我们所做的11个实验程序仅用了34条指令, 我们重点讲这34条指令, 其余指令就可自学了。 AVR器件(指令速查表) 118条指令器件AT90S2313/2323/2343/

2、2333 ,AT90S4414/4433/4434/8515,AT90S8534/8535算术和逻辑指令BRCC kC清零转位指令和位测试指令ADD Rd,Rr加法BRSH k转SBI P,b置位I/O位ADC Rd,Rr带进位加BRLO k小于转(无符号)CBI P,b清零I/O位 ADIW Rdl,K加立即数BRMI k负数转移LSL Rd左移SUB Rd,Rr减法BRPL k正数转移LSR Rd右移SUBI Rd,Rr减立即数BRGE k转(带符号)ROL Rd带进位左循环SBC Rd,Rr带进位减BRLT k小于转(带符号)ROR Rd带进位右循环SBCI Rd,K带C减立即数BRHS

3、 kH置位转移ASR Rd算术右移 SBIW Rdl,K减立即数BRHC kH清零转移SWAP Rd半字节交换AND Rd,Rr与BRTS kT置位转移BSET s置位SREGANDI Rd,K与立即数BRTC kT清零转移BCLR s清零SREGOR Rd,Rr或BRVS kV置位转移BST Rr,bRr的b位送TORI Rd,K或立即数BRVC kV清零转移BLD RdT送Rr的b位EOR Rd,Rr异或BRIE k中断位置位转移SEC置位CCOM Rd取反BRID k中断位清零转移CLC清零CNEG Rd取补数据传送指令SEN置位NSBR Rd,K寄存器位置位MOV Rd,Rr寄存器传送

4、CLN清零NCBR Rd,K寄存器位清零 LDI Rd,K装入立即数SEZ置位ZINC Rd加1 LD Rd, XX间接取数CLZ清零ZDEC Rd减1 LD Rd, X+X间接取数后SEI置位ITST Rd测试零或负 LD Rd,-XX间接取数先CLI清零ICLR Rd寄存器清零 LD Rd,YY间接取数SES置位SSER Rd寄存器置FF LD Rd,Y+Y间接取数后CLS清零S条件转移指令 LD Rd,YY间接取数先SEV置位VRJMP k相对转移 LDD Rd,Y+qY间接取数qCLV清零V IJMP间接转移(Z) LD Rd, ZZ间接取数SET置位T RCALL k相对调用 LD

5、Rd, Z+Z间接取数后CLT清零T ICALL间接调用(Z) LD Rd,ZZ间接取数先SEH置位HRET子程序返回 LDD Rd, Z+qZ间接取数qCLH清零HRETI中断返回 LDS Rd,K从SRAM装入NOP空操作CPSE Rd,Rr比较相等跳行 ST X ,RrX间接存数SLEEP休眠指令CP Rd,Rr比较 ST X+ ,RrX间接存数后WDR看门狗复位CPC Rd,Rr带进位比较 ST X ,RrX间接存数先90条指令为Attiny11/12/15/22=+89条基本指令是AT90S1200CPI Rd,K与立即数比较 ST Y ,RrY间接存数SBRC Rr,b位清零跳行

6、ST Y+ ,RrY间接存数后SBRS Rr,b位置位跳行 ST Y ,RrY间接存数先SBIC P,bI/O位清零跳行 STD Y+q ,RrY间接存数qSBIS P,bI/O位置位跳行ST Z ,RrZ间接存数BRBS s,kSREG位置位转 ST Z+ ,RrZ间接存数后+118条指令器件=+ 90条指令器件BRBC s,kSREG位清零转 ST Z ,RrZ间接存数先-BREQ k相等转移 STD Z+q ,RrZ间接存数+qBRNE k不相等转移 STS k,Rr数据送SRAMBRCS kC置位转 LPM从程序区取数IN Rd,P从I/O口取数 OUT P, Rdr存数I/O口PUS

7、H Rr压栈POP Rd,出栈说明: SL-DIY02-3开发实验器的11个实验程序例子,仅用34条指令(以红色表示)1不带进位加法 ADD一不带进位加 说明:两个寄存器不带进位C标志加,结果送目的寄存器Rd。 操作: RdRd+ Rr 语法: 操作码: 程序计数器: ADD Rd,Rr Od31,0r31 PCPC1例子:。(实践操作程序 实践操作例子*.ASM,必须编译生成*.OBJ文件才可调试,如要修改*.ASM,必须修改文件属性,去掉*.ASM只读文件属性 2带进位加法 ADC一带进位加 说明:两个寄存器和C标志的内容相加,结果送目的寄存器Rd。 操作: RdRdRrC 语法: 操作码

8、: 程序计数器: ADC Rd,Rr 0d31,0r31 PCPC1 例子:(实践操作程序 3减1指令 DEC一减1 说明:寄存器Rd的内容减1,结果送目的寄存器Rd中。 操作:RdRdl 语法: 操作码: 程序计数器: DEC Rd 0d31 PCPC十1例子:(实践操作程序4立即数比较 CPI带立即数比较 说明:该指令完成寄存器Rd和常数的比较操作。寄存器的内容不改变。该指令后能 使用所有条件转移指令。 操作:RdK 语法: 操作码: 程序计数器: CPI Rd, K 16d31, 0 K255 PCPC 1 例子:(实践操作程序5带立即数与 ANDI立即数逻辑与 ;全1为1,有0即0说明

9、:寄存器Rd的内容与常数逻辑与,结果送目的寄存器Rd。应用: 清0,使某位为0,用0去与;保留,用1去逻辑与;代硬件与门操作:RdRdK ; 语法: 操作码: 程序计数器: ANDI Rd K 16d31, 0K255 PCPC 1例子:(实践操作程序6寄存器逻辑或OR一逻辑或 ;有1即1,全0为0, 应用: 置数,使某位为1,用1去或;保留,用0去逻辑或;代硬件或门 说明:完成寄存器Rd与寄存器Rr的内容逻辑或操作,结果进目的寄存器Rd中。 操作: RdRd Rr 语法: 操作码: 程序计数器: OR Rd Rr 0d31, 0r31 PCPC 1例子:(实践操作程序7清除寄存器 CLR一寄

10、存器清零 说明:寄存器清零。该指令采用寄存器Rd与自己的内容相异或实现的。寄存器的所有位都被清零。 操作: RdRd Rd 语法: 操作码: 程序计数器: CLR Rd 0d31 PCPC 1例子:(实践操作程序8相对跳转 RJMP一相对跳转 说明:相对跳转到 PC 2K和 PC2K(字)范围内的地址。在汇编程序中,标号用于替代相对操作。AVR微控制器的程序存储器空间不超过4K字(8K字节),该指令能寻址整个存储器空间的每个地址位置。 操作: PC(PC1) k 语法: 操作码: 程序计数器: RJMP k 2Kk2K PC(PC1)k 例子:(实践操作程序9相等转移 BREQ相等转移 说明:

11、条件相对转移,测试零标志(Z),如果 Z位被置位,则相对PC值转移。如果在执行CP、CPI、SUB或SUBI指令后立即执行该指令,且当寄存器Rd中无符号或有符号二进制数与寄存器 Rr中无符号或有符号H进制数相等时,转移将发生。 操作:If RdRr(z1)then PC(PC十1)k,PCPC十1 语法: 操作码: 程序计数器: BREQ k -64k63 PC(PC 1) k PCPC l 例子:(实践操作程序10不相等转移 BRNE不相等转移 说明:条件相对转移,测试零标志(Z),如果Z位被清零,则相对PC值转移。如果在执行CP。CPI、SUB或SUBI指令后立即执行该指令,且当在寄存器R

12、d中的无符号或带符号二进制数不等于寄存器Rr中的无符号或带符号二进制数时,转移将发生。该指令相对PC转移的方向为:PC 64目的PC 63。参数K为PC的偏移,用2的补码表示(相当于指令BRBCIK)。 操作, If RdRr(Z0) then PC(PC1)k,elesPCPC1 语法: 操作码: 程序计数器: BRNE k 64 k 63 PC(PC1) k PCPCl 例子:(实践操作程序 11寄存器位清零跳行 SBRC一寄存器位被清零跳行 说明:该指令测试寄存器某位,如果该位被清零,则跳下一行执行指令。 操作:If Rd(b) 0 then PCPC2(or 3)eles PCPC 1

13、 语法: 操作码: 程序计数器: SBRC Rr,b 0 r 31, 0 b7 PCPC十1 pCpC 2 PCPC 3例子:(实践操作程序12寄存器位置位跳行 SBRS一寄存器位置位跳行 说明:该指令测试寄存器某位,如果该位被置位,则跳下一行执行指令。 操作: If Rr(b)l then PCPC 2(or 3)eles PCPC l 语法: 操作码: 程序计数器: SBRS Rr,b r31,0b7 PCPC1 PCPC2 PCPC3例子:(实践操作程序13IO寄存器位置位跳行 SBISIO寄存器的位置位跳行 说明:该指令测试1O寄存器某位,如果该位被置位,则跳一行执行指令。该指令在低3

14、2个1O寄存器内操作,地址为031。 操作: If IOP, bl then PCPC2(or 3)else PCPC1 语法: 操作码: 程序计数器: SBIS p ,b 0 P 31, 0 b 7 PCPC 1 PCPC 2 PCPC 3 例子:(实践操作程序14相对调用 RCALL相对调用于程序 说明:在PC+1后(2K字(4K字节)范围内调用子程序。返回地址(RCALL后的指令地址)存储到堆栈(见CALL)。 操作:PC(PC1)k 语法: 操作码: 程序计数器: RCALL k 2K k 2K PC(PC1) k例子: (实践操作程序 15从子程序返回 RET子程序返回 说明:从子程

15、序返回。返回地址从堆栈中弹出。 操作: PC(150)STACK PC(210)STACK 语法: 操作码: 程序计数器: 堆栈: RET None See Operation SPSP 2 RET None See Operation SPSP 3例子:(实践操作程序见16从中断程序返回 RETI中断返回说明:从中断程序中返回。返回地址从堆栈中弹出,且全局中断标志被置位。注意:1.主程序应跳过中断区,防止修改补充中断程序带来麻烦;2.不用的中断入口地址写上RETI-中断返回,有抗干扰作用; 操作: PC(150)STACKPC(210)STACK 语法: 操作码: 程序计数器: 堆栈: RE

16、TI None See Operation SPSP十2 RETI None See Operation SPSP 3例子:( 程序,摘自”乐曲.ASM”部分程序,仅供参考),能执行程序请阅”乐曲.ASM”程序及AVR单片机在儿童智能玩具中的应用-音乐玩具(电脑放音机)一文17寄存器拷贝数据 MOV寄存器拷贝 说明:该指令将一个寄存器拷贝到另一个寄存器。源寄存器Rr的内容不改变,而目的寄存器Rd拷贝了Rr的内容。 操作:Rd Rr 语法: 操作码: 程序计数器: MOV Rd Rr 0 d 31, 0 r31 PCPC 1例子:(实践操作程序18SRAM数据直接送寄存器 LDS直接从SRAM装

17、入 说明:把SRAM中1个字节装入到寄存器。必须提供一个16位地址。存储器访问被限制在当前64K字节的SRAM页。超过64K字节,LDS指令使用RAMPZ寄存器访问。 操作:Rd(k) 语法: 操作码: 程序计数器: LDS Rd k 0 d 31,0 k65535 PCPC 2例子:(实践操作程序19寄存器数据直接送SRAM STS寄存器数据直接送SRAM 说明:将寄存器的内容直接存储到SRAM。必须提供一个16位的地址。存储器访问被限制在当前64K字节的SRAM页。STS指令使用RAMPZ寄存器访问存储器可超过64K字节。 操作:(k)Rr 语法: 操作码: 程序计数器: STS k,Rr

18、 0r31,0k65535 PCPC2例子:(实践操作程序与相同)20立即数送寄存器 LDI装入立即数 说明:装入一个8位立即数到寄存器R16R31中。 操作:RdK 语法: 操作码: 程序计数器: LDI Rd K 16 d 31, 0K 255 PCPC 2例子:(实践操作程序21.使用变址Z间接将SRAM中的内容传送到寄存器 LD(LDD)使用变址Z间接将SRAM中的内容传送到寄存器 说明:带或不带偏移间接从SRAM中传送一个字节到寄存器,SRAM中的位置由寄存器区中的 Z(16位)指针寄存器指出。存储器访问被限制在当前 64K字节的 SRAM页中。为访问另外SRAM页,则 IO范围内的

19、寄存器RAMPZ需改变。在指令执行后,Z指针寄存器值要么不改变,要么就加1或减1操作。使用Z指针寄存器的这些特性,特别适合于堆栈指针,因为Z指针寄存器能用于直接子程序调用,直接跳转和查表。Z指针寄存器用作为专用堆栈指针要比X、Y指针方便。用Z指针在程序存储器中查表,可参见LPM指令。 操作:Rd(Z) Rd(Z) Z Z1 Rd (Zq) 语法: 操作码: 操作流程: 程序计数器: LD Rd,Z 0 d31 送数,Z指针不改变 PCPC1LD Rd Z 0d31 先送数,后Z指针加1 PCPC1 LD Rd,-Z 0d31 先Z指针减1, 后送数 PCPCl LDD Rd Zq 0 d31,

20、 先Z指针加q,后送数, PCPC10q63 执行后Z指针(Z不含q)不变例子:(实践操作程序 22. LPM装入程序存储器 说明:将Z寄存器指向的一个字节传送到寄存器0(RO)。该指令使100 空间有效,常量初始化或常数取数特别有用。程序存储器被编为16位字,Z(16位)指针的最低位(LSB)选择为0是低字节,选择为1是高字节。该指令能寻址程序存储器第一个64K字节(32字)。 操作:R0(Z) 语法: 操作码: 程序计数器: LPM None PCPC 1例子:(实践操作程序,更详细资料阅”按钮猜数.ASM”)23IO口数据传送到寄存器 INIO口数据传送到寄存器 说明:将IO空间(口,定

21、时器,配置寄存器等)的数据传送到寄存器区中的寄存器Rd中。 操作:RdP 语法: 操作码: 程序计数器: IN Rd P O d31, 0 P63 PCPC 1例子:(实践操作程序24寄存器数据送 I O口 OUT寄存器数据送 IO口 说明:将寄存器区中寄存器 Rr的数据传送到 I0空间(口、定时器、配置寄存器等)。 操作: P Rr 语法: 操作码: 程序计数器: OUT P, Rr 0 r31, 0 P63 PCPC十1例子:(实践操作程序25进栈指令 PUSH压寄存器到堆栈 说明:该指令存储寄存器Rr的内容到堆栈。 操作: STACKRr 语法: 操作码: 程序计数器: PUSH Rr

22、O d 31 PCPC1 SPSP 1例子:(实践操作程序26出栈指令 POP堆栈弹出到寄存器 说明:该指令将堆栈中的字节装入到寄存器Rd中。 操作:RdSTACK 语法: 操作码: 程序计数器: POP Rd 0 d 31 PCPC1 SPSP 1例子:(实践操作程序27通过进位左循环 ROL通过进位左循环 说明:寄存器Rd的所有位左移1位,C标志被移到Rd的第0位,Rd的第7位移到C标志。 操作: 语法: 操作码: 程序计数器: ROL Rd 0 d 31 PCPC 1例子:(实践操作程序28ROR通过进位右循环 说明:寄存器Rd的所有位右移1位,C标志被移到Rd的第7位,Rd的第0位移到

23、C标志。 操作: 语法: 操作码: 程序计数器:ROR Rd 0 d 31 PCPC 1 例子: (实践操作程序29置IO寄存器的位 SBI置IO寄存器的位 说明:对IO寄存器指定的位置位,该指令在低32个IO寄存器内操作,IO寄存器地址为031。 操作:IO( P b)1 语法: 操作码: 程序计数器: SBIP,b 0P31,0b7 PCPC1例子: out $1e,r0 ;(EEARL寄存器)(R0) sbi $1c,0 ;( EECR寄存器 0位)130清IO寄存器的位 CBI清IO寄存器的位 说明:清零IO寄存器中的指定位,该指令用在寄存器最低的32个IO寄存器上,IO寄存器地址为

24、031。 操作:IO(P,b)0 语法: 操作码: 程序计数器: CBI P, b 0 P31, 0b7 PCPC十1 例子: cbi $18,7 ; IO(PORTB寄存器的7位)031置进位位 SEC一置位进位标志 说明:置位SREG(状态寄存器)中的进位标志(C)。 操作:C1 语法: 操作码: 程序计数器: SEC N0ne PCPC 1 C:1例子: sec ; C1 adc r0, r1 ;带进位位加32触发全局中断位 SEI置位全局中断标志 说明:置位SREG(状态寄存器)中的全局中断标志(I)。 操作:I1 语法: 操作码: 程序计数器: SEI None PCPC 1 I:1

25、例子: cli ; I0 in r13,$16 ;(r13)(PINB寄存器数据) set ; I133禁止全局中断位 CLI清零全局中断标志 说明:清除SREG(状态寄存器)中的全局中断标志(I)。 操作:I0 语法: 操作码: 程序计数器: CLI None PCPC 1 I:0例子:(实践操作程序34看门狗复位 WDR看门狗复位 说明:该指令复位看门狗定时器,在 WD预定比例器给出限定时间内必须执行。参见看门狗定时器硬件部分。 应用:抗干扰;延时 操作: WD timer restart 语法: 操作码: 程序计数器: WDR N0ne PCPC 1例子:(实践操作程序1. 请观看多媒体指令系统讲座2. 实际操作一次: 按对应程序操作实践!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1