R单片机指令系统.pdf
11页第五章AVR单片机指令系统计算机的指令系统是一套控制计算机操作的代码,称之为机器语言计算机只能识别和执行机器语言的指令为了便于人们理解、记忆和使用,通常用汇编语言指令来描述计算机的指令系统汇编语言指令可通过汇编器翻译成计算机能识别的机器语言AVR 单片机指令系统是 RISC 结构的精简指令集,是一种简明易掌握效率高的指令系统SL-DIY02-3 开发实验器使用 AT90S8535单片机,有 118 条指令,而我们所做的 11 个实验程序仅用了 34条指令,我们重点讲这 34 条指令,其余指令就可自学了AVR 器件(指令速查表)118 条指令器件AT90S2313/2323/2343/2333,AT90S4414/4433/4434/8515,AT90S8534/8535算术和逻辑指令ADD Rd,Rr加法ADC Rd,Rr带进位加 ADIW Rdl,K加立即数SUB Rd,Rr减法SUBI Rd,Rr减立即数SBC Rd,Rr带进位减SBCI Rd,K带 C 减立即数 SBIW Rdl,K减立即数AND Rd,Rr与ANDI Rd,K与立即数OR Rd,Rr或ORI Rd,K或立即数EOR Rd,Rr异或COM Rd取反NEG Rd取补SBR Rd,K寄存器位置位CBR Rd,K寄存器位清零INC Rd加 1DEC Rd减 1TST Rd测试零或负CLR Rd寄存器清零SER Rd寄存器置 FF条件转移指令RJMP k相对转移IJMP间接转移(Z)RCALL k相对调用ICALL间接调用(Z)RET子程序返回RETI中断返回CPSE Rd,Rr比较相等跳行CP Rd,Rr比较CPC Rd,Rr带进位比较CPI Rd,K与立即数比较SBRC Rr,b位清零跳行SBRS Rr,b位置位跳行SBIC P,bI/O 位清零跳行SBIS P,bI/O 位置位跳行BRBS s,kSREG 位置位转BRBC s,kSREG 位清零转BREQ k相等转移BRCC kC 清零转BRSH k转BRLO k小于转(无符号)BRMI k负数转移BRPL k正数转移BRGE k转(带符号)BRLT k小于转(带符号)BRHS kH 置位转移BRHC kH 清零转移BRTS kT 置位转移BRTC kT 清零转移BRVS kV 置位转移BRVC kV 清零转移BRIE k中断位置位转移BRID k中断位清零转移数据传送指令MOV Rd,Rr寄存器传送LDI Rd,K装入立即数LD Rd,XX 间接取数LD Rd,X+X 间接取数后LD Rd,-XX 间接取数先LD Rd,YY 间接取数LD Rd,Y+Y 间接取数后LD Rd,YY 间接取数先LDD Rd,Y+qY 间接取数qLD Rd,ZZ 间接取数 LD Rd,Z+Z 间接取数后 LD Rd,ZZ 间接取数先 LDD Rd,Z+qZ 间接取数q LDS Rd,K从 SRAM 装入ST X,RrX 间接存数ST X+,RrX 间接存数后ST X,RrX 间接存数先ST Y,RrY 间接存数ST Y+,RrY 间接存数后ST Y,RrY 间接存数先 STD Y+q,RrY 间接存数qST Z,RrZ 间接存数ST Z+,RrZ 间接存数后+ST Z,RrZ 间接存数先-STD Z+q,RrZ 间接存数+q位指令和位测试指令SBI P,b置位 I/O 位CBI P,b清零 I/O 位LSL Rd左移LSR Rd右移ROL Rd带进位左循环ROR Rd带进位右循环ASR Rd算术右移SWAP Rd半字节交换BSET s置位 SREGBCLR s清零 SREGBST Rr,bRr 的 b 位送 TBLD RdT 送 Rr 的 b 位SEC置位 CCLC清零 CSEN置位 NCLN清零 NSEZ置位 ZCLZ清零 ZSEI置位 ICLI清零 ISES置位 SCLS清零 SSEV置位 VCLV清零 VSET置位 TCLT清零 TSEH置位 HCLH清零 HNOP空操作SLEEP休眠指令WDR看门狗复位90 条指令为Attiny11/12/15/22=+89 条基本指令是AT90S1200118条指令器件=+90 条指令器件BRNE kBRCS k不相等转移C 置位转STS k,RrLPMIN Rd,POUT P,RdrPUSH RrPOP Rd,数据送 SRAM从程序区取数从 I/O 口取数存数 I/O 口压栈出栈说明:SL-DIY02-3 开发实验器的 11 个实验程序例子,仅用 34 条指令(以红色表示)1 1不带进位加法不带进位加法 ADD 一不带进位加说明:两个寄存器不带进位 C 标志加,结果送目的寄存器 Rd。
操作:RdRd+Rr语法:操作码:程序计数器:ADD Rd,Rr Od31,0r31 PCPC1例子:实践操作程序 4411.ASM)实践操作例子*.ASM,必须编译生成*.OBJ文件才可调试,如要修改*.ASM,必须修改文件属性,去掉*.ASM 只读文件属性2 2带进位加法带进位加法 ADC一带进位加说明:两个寄存器和 C 标志的内容相加,结果送目的寄存器 Rd操作:RdRdRrC语法:操作码:程序计数器:ADC Rd,Rr 0d31,0r31 PCPC1例子:(实践操作程序 4412.ASM)3 3减减 1 1 指令指令 DEC 一减 1说明:寄存器 Rd 的内容减 1,结果送目的寄存器 Rd 中操作:RdRdl语法:操作码:程序计数器:DEC Rd 0d31 PCPC 十 1例子:(实践操作程序 4426.ASM)4 4立即数比较立即数比较 CPI带立即数比较说明:该指令完成寄存器 Rd 和常数的比较操作寄存器的内容不改变该指令后能使用所有条件转移指令操作:RdK语法:操作码:程序计数器:CPI Rd,K 16d31,0 K255 PCPC 1例子:(实践操作程序 4463.ASM)5 5带立即数与带立即数与 ANDI立即数逻辑与 ;全 1 为 1,有 0 即 0说明:寄存器 Rd 的内容与常数逻辑与,结果送目的寄存器Rd。
应用:清 0,使某位为 0,用 0 去与;保留,用 1 去逻辑与;代硬件与门操作:RdRdK;语法:操作码:程序计数器:ANDI Rd K 16d31,0K255 PCPC 1例子:(实践操作程序 4472.ASM)6 6寄存器逻辑或寄存器逻辑或OR 一逻辑或;有 1 即 1,全 0 为 0,应用:置数,使某位为 1,用 1 去或;保留,用 0 去逻辑或;代硬件或门说明:完成寄存器 Rd 与寄存器 Rr 的内容逻辑或操作,结果进目的寄存器Rd 中操作:RdRd Rr语法:操作码:程序计数器:OR Rd Rr 0d31,0r31 PCPC 1例子:(实践操作程序 4481.ASM)7 7清除寄存器清除寄存器 CLR一寄存器清零说明:寄存器清零该指令采用寄存器 Rd 与自己的内容相异或实现的寄存器的所有位都被清零操作:RdRd Rd语法:操作码:程序计数器:CLR Rd 0d31 PCPC 1例子:(实践操作程序 4492.ASM)8 8相对跳转相对跳转 RJMP 一相对跳转说明:相对跳转到 PC 2K 和 PC2K(字)范围内的地址在汇编程序中,标号用于替代相对操作AVR 微控制器的程序存储器空间不超过 4K 字(8K 字节),该指令能寻址整个存储器空间的每个地址位置。
操作:PC(PC1)k语法:操作码:程序计数器:RJMP k 2Kk2K PC(PC1)k例子:(实践操作程序 4511.ASM)9 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)1010不相等转移不相等转移 BRNE不相等转移说明:条件相对转移,测试零标志(Z),如果 Z 位被清零,则相对 PC 值转移如果在执行CPCPI、SUB 或 SUBI 指令后立即执行该指令,且当在寄存器Rd中的无符号或带符号二进制数不等于寄存器Rr中的无符号或带符号二进制数时,转移将发生该指令相对 PC 转移的方向为:PC 64目的PC 63参数 K 为 PC 的偏移,用 2 的补码表示(相当于指令 BRBCIK)。
操作,If RdRr(Z0)then PC(PC1)k,elesPCPC1语法:操作码:程序计数器:BRNE k64 k 63 PC(PC1)k PCPCl例子:(实践操作程序 4524.ASM)1111寄存器位清零跳行寄存器位清零跳行 SBRC 一寄存器位被清零跳行说明:该指令测试寄存器某位,如果该位被清零,则跳下一行执行指令操作: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)1212寄存器位置位跳行寄存器位置位跳行 SBRS 一寄存器位置位跳行说明:该指令测试寄存器某位,如果该位被置位,则跳下一行执行指令操作:If Rr(b)l then PCPC 2(or 3)elesPCPC l语法:操作码:程序计数器:SBRS Rr,br31,0b7 PCPC1 PCPC2 PCPC3例子:(实践操作程序 45223.ASM)1313I IO O 寄存器位置位跳行寄存器位置位跳行 SBISIO 寄存器的位置位跳行说明:该指令测试 1O 寄存器某位,如果该位被置位,则跳一行执行指令。
该指令在低32 个 1O 寄存器内操作,地址为 031操作:If IOP,bl then PCPC2(or 3)else PCPC1语法:操作码:程序计数器:SBIS p,b 0 P 31,0 b 7 PCPC1 PCPC 2 PCPC 3例子:(实践操作程序 45225.ASM)1414相对调用相对调用 RCALL相对调用于程序说明:在 PC+1 后(2K 字(4K 字节)范围内调用子程序返回地址(RCALL后的指令地址)存储到堆栈(见 CALL)操作:PC(PC1)k语法:操作码:程序计数器:RCALL k2K k2K PC(PC1)k例子:(实践操作程序 DIP40LED.ASM)1515从子程序返回从子程序返回 RET子程序返回说明:从子程序返回返回地址从堆栈中弹出操作:PC(150)STACK PC(210)STACK语法:操作码:程序计数器:堆栈:RET None See Operation SP SP2 RET None See Operation SP SP3例子:(实践操作程序见 DIP40LED.ASM)1616从中断程序返回从中断程序返回 RETI中断返回说明:从中断程序中返回。
返回地址从堆栈中弹出,且全局中断标志被置位注意: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 单片机在儿童智能玩具中的应用-音乐玩具(电脑放音机)一文1717寄存器拷贝数据寄存器拷贝数据 MOV 寄存器拷贝说明:该指令将一个寄存器拷贝到另一个寄存器源寄存器 Rr 。

卡西欧5800p使用说明书资料.ppt
锂金属电池界面稳定化-全面剖析.docx
SG3525斩控式单相交流调压电路设计要点.doc
话剧《枕头人》剧本.docx
重视家风建设全面从严治党治家应成为领导干部必修课PPT模板.pptx
黄渤海区拖网渔具综合调查分析.docx
2024年一级造价工程师考试《建设工程技术与计量(交通运输工程)-公路篇》真题及答案.docx
【课件】Unit+3+Reading+and+Thinking公开课课件人教版(2019)必修第一册.pptx
嵌入式软件开发流程566841551.doc
生命密码PPT课件.ppt
爱与责任-师德之魂.ppt
制冷空调装置自动控制技术讲义.ppt

