首页 AVR单片机指令

AVR单片机指令

举报
开通vip

AVR单片机指令 AVR单片机指令系统 1 广州市天河双龙电子有限公司 http://WWW.SL.COM.CN AVR单片机指令系统快速记忆方法及速查表 计算机的指令系统是一套控制计算机操作的代码 称之为机器语言 计算机只能识别和执行机器语 言的指令 为了便于人们理解 记忆和使用 通常用汇编语言指令来描述计算机的指令系统 汇编语言 指令可通过汇编器翻译成计算机能识别的机器语言 AVR单片机指令系统是RISC结构的精简指令集 是一种简明易掌握﹑效率高的指令系统 ...

AVR单片机指令
AVR单片机指令系统 1 广州市天河双龙电子有限公司 http://WWW.SL.COM.CN AVR单片机指令系统快速记忆方法及速查 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 计算机的指令系统是一套控制计算机操作的代码 称之为机器语言 计算机只能识别和执行机器语 言的指令 为了便于人们理解 记忆和使用 通常用汇编语言指令来描述计算机的指令系统 汇编语言 指令可通过汇编器翻译成计算机能识别的机器语言 AVR单片机指令系统是RISC结构的精简指令集 是一种简明易掌握﹑效率高的指令系统 AVR单片机指令系统速查表,不同器件使用不同的指令表,见附录3: (1) 89条指令器件:AT90S1200,最基本指令; (2) 90条指令器件( ):Attiny11/12/15/22; 90条指令= +89条基本指令 (3) 118条指令器件( ):AT90S2313/2323/2343/2333,/4414/4433/4434/8515/90S8534/8535 ;118条指令= + 90条; 118条指令分类: 寄存器传送(4): MOV,LD,SER,LDS, X寄存器(3): LD Rd,X;LD Rd,X+;LD Rd,-X Y寄存器(4): LD Rd,Y;LD Rd,Y+;LD Rd,-Y;LDD Rd,Y+q Z寄存器(4): LD Rd,Z;LD Rd,Z+;LD Rd,-Z;LDD Rd,Z+q X寄存器(3): ST X,Rr;ST X+,Rr;ST –X,Rr 数据传送指令 Y 寄存器(4): ST Y,Rr;ST Y+,Rr;ST –Y,Rr;STD Y+q,Rr (31) Z 寄存器(4): ST Z,Rr;ST Z+,Rr;ST –Z,Rr;STD Z+q,Rr 读存储器(1): LPM I/O指令(2): IN,OUT 栈指令(2): PUSH,POP 算术指令与 加(4): ADD,ADC,ADIW,INC; (10) 减(6): SUB,SUBI,SBC,SBCI,SBIW,DEC 逻辑运算指令 与(2):AND,ANDI, (12) 或(3): OR,ORI, EOR 清0置1:(7) COM,NEG, CBR,SBR, CLR ,TST,SER, 转移指令: (2) RJMP,IJMP(JMP转移) 调用指令: (2) RCALL,ICALL(CALL调用) 转移调用指令 返回 : (2) RET,RETI (RET返回) (34) 比较指令: (3) CP,CPC,CPI (CP比较) 分支指令: (5) CPSE,SBRC,SBRS,SBIC,SBIS, (S为1跳,C为0跳,R寄存器,I为I/O) 基本条件分支指令: (2) BRBS,BRBC (S为1转,C为0转) (状态字为I,T,H,S,V,N,Z,C) 派生指令:(18) BRIE,BRID;BRTS,BRTC;BRHS,BRHC;BRGE,BRLT;BRVS,BRVC; BRMI,BRPL;BREQ,BRNE;BRCS,BRCC;BRSH,BRLO; 位I/O操作指令: (2)SBI,CBI (S置1,C清0) 状态寄存器指令: (2)BSET,BCLR(状态字为I,T,H,S,V,N,Z,C) 位操作及其他 派生指令:(16) BSET -- SEI,SET,SEH,SES SEV,SEN,SEZ,SEC (SE置1某位) (31) BCLR -- CLI,CLT,CLH,CLS,CLV,CLN,CLZ,CLC (CL清0某位) 位传送: (2) BST,BLD, 移位指令: (6) LSL,LSR,ASR,ROL,ROR,SWAP(LS右移,RO左移,AS算术右移,R寄存器) 其他指令: (3) NOP,SLEEP,WDR AVR单片机指令系统 2 广州市天河双龙电子有限公司 http://WWW.SL.COM.CN AVR器件(指令速查表) 118条指令器件 AT90S2313/2323/2343/2333 ,AT90S4414/4433/4434/8515,AT90S8534/8535 算术和逻辑指令(22) BRCC k C=0清零转 位指令和位测试指令(31) ADD Rd,Rr 加法 BRSH k C=1无符号数 转 SBI P,b 置位 I/O位 ADC Rd,Rr 带进位加 BRLO k C=0无符号数小于转 CBI P,b 清零 I/O位 ADIW Rdl,K 加立即数 BRMI k N=1负数转移 LSL Rd 左移 SUB Rd,Rr 减法 BRPL k N=0正数转移 LSR Rd 右移 SUBI Rd,Rr 减立即数 BRGE k S=0(带符号数) 转 ROL Rd 带进位左循环 SBC Rd,Rr 带借位减 BRLT k S=1(带符号)小于转 ROR Rd 带进位右循环 SBCI Rd,K 带 C减立即数 BRHS k H=1置位转移 ASR Rd 算术右移 SBIW Rdl,K 字减立即数 BRHC k H=0清零转移 SWAP Rd 半字节交换 AND Rd,Rr 与 BRTS k T=1置位转移 BSET s 置位 SREG ANDI Rd,K 与立即数 BRTC k T=0清零转移 BCLR s 清零 SREG OR Rd,Rr 或 BRVS k V=1置位转移 BST Rr,b Rr的 b位送 T ORI Rd,K 或立即数 BRVC k V=0清零转移 BLD Rd T送 Rr的 b位 EOR Rd,Rr 异或 BRIE k I=1中断位置位转移 SEC 置位 C COM Rd 取反 BRID k I=0中断位清零转移 CLC 清零 C NEG Rd 取补 数据传送指令(31) SEN 置位 N SBR Rd,K 寄存器位置位 MOV Rd,Rr 寄存器传送 CLN 清零 N CBR Rd,K 寄存器位清零 LDI Rd,K 装入立即数 SEZ 置位 Z INC Rd 加 1 LD Rd, X X间接取数 CLZ 清零 Z DEC Rd 减 1 LD Rd, X+ X间接取数后 SEI 置位 I TST Rd 测试零或负 LD Rd,-X X间接取数先 CLI 清零 I CLR Rd 寄存器清零 LD Rd,Y Y间接取数 SES 置位 S SER Rd 寄存器置 FF LD Rd,Y+ Y间接取数后 CLS 清零 S 条件转移指令(34) LD Rd,–Y Y间接取数先 SEV 置位 V RJMP k 相对转移 LDD Rd,Y+q Y间接取数 q CLV 清零 V IJMP 间接转移(Z) LD Rd, Z Z间接取数 SET 置位 T RCALL k 相对调用 LD Rd, Z+ Z间接取数后 CLT 清零 T ICALL 间接调用(Z) LD Rd,–Z Z间接取数先 SEH 置位 H RET 子程序返回 LDD Rd, Z+q Z间接取数 q CLH 清零 H RETI 中断返回 LDS Rd,K 从 SRAM装入 NOP 空操作 CPSE Rd,Rr 比较相等跳行 ST X ,Rr X间接存数 SLEEP 休眠指令 CP Rd,Rr 比较 ST X+ ,Rr X间接存数后 WDR 看门狗复位 CPC Rd,Rr 带进位比较 ST –X ,Rr X间接存数先 CPI Rd,K 与立即数比较 ST Y ,Rr Y间接存数 SBRC Rr,b 位清零跳行 ST Y+ ,Rr Y间接存数后 SBRS Rr,b 位置位跳行 ST –Y ,Rr Y间接存数先 SBIC P,b I/O位清零跳行 STD Y+q ,Rr Y间接存数 q SBIS P,b I/O位置位跳行 ST Z ,Rr Z间接存数 90条指令为 Attiny11/12/15/22= +89条基本指令是 AT90S1200 BRBS s,k SREG位置位转 ST Z+ ,Rr Z间接存数后+ BRBC s,k SREG位清零转 ST –Z ,Rr Z间接存数先- BREQ k Z=1相等转移 STD Z+q ,Rr Z间接存数+q 118条指令器件= + 90条指令器件 BRNE k Z=0不相等转移 STS k,,Rr 数据送 SRAM BRCS k C=1置位转 LPM 从程序区取数 基本指令 程序状态字 SREG IN Rd,P 从 I/O口取数 派生出来的指令 7 6 5 4 3 2 1 0 OUT P, Rdr 存数 I/O口 I T H S V N Z C PUSH Rr 压栈 POP Rd, 出栈 AVR单片机指令系统 3 广州市天河双龙电子有限公司 http://WWW.SL.COM.CN AVR单片机指令系统简介 4.4 算术和逻辑指令 4.4.1 加法指令 1 ADD不带进位加法 说明 两个寄存器不带进位C标志加 结果送目的寄存器Rd 操作 ADD Rd,Rr RdßRd+ Rr O d 310 r 31 2 ADC带进位加法 说明 两个寄存器和C标志的内容相加 结果送目的寄存器Rd 操作 ADC Rd,Rr RdRdRrC 0 d 310 r 31 3 ADIW立即数据加法 字 说明 寄存器对于立即数值 0 63相加 结果放到寄存器对 操作 ADIW RdlK Rdh:RdlßRdh:Rdl+K d{ 24 26 28 30 } UJ 4 INC加1指令 说明 寄存器Rd的内容加 1结果送目的寄存器Rd中 操作 INC Rd RdßRd1 0d 31 4.4.2 减法指令 1 SUB不带进位减法 说明 两个寄存器相减 结果送目的寄存器Rd中 操作 SUB Rd,Rr RdßRdRr 0 d 310 r 31 2 SUBI立即数减法 字节 说明 一个寄存器和常数相减 结果送目的寄存器Rd 操作 SUBI Rd,K RdßRd—K 16d 310 k255 3 SBC带进位减法 说明 两个寄存器随着C标志相减 结果放到目的寄存器Rd中 4 SBCI带进位立即数减 说明 寄存器和立即数随着C标志相减 结果放到目的寄存器Rd中 操作 SBCI Rd K RdßRd K C 16d 310 K 255 5 SBIW立即数减法 字 说明 双寄存器与立即数 0 63减 结果送双寄存器 操作 SBIW Rdl K Rdh RdlßRdh:Rdl-K dl{24,2628,30} 0K 63 6 DEC减1指令 说明 寄存器Rd的内容减1 结果送目的寄存器Rd中 操作 DEC Rd RdßRdl 0 d 31 4.4.4取反码指令 COM — — 取二进制反码 说明 该指令完成寄存器Rd的二进制反码操作 操作 Rd COM Rdß$FF — Rd 0d 31 4.4.5 取补指令 NEG—— 二进制补码 AVR单片机指令系统 4 广州市天河双龙电子有限公司 http://WWW.SL.COM.CN 说明 寄存器 Rd的内容转换成二进制补码 值$80是不改变的 操作 NEG Rd Rß$OORd 0 d 31 4.4.6 比较指令 1 CP寄存器比较 说明 该指令完成两个寄存器Rd和Rr相比较操作 而寄存器的内容不改变 操作 CP Rd Rr RdRr 0 d 310 r 31 2 CPC带进位比较 说明 该指令完成寄存器Rd的值和寄存器Rr加前位进位的值相比较操作 操作 CPC Rd Rr RdRrC 0 d 310 r 31 3CPI立即数比较 说明 该指令完成寄存器Rd和常数的比较操作 操作 CPI Rd, K RdK 16d 31 0 K255 4.4 .7 逻辑与指令 1AND寄存器逻辑与;全1为1,有0即0 说明 寄存器Rd和寄存器Rr的内容为逻辑与 结果送目的寄存器Rd 操作 AND Rd,Rr RdßRd Rr 0 d 31 0d 31; 2 ANDI带立即数与; 全1为1,有0即0 说明 寄存器Rd的内容与常数逻辑与 结果送目的寄存器Rd 操作 ANDI Rd ,K RdßRd·K 16d 31 0K 255; 3 CBR清除寄存器位 说明 清除寄存器Rd中的指定位 利用寄存器Rd的内容与常数表征码K的补码相与 完成的 其结果放在寄存器Rd中 操作 CBR Rd, K RdßRd($FFK) 16d 31, 0K 255 4 TST测试零或负 说明 测试寄存器是否是零或是负 完成同一寄存器之间的逻辑与操作 而寄存器内容不改变 操作 TST Rd RdßRd Rd 0 d 31 4·4·8 逻辑或指令 1 OR寄存器逻辑或;有1即1,全0为0 说明 完成寄存器Rd与寄存器Rr的内容逻辑或操作 结果进目的寄存器Rd中 操作 OR Rd, Rr RdßRd Rr 0 d 31 0r 31 2 ORI带立即数或 功能: 保留(屏蔽)数据,置数(使某位为1) 说明 完成寄存器 Rd的内容与常量逻辑或操作 结果送目的寄存器 Rd中 操作 ORI Rd K RdßRdK 16d 31 0K 255 3 SBR寄存器位置位 说明 对寄存器Rd中指定位置位 完成寄存器Rd和常数表征码K之间的逻辑直接数 或 ORI结果送目的寄存器Rd 操作 SBR Rd K RdßRd K 16d 310 K 255 4 SER置位寄存器的所有位 说明 直接装入$FF到寄存器 Rd. 操作 SER Rd Rdß$FF 16d 31 4·4 9运辑异或指令 1 EOR—寄存器异或 输入相同输出为0,输入不同输出为1;也称同或(清零);也称互斥(置1) 操作 EOR Rd,Rr RdßRd⊕Rr 0d 31 0r 31 2 CLR一寄存器清零 AVR单片机指令系统 5 广州市天河双龙电子有限公司 http://WWW.SL.COM.CN 说明 寄存器清零 该指令采用寄存器Rd与自己的内容相异或实现的 寄存器 的所有位都被清零 操作 CLR Rd RdßRd ⊕Rd 0d 31 4 5转移指令 4·5·1无条件转移指令 1 RJMP相对跳转 说明 相对跳转到 PC 2K和 PC2K字 范围内的地址 在汇编程序中 标号用于替 代相对操作 操作 RJMP k PCß(PC1) k — 2Kk 2K 2 IJMP间接跳转 说明 间接跳转到由寄存器区中的Z 16位 指针寄存器指向的地址 Z指针寄存器 是16位宽 允许在当前程序存储器空间64K字 128K字节 内跳转 操作 IJMP PCßZ 150 PC15-0 ßZ 150 3 JMP长跳转 说明 在整个程序存储空间4M字 内跳转 见RJMP 注意:只能到你 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 的硬件电路所具有的空间,你的器件可有这条指令吗! 操作 JMP k PCßk 0k 4M 4.5.2 条件转移指令 一 测试条件符合转移指令 1 BRBS状态寄存器中位置位转移 说明 条件相对转移 测试SREG的某一位 如果该位被置位 则相对PC值转移 操作 BRBS Sk If SREG(S) 1 then PCß(PC1) k,else PCßPC十1 O S 7 64 k 63 PCß(PC 1) k 2 BRBC状态寄存器中位清零转移 说明 条件相对转移,测试 SREG的某一位,如果该位被清零,则相对 PC值转移. 操作 BRBC Sk If SREG(S) 0 then PCß(PC1) k,else PCßPC十1 0S 7 , -64k 63 PCß(PC1) k 3 BREQ相等转移 说明 条件相对转移 测试零标志 Z 如果 Z位被置位 则相对PC值转移 如果在执 行CP CPISUB或SUBI指令后立即执行该指令 且当寄存器Rd中无符号或有符号二进制 数与寄存器 Rr中无符号或有符号H进制数相等时 转移将发生 操作 BREQ k If RdRr(z1)then PCß(PC十1) k PCßPC十1 -64k 63 PCß(PC 1) k 4 BRNE不相等转移 说明 条件相对转移 测试零标志 Z 如果Z位被清零 则相对PC值转移 如果在执行CPCPI SUB或SUBI指令后立即执行该指令 且当在寄存器Rd中的无符号或带符号二进制数不等于寄存器Rr中 的无符号或带符号二进制数时 转移将发生 操作 BRNE k If RdRr(Z0) then PCß(PC1) k elesPCßPC1 64 k 63 5 BRCS 进位C标志位置位转移 说明 条件相对转移 测试进位标志 C 如果C位被置位 则相对PC值转移 操作 BRCS k If Cl then PCß(PC1) k eles PCßPC 1 64 k 63 6 BRCC 进位位C标志位清除转移 说明 条件相对转移 测试进位标志 C 如果C位被清除 则相对PC值转移 AVR单片机指令系统 6 广州市天河双龙电子有限公司 http://WWW.SL.COM.CN 操作 BRCC k If C 0 then PCß(PC1)k eles PCßPC1 64 k 63 7 BRSH无符号 大于或等于转移 说明 条件相对转移 测试进位标志 C 如果C位被清零 则相对PC值转移 操作 BRSH k If RdRr(CO)then PCß(PC1)k eles PCßPC1 -64 k 63 8 BRLO无符号 小于低于转移 说明 条件相对转移 测试进位标志 C 如果C位被置位 则相对PC值转移 操作 BRLO k If Rd Rr(C=1)then PCß(PC1)k eles PCßPC1 -64k 63 9. BRMI负数转移 说明 条件相对转移 测试负号标志 N 如果N被置位 则相对PC值转移 操作 BRMI k If Nl then PCß(PC1) keles PCßPC1 64 k 63 10BRPL正数转移 说明 条件相对转移 测试负号标志 N 如果N被清零,则相对PC值转移 操作 BRPL k If N 0 then PCß(PC十1) k eles PCßPC 1 -64k 63 11BRGE—大于或等于转移 带符号 说明 条件相对转移 测试符号标志 S 如果S位被清零 则相对PC值转移 操作 BRGE k If RdRr (N⊕V 0) then PCß(PC1)k eles PCßPC1 64 k 63 12BRLT—小于转移 有符号 说明 条件相对转移 测试符号标志 S 如果S位被置位 则相对PC值转移 操作 BRLT k If Rd Rf (N⊕V 1)then PCß(PC1)k eles PCßPC1 -64 k 63 13BRHS-半进位标志置位转移 说明 条件相对转移 测试半进位标志 H 如果H被置位 则相对PC值转移 操作 BRHS k If Hlthen PCß(PCl)k eles PCßPC1 64 k 63 14BRHC半进位标志清零转移 说明 条件相对转移 测试半进位标志 H 如果H位被清零 则相对PC值转移 操作 BRHC k If H0 then PCß(PC1)k eles PCßPC 1 -64 k 63 15BRTS T标志置位转移 说明 条件相对转移 测试T标志 如果T被置位 则相对PC值转移 操作: BRTS k If Tl then PCß(PC1)k eles PCßPC1 -64 k 63 16BRTC T标志清零转移 说明 条件相对转移 测试T标志 如果T被清零 则相对PC值转移 操作 BRTC k IfT0thenPCß(PC1)k elesPCßPC1 -64k 63 17BRVS溢出标志置位转移 说明 条件相对转移 测试溢出标志 V 如果V被置位 则相对PC值转移 操作 BRVS k IfVlthenPCß(PCl)k eles PCßPCl -64k 63 18BRVC溢出标志清零转移 操作 BRVC k IfV0thenPCß(PC1) k eles PCßPC1 64k 63 19BRIE—全局中断标志触发转移 说明 条件相对转移 测试全局中断标志 I 如果I被置位1 则相对PC值转移 操作 BRIE k If IlthenPCß(PC1)k elesPCßPC1 64k 63 20BRID全局中断标志禁止转移 说明 条件相对转移 测试全局中断标志 I 如果 I被清零 则相对 PC但转移 操作 BRID k If I=0 then PCß(PC1) kelse PCßPC 1 64 k 63 AVR单片机指令系统 7 广州市天河双龙电子有限公司 http://WWW.SL.COM.CN 二 测试条件符合跳行转移指令 21CPSE——比较相等跳行 说明 该指令完成两个寄存器Rd和Rr的比较 若RdRr则跳行执行指令 操作 CPSE Rd, Rr If RdRr then PCßPC2 or 3else PCßPC1 0 d 31 0 r31 22SBRC一寄存器位被清零跳行 说明 该指令测试寄存器某位 如果该位被清零 则跳下一行执行指令 操作 SBRC Rrb If Rdb 0 then PCßPC2 or 3eles PCßPC 1 0 r 31 0 b7 23SBRS一寄存器位置位跳行 说明 该指令测试寄存器某位 如果该位被置位 则跳下一行执行指令 操作: SBRS Rrb If Rr(b) l then PCßPC 2or 3eles PCßPC l r 310 b 7 24SBICI O寄存器位清零跳行 说明 该指令测试 IO寄存器某位 如果该位被清零 则跳一行执行指令 该指令在低32个 I0 寄存器内操作 地址为 0 31 操作 SBIC P,b If IOPb 0 then PCßPC2 or 3eles PCßC 1 0P 310 b 7 25SBISI O寄存器位置位跳行 说明 该指令测试1 O寄存器某位 如果该位被置位 则跳一行执行指令 该指令在低 32个1O寄存器内操作 地址为0 31 操作 SBIS p ,b If IOP, bl then PCßPC2 or 3else PCßPC1 0 P 31 0 b 7 三 调用和返回指令 26 RCALL——相对调用子程序 说明 在 PC+1后 2K字 4K字节 范围内调用子程序 返回地址 RCALL后的指令地址 存储到 堆栈 见CALL 操作 RCALL k PCß(PC1)k 2K k 2K 27 ICALL——间接调用于程序 说明 间接调用由寄存器区中的Z 16位指针寄存器指向的子程序 Z指针寄存器 是16位宽允许调用当前程序存储空间64K字128字节内的子程序 操作 ICALL PC150 ßZ 150 PC150 ßZ 15O 28 CALL子程序长调用 说明 在整个程序存储器区内调用子程序 返回地址 调用后返回的指令地址 将存储 在堆栈 见RCALL指令 中 操作 CALL k PCßk 0 k 64K CALL k PCßk 0 k 4M 29RET——从子程序返回 说明 从子程序返回 返回地址从堆栈中弹出 操作 RET PC150 ßSTACK RET PC210 ßSTACK 30RETI——从中断程序返回 说明 从中断程序中返回 返回地址从堆栈中弹出 且全局中断标志被置位 注意:1.主程序应跳过中断区,防止修改补充中断程序带来麻烦; 2.不用的中断入口地址写上RETI-中断返回,有抗干扰作用; AVR单片机指令系统 8 广州市天河双龙电子有限公司 http://WWW.SL.COM.CN 操作 RETI PC150 ßSTACK RETI PC210 ßSTACK 4.6 数据传送指令 4.6.1 直接数据传进指令 1 MOV寄存器拷贝数据 说明 该指令将一个寄存器拷贝到另一个寄存器 源寄存器Rr的内容不改变 而目的 寄存器Rd拷贝了Rr的内容 操作 MOV Rd Rr Rd Rr 0 d 31 0 r31 2 LDS SRAM数据直接送寄存器 说明 把SRAM中1个字节装入到寄存器 必须提供一个16位地址 操作 LDS Rd k Rdß(k) 0 d 310 k65535 3 STS寄存器数据直接送SRAM 说明 将寄存器的内容直接存储到SRAM必须提供一个16位的地址 操作 STS kRr k ßRr 0r 310 k 65535 4 LDI——立即数送寄存器 说明 装入一个8位立即数到寄存器R16R31中 操作 LDI Rd K RdßK 16 d 31 0K 255 4.6.2间接数据传送指令 一 使用X寄存器间接传送数据 1 使用变址X间接将SRAM中内容送入到寄存器 LD一使用变址X间接将SRAM中内容送入到寄存器 说明 从SRAM中间接送入一个字节到寄存器 SRAM中的位置由寄存器区中的X 16位 指针寄存器指出 存储器访问被限制在当前64K字节的SRAM页中 为访问另外 SRAM页 则I 0范围内的寄存器RAMPX需改变 在指令执行中 X指针寄存器值要么不 改变 要么就加1或减1操作 使用X指针寄存器的这些特性 特别适合于访问矩阵 表 和堆栈指针等 操作 LD Rd, X Rdß X ; 送数,X指针寄存器值不改变 LD Rd,X+ Rdß X XßX 1 ;先送数,后X指针寄存器值加1 LD Rd,-X XßX 1 Rdß(X) ;先X指针寄存器值减1, 后送数 2 使用变址X间接将寄存器内容传送到SRAM ST使用变址X间接将寄存器内容传送到SRAM 说明 间接将寄存器的一个字节传送到SRAMSRAM的位置由寄存器区中的X 16位 指针寄存器指 出 存储器访问被限制在当前64K字节的SRAM页中 为访问另外SRAM页 则 I O范围的寄存器RAMPX 将被修改 在操作之后 X指针寄存器要么不改变 要么是加1或减1 使用X指针寄存器的这些特性 特别适合用作堆栈指针 操作 ST X,Rr (X)ß Rr 0 d31 送数,X指针不改变 ST X,Rr X ß Rr 0d 31 先送数,后X指针加1 ST –X,Rr X ß X1 (X)ßRr 0 d 31 先X指针减1, 后送数 二 使用Y寄存器间接传送数据 3 使用变址Y间接将SRAM中的内容传送到寄存器 LDLDD 使用变址Y间接将SRAM中的内容传送到寄存器 说明 带或不带偏移间接从 SRAM中传送一个字节到寄存器 SRAM中的位置由寄存器区中的 Y 16 位 指针寄存器指出 存储器访问被限制在当前64K字节的SRAM页中 为访问另外SRAM页 则I O范 围内的寄存器 RAMPY需改变 在指令执行后 Y指针寄存器值要么不改变 要么就加 1或减 1操作 使 用Y指针寄存器的这些特性 特别适合于访问矩阵 表和堆栈指针等 操作 LD Rd,Y Rdß Y 0 d31 送数,Y指针不改变 LD Rd Y Rdß (Y) 0 d 31 先送数,后Y指针加1 AVR单片机指令系统 9 广州市天河双龙电子有限公司 http://WWW.SL.COM.CN LD Rd,-Y YßY 1 YßY 1 0d 31 先Y指针减1, 后送数 LDD Rd Yq Rdß Y q Rdß Y 0 d31 先Y指针加q,后送数 0 q 63 执行后Y指针(Y不含q)不变 4 使用变址Y间接将寄存器内容传送到SRAM STSTD——使用变址Y间接将寄存器内容传送到SRAM 说明 间接将带或不带偏移的寄存器的一个字节传送到SRAM SRAM的位置由寄存器区中的Y16 位 指针寄存器指出 存储器访问被限制在当前64K字节的SRAM页 为访问另外SRAM页 则I O范围的寄 存器RAMPY将被修改 在操作之后,Y指针寄存器要么不改变 要么是加1或减1 使用Y指针寄存器的 这些特性 特别适合用作堆栈指针 操作 ST Y,Rr Y ß Rr 0 d31 送数,Y指针不改变 ST Y,Rr Y ß Rr YßY 1 0d 31 先送数,后Y指针加1 ST -Y Rr Y ß Y l Y ßRr 0d 31 先Y指针减1, 后送数 STD Yq,Rr (Y q)ß Rr 0 d31 先Y指针加q,后送数 0 q 63 执行后Y指针(Y不含q)不变 三 使用Z寄存器间接传送数据 5.使用变址Z间接将SRAM中的内容传送到寄存器 LDLDD——使用变址Z间接将SRAM中的内容传送到寄存器 说明 带或不带偏移间接从 SRAM中传送一个字节到寄存器 SRAM中的位置由寄存器区中的 Z16 位 指针寄存器指出 存储器访问被限制在当前 64K字节的 SRAM页中 为访问另外SRAM页 则 IO 范围内的寄存器RAMPZ需改变 在指令执行后 Z指针寄存器值要么不改变 要么就加1或减 1操作 使用 Z指针寄存器的这些特性 特别适合于堆栈指针 因为 Z指针寄存器能用于直接子程序调用 直接 跳转和查表 Z指针寄存器用作为专用堆栈指针要比X Y指针方便 用Z指针在程序存储器中查表 可参见LPM指令 操作 LD Rd,Z Rdß Z 0 d31 送数,Z指针不改变 LD Rd Z Rdß Z 0d 31 先送数,后Z指针加1 LD Rd,-Z Z ß Z 1 0 d 31 先Z指针减1, 后送数 LDD Rd Z q Rdß Z q 0 d31 先Z指针加q,后送数 0 q 63 执行后Z指针(Z不含q)不变 6 使用变址Z间接将寄存器内容传送到SRAM STSTD——使用变址Z间接将寄存器内容传送到SRAM 说明 间接将带或不带偏移的寄存器的一个字节传送到SRAMSRAM的位置由寄存器区中的Z16位 指针寄存器指出 存储器访问被限制在当前64K字节的SRAM页 为访问另外 SRAM页 则 IO范围的 寄存器 RAMPZ将被修改 在操作之后 Z指针寄存器要么不改变 要么是加1或减1 使用Z指针寄存 器的这些特性 特别适合用作堆栈指针 因为Z指针寄存器能适用于间接子程序调用 间接跳转和查表 所以Z指针寄存器像一个专用堆栈指针 用起来比X和Y指针更方便 操作 ST Z,Rr Z ßRr 0 d31 送数,Z指针不改变 ST Z ,Rr (Z)ßRr ZßZ十1 0d 31 先送数,后Z指针加1 ST -Z Rr Zß Z-1 Z ßRr 0 d 31 先Z指针减1, 后送数 STD Z q,Rr Z q ßRr 0 d31 先Z指针加q,后送数 0 q 63 执行后Z指针(Z不含q)不变 3.6.3从程序存储器直接取数据指令 1. LPM——装入程序存储器 说明 将Z寄存器指向的一个字节传送到寄存器0 RO 该指令使100 空间有效,常 量初始化或常数取数特别有用 程序存储器被编为16位字 Z 16位 指针的最低位 LSB选 择为0是低字节 选择为1是高字节 该指令能寻址程序存储器第一个64K字节 32字 AVR单片机指令系统 10 广州市天河双龙电子有限公司 http://WWW.SL.COM.CN 操作 LPM R0ß Z 4·6·4 I0 口数据传送 1 IN——I O口数据传送到寄存器 说明 将I O空间 口 定时器 配置寄存器等 的数据传送到寄存器区中的寄存器Rd中 操作 IN Rd P RdßP O d31 0 P63 2 OUT--寄存器数据送 I O口 说明 将寄存器区中寄存器 Rr的数据传送到 I0空间 口 定时器 配置寄存器等 操作 OUT P Rr Pß Rr 0 r31 0 P63 4·6 5堆栈操作指令 AVR单片机的特殊功能寄存器中有一个堆栈指针 SP它指出栈顶的位置 在指令系统中有两条用于 数据传送的栈操作指令 1 PUSH——压寄存器到堆栈,进栈指令 说明 该指令存储寄存器Rr的内容到堆栈 操作 PUSH Rr STACKßRr O d 31 2 POP——堆栈弹出到寄存器,出栈指令 说明 该指令将堆栈中的字节装入到寄存器Rd中 操作 POP Rd RdßSTACK 0 d 31 4.7 位指令和位测试指令 4.7.1 带进位逻辑操作指令 1 LSL——逻辑左移 逻辑左移 说明 寄存器Rd中所有位左移1位 第0位被清零 第7位移到SREG中的C标志 该指令完成一个无符号数乘2的操作 操作 LSL Rd 0 d 31 2 LSR——逻辑右移 说明 寄存器Rd中所有位右移1位 第7位被清零 第0位移到SREG中的C标志 该指令完成一个无符号数除2的操作 C标志被用于结果舍入 操作 LSR Rd 0 d 31 3 ROL通过进位左循环 说明 寄存器Rd的所有位左移1位 C标志被移到Rd的第0位 Rd的第7位移到C标志 操作 ROL Rd 0 d 31 4 ROR——通过进位右循环 说明 寄存器Rd的所有位右移1位 C标志被移到Rd的第7位 Rd的第0位移到C 标志 操作 ROR Rd 0 d 31 5 ASR——算术右移 说明 寄存器Rd中的所有位右移1位 而位7保持常量 位0被装入SREG的C标志位 这个操作 实现2的补码值除2 而不改变符号 进位标志用于结果的舍入 操作 ASR Rd 0 d 31 6 SWAP——半字节交换 说明 寄存器中的高半字节和低半字节交换 操作 SWAP Rd 0 d 31 R7 4 ßRd3 0 ßR 3 0 ßRd7 4 4.7.2 位变量传送指令 1 BST——寄存器中的位存储到SREG中的T标志 说明 把寄存器中的位b存储到SREG状态寄存器 中的T标志 操作 BST Rd b TßRdb 0 d31,0 b7 AVR单片机指令系统 11 广州市天河双龙电子有限公司 http://WWW.SL.COM.CN 2 BLD一SREG中的T标志装入寄存器中的某一位 说明 拷贝SREG状态寄存器 的T标志到寄存器Rd中的位b 操作 BLD Rd,d Rdb ßT 0 d31, 0 b7 4.7.3 位变量修改指令 1 BSET——置状态寄存器的位 说明 置状态寄存器 SREG的某一标志或某一位 操作 BSET s SREGS ß1 0 s 7 2 BCLR清状态寄存器的位 说明 清零SREG状态寄存器中的一个标志位 操作 BCLR s SREGS ß 0 0 s 7 3 SBI置I O寄存器的位 说明 对I O寄存器指定的位置位 该指令在低32个I O寄存器内操作 I O寄存器地 址为0 31 操作 SBIPb IO( P b)ß1 0P 310 b 7 4 CBI——清I O寄存器的位 说明 清零I O寄存器中的指定位 该指令用在寄存器最低的32个I O寄存器上 I O 寄存器地址为 031 操作 CBI P, b IO P b ß0 0 P31 0b 7 5 SEC一置进位位标志 说明 置位SREG状态寄存器 中的进位标志 C 操作 SEC Cß1 6 CLC―清零进位标志 说明 清零SREG状态寄存器 中的进位标志 C 操作 CLC Cß0 7 SEN——置位负数标志 说明 置位SREG状态寄存器 中的负数标志 N 操作 SEN Nß1 8 CLN一清零负数标志 说明 清零SREG状态寄存器 中的负数标志 N 操作 CLN Nß0 9 SEZ——置位零标志 说明 置位SREG状态寄存器 中的零标志 Z 操作 SEZ Zß1 10CLZ——清零零标志 说明 清零SREG状态寄存器 中的零标志 Z 操作 CLZ Zß0 11SEI——置位全局中断标志 说明 置位SREG状态寄存器 中的全局中断标志 I 操作 SEI Iß1 12CLI——清零全局中断标志 说明 清除SREG状态寄存器 中的全局中断标志 I 操作 CLI Iß0 13SES一置位符号S标志 说明 置位SREG状态寄存器 中的符号标志 S 操作 SES sß1 14CLS——清零符号S标志 说明 清零SREG状态寄存器 中的符号标志 S AVR单片机指令系统 12 广州市天河双龙电子有限公司 http://WWW.SL.COM.CN 操作 CLS Sß0 15SEV置溢出标志位 说明 置位SREG状态寄存器 中的溢出标志 V 操作 SEV Vß1 16CLV清溢出标志位 说明 清零SREG状态寄存器 中的溢出标志 V 操作 CLV Vß0 17SET―置T标志位 说明 置位SREG状态寄存器 中的T标志 操作 SET Tß1 18CLT——清T标志位 说明 清零SREG状态寄存器 中的T标志 操作 CLT Tß0 19SEH——置半进位标志 说明 置位SREG状态寄存器 中的半进位标志 H 操作 SEH Hß1 20CLH——清半进位标志 说明 清零SREG状态寄存器 中的半进位标志 H 操作 CLH Hß0 4.7.4 其它指令 1 空指令 NOP——空操作 说明 该指令完成一个单周期空操作 应用:延时等待;产生方波;抗干扰,在无程序单元写上空操作,空操作指令最后转到$000H 操作 NOP No 2 SLEEP——休眠指令 说明 该指令设置电路休眠模式 由 MCU控制寄存器定义 当在休眠状态由一个中断 唤醒时 在中断程序执行后 紧跟在休眠指令后的指令被执行 应用:省电,尤其对便携式仪器特别有用 操作 SLEEP 3 WDR——看门狗复位 说明 该指令复位看门狗定时器 在 WD预定比例器给出限定时间内必须执行 参见看门狗定时器 硬件部分 应用:抗干扰;延时 操作 WDR WD timer restart 广州市天河双龙电子有限公司 http://WWW.SL.COM.CN 广州双龙:广州天河路 561号新赛格电子城 331室(510630) 电话:020-87578852 87505012 传真:分机 620 北京双龙:北京海淀知春路 132号中发大厦 616室(100086) 电话:010-82623551 62653785 传真:010-82623550 上海双龙:上海北京东路 668号科技京城东搂 12H2室(200001) 电话:021-53081501 53081502 传真:分机 213
本文档为【AVR单片机指令】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_811342
暂无简介~
格式:pdf
大小:195KB
软件:PDF阅读器
页数:12
分类:互联网
上传时间:2011-08-11
浏览量:48