AVR单片机指令系统.doc

上传人:一*** 文档编号:2475765 上传时间:2020-04-11 格式:DOC 页数:9 大小:145KB
返回 下载 相关 举报
AVR单片机指令系统.doc_第1页
第1页 / 共9页
AVR单片机指令系统.doc_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《AVR单片机指令系统.doc》由会员分享,可在线阅读,更多相关《AVR单片机指令系统.doc(9页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

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

2、T90S4414/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 kH置位转移

3、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寄存器传送CLN清零NC

4、BR 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 Rd, Z+Z

5、间接取数后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位清零跳行 ST Y+ ,

6、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口PUSH Rr压栈P

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

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

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

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

11、器: RJMP k 2Kk2K PC(PC1)k 例子:(实践操作程序4511.ASM)9相等转移 BREQ相等转移 说明:条件相对转移,测试零标志(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 例子:(实践操作程序4523.ASM)10不相等转移 BRNE不相等转移 说明:

12、条件相对转移,测试零标志(Z),如果Z位被清零,则相对PC值转移。如果在执行CP。CPI、SUB或SUBI指令后立即执行该指令,且当在寄存器Rd中的无符号或带符号二进制数不等于寄存器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 例子:(实践操作程序4524.ASM) 11寄存器位清零跳行 SBRC一寄存器位

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

14、 PCPC2 PCPC3例子:(实践操作程序45223.ASM)13IO寄存器位置位跳行 SBISIO寄存器的位置位跳行 说明:该指令测试1O寄存器某位,如果该位被置位,则跳一行执行指令。该指令在低32个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 例子:(实践操作程序45225.ASM)14相对调用 RCALL相对调用于程序 说明:在PC+1后(2K字(4K字节)范围内调用子程序。返回地址(RCALL

15、后的指令地址)存储到堆栈(见CALL)。 操作:PC(PC1)k 语法: 操作码: 程序计数器: RCALL k 2K k 2K PC(PC1) k例子: (实践操作程序DIP40LED.ASM) 15从子程序返回 RET子程序返回 说明:从子程序返回。返回地址从堆栈中弹出。 操作: PC(150)STACK PC(210)STACK 语法: 操作码: 程序计数器: 堆栈: RET None See Operation SPSP 2 RET None See Operation SPSP 3例子:(实践操作程序见DIP40LED.ASM)16从中断程序返回 RETI中断返回说明:从中断程序中返

16、回。返回地址从堆栈中弹出,且全局中断标志被置位。注意:1.主程序应跳过中断区,防止修改补充中断程序带来麻烦;2.不用的中断入口地址写上RETI-中断返回,有抗干扰作用; 操作: PC(150)STACKPC(210)STACK 语法: 操作码: 程序计数器: 堆栈: RETI None See Operation SPSP十2 RETI None See Operation SPSP 3例子:( 程序45230.ASM,摘自”乐曲.ASM”部分程序,仅供参考),能执行程序请阅”乐曲.ASM”程序及AVR单片机在儿童智能玩具中的应用-音乐玩具(电脑放音机)一文17寄存器拷贝数据 MOV寄存器拷贝

17、 说明:该指令将一个寄存器拷贝到另一个寄存器。源寄存器Rr的内容不改变,而目的寄存器Rd拷贝了Rr的内容。 操作:Rd Rr 语法: 操作码: 程序计数器: MOV Rd Rr 0 d 31, 0 r31 PCPC 1例子:(实践操作程序4611.ASM)18SRAM数据直接送寄存器 LDS直接从SRAM装入 说明:把SRAM中1个字节装入到寄存器。必须提供一个16位地址。存储器访问被限制在当前64K字节的SRAM页。超过64K字节,LDS指令使用RAMPZ寄存器访问。 操作:Rd(k) 语法: 操作码: 程序计数器: LDS Rd k 0 d 31,0 k65535 PCPC 2例子:(实践

18、操作程序4612.ASM)19寄存器数据直接送SRAM STS寄存器数据直接送SRAM 说明:将寄存器的内容直接存储到SRAM。必须提供一个16位的地址。存储器访问被限制在当前64K字节的SRAM页。STS指令使用RAMPZ寄存器访问存储器可超过64K字节。 操作:(k)Rr 语法: 操作码: 程序计数器: STS k,Rr 0r31,0k65535 PCPC2例子:(实践操作程序4613.ASM与4612.ASM相同)20立即数送寄存器 LDI装入立即数 说明:装入一个8位立即数到寄存器R16R31中。 操作:RdK 语法: 操作码: 程序计数器: LDI Rd K 16 d 31, 0K

19、255 PCPC 2例子:(实践操作程序4614.ASM)21.使用变址Z间接将SRAM中的内容传送到寄存器 LD(LDD)使用变址Z间接将SRAM中的内容传送到寄存器 说明:带或不带偏移间接从SRAM中传送一个字节到寄存器,SRAM中的位置由寄存器区中的 Z(16位)指针寄存器指出。存储器访问被限制在当前 64K字节的 SRAM页中。为访问另外SRAM页,则 IO范围内的寄存器RAMPZ需改变。在指令执行后,Z指针寄存器值要么不改变,要么就加1或减1操作。使用Z指针寄存器的这些特性,特别适合于堆栈指针,因为Z指针寄存器能用于直接子程序调用,直接跳转和查表。Z指针寄存器用作为专用堆栈指针要比X

20、、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, 先Z指针加q,后送数, PCPC10q63执行后Z指针(Z不含q)不变例子:(实践操作程序4625.ASM) 22. LPM装入程序存储器 说明:将Z寄存器指向的一个字节传送到寄存器0(RO)。该指令使100 空间有效,常

21、量初始化或常数取数特别有用。程序存储器被编为16位字,Z(16位)指针的最低位(LSB)选择为0是低字节,选择为1是高字节。该指令能寻址程序存储器第一个64K字节(32字)。 操作:R0(Z) 语法: 操作码: 程序计数器: LPM None PCPC 1例子:(实践操作程序4631.ASM,更详细资料阅”按钮猜数.ASM”)23IO口数据传送到寄存器 INIO口数据传送到寄存器 说明:将IO空间(口,定时器,配置寄存器等)的数据传送到寄存器区中的寄存器Rd中。 操作:RdP 语法: 操作码: 程序计数器: IN Rd P O d31, 0 P63 PCPC 1例子:(实践操作程序4641.A

22、SM)24寄存器数据送 I O口 OUT寄存器数据送 IO口 说明:将寄存器区中寄存器 Rr的数据传送到 I0空间(口、定时器、配置寄存器等)。 操作: P Rr 语法: 操作码: 程序计数器: OUT P, Rr 0 r31, 0 P63 PCPC十1例子:(实践操作程序4642.ASM)25进栈指令 PUSH压寄存器到堆栈 说明:该指令存储寄存器Rr的内容到堆栈。 操作: STACKRr 语法: 操作码: 程序计数器: PUSH Rr O d 31 PCPC1 SPSP 1例子:(实践操作程序4651.ASM)26出栈指令 POP堆栈弹出到寄存器 说明:该指令将堆栈中的字节装入到寄存器Rd

23、中。 操作:RdSTACK 语法: 操作码: 程序计数器: POP Rd 0 d 31 PCPC1 SPSP 1例子:(实践操作程序4652.ASM)27通过进位左循环 ROL通过进位左循环 说明:寄存器Rd的所有位左移1位,C标志被移到Rd的第0位,Rd的第7位移到C标志。 操作: 语法: 操作码: 程序计数器: ROL Rd 0 d 31 PCPC 1例子:(实践操作程序4713.ASM)28ROR通过进位右循环 说明:寄存器Rd的所有位右移1位,C标志被移到Rd的第7位,Rd的第0位移到C标志。 操作: 语法: 操作码: 程序计数器:ROR Rd 0 d 31 PCPC 1 例子: (实

24、践操作程序4714.ASM)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寄存器地址为 031。 操作:IO(P,b)0 语法: 操作码: 程序计数器: CBI P, b 0

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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com