AVR指令表

  • 格式:pdf
  • 大小:235.54 KB
  • 文档页数:4

AVR指令表 2000/5耿德根编

算术和逻辑指令条件转移指令

ADDRd,Rr加法RJMP相对转移(-2KK2K)

ADCRd,Rr带进位加法IJMP间接跳转(128KB)

ADIWRd,K直接数加法JMPk长跳转(4M)

SUBRd,Rr减法RCALLk相对调用(-2KK2K)

SUBIRd,K立即数减ICALL间接调用(128KB)

SBCRd,Rr带进位减CALLk长调用(4M)

SBCIRd,K带进位立即数减RET子程序返回

SBIWRd,K立即数减法RETI中断返回

ANDRd,Rr逻辑与CPSERd,Rr比较相等跳行

ANDIRd,K直接数逻辑与CPRd,Rr比较

ORRd,Rr逻辑或CPCRd,Rr带进位比较

ORIRd,K直接数逻辑或CPIRd,K带直接数比较

EORRd,Rr异或SBRCRd,b寄存器位被清零跳行

COMRd取二进制反码SBRSRd,b寄存器位置位跳行

NEGRd二进制补码SBICP,bI/O寄存器的位清零跳行

SBRRd,K寄存器位置位SBISP,bI/O寄存器的位置位跳行

CBRRd,K清除进位标志BRBSS,kSREG中的位被置位转移

INCRd加1BRBCS,kSREG中的位被清除转移

DECRd减1BREQk相等转移

TSTRd测试零或负BRNEk不相等转移

CLRRd清除寄存器BRCSk进位位置位转移

SERRd置位寄存器所有位BRCCk进位位清除转移

MULRd,Rr乘法BRSHk高于等于转

寄存器和操作码BRLOk低于转移(无符号)

Rd:寄存器文件中的目的(或源)寄存器BRMIk负数转移

Rr: 寄存器文件中的源寄存器BRPLk正数转移

R:指令执行后的结果BRGEk大于或等于转移(带符号)

K:常数项或字节数据(8位)BRLTk小于转移(有符号)

k:程序计数器的常量地址数据BRHSk半进位标志置位转移

b:在寄存器文件中或I/O(3位)中的位BRHCk半进位标志被清除转移

s: 在状态寄存器 (3位)中的位BRTSkT标志被置位转移

X,Y,Z:间接地址寄存器BRTCkT标志被清除转移

P:I/O口地址BRVSk溢出标志被置位转移

q:直接寻址的偏移(6位)BRVCk溢出标志被转移清除

状态寄存器BRIEk全局中断被使能转移

SREG: 状态寄存器S:N⊕V,符号测试位BRIDk全局中断被禁止转移

C:进位标志位H:半进位标志位状态寄存器(SREG)和布尔格式

Z:零标志位N:负数标志位I T H S V N Z C

V:2的补码溢出指示位7 6 5 4 3 2 1 0

T:用于BLD和BST指令传送位

I:全局中断使能禁止标志位标志: =/0/1/-; = 由指令引起的有效标志

AVR C高级语言的效率

执行同功能的程序,

8MHzAVR224MHz C51

不再有作废的产品; 不需要5分钟的紫外线擦除时间;

再也用不着因为掩模而无法入睡了; 没有10周订货交货时间;

添加新特性易如反掌; 容易调试; 容易在线升级,几秒钟搞定;想想AVR的好处? AVR指令表 2000/5耿德根编数据传送指令位指令和位测试指令

MOVRd,Rr寄存器拷贝LSLRd

逻辑左移

LDIRd,K装入立即数LSRRd逻辑右移

LDSRd,K直接从SRAM装入ROLRd通过进位左循环

LDRd,XX变址间接装入RRORRd通过进位右循环

LDRd,X+X变址ASRRd算术右移

LDRd,-XX变址SWAPs半字节交换

LDRd,YY变址BSETs置状态寄存器的位

LDRd,Y+Y变址BCLRsSREG中的位清除

LDRd,-YY变址SBIP,b置I/O寄存器的位

LDDRd,Y+qY变址间接装入RCBIP,b清I/O寄存器的位

LDRd,ZZ变址BSTRr,bR中位到SREG中T标志

LDRd,Z+Z变址BLDRd,bSREG中T标志到R某位

LDRd,-ZZ变址SEC置位进位标志

LDDRd,Z+qZ变址CLC清除进位标志

STSK,RrR数据直接送SRAMSEN置位负数标志

STX,RrX变址间接装入SRAMCLN清除负数标志

STX+,RrX变址SEZ置位零标志

ST-X,RrX变址CLZ清零标志位

STY,RrY变址SEI置位全局中断标志

STY+,RrY变址CLI清除全局中断标志

ST-Y,RrY变址SES置位符号标志

STDY+q,Rr变址间接装入SRAMCLS清除符号标志

STZ,RrZ变址SEV置位溢出标志位

STZ+,RrZ变址CLV清除溢出标志

ST-Z,RrZ变址SET置位T标志

STDZ+q,RrZ变址CLT清除T标志

LPM装入程序存储器SEH置位半进位标志

INRd,PI/O口数据装入到RCLH清除半进位标志

OUTP,Rr寄存器数据送I/O口NOP空操作

PUSHRr压寄存器到堆栈SLEEP休眠

POPRd堆栈弹出到寄存器WDR看门狗复位

汇编器伪指令(伪指令前必须加 “ .. ” )

.BYTE-- 保存寄节到变量.CSEG-- 代码段

.DB-- 字节常数.EXIT-- 退出文件

.DEF-- 设置寄存器的符号名.INCLUDE--包括号外的文件

.DEVICE--定义被汇编的器件.LIST-- 打开列表文件生成器

.DSEG-- 数据段.LISTMAC--打开宏表达式

.DW-- 字常数.MACRO-- 宏开始

.ENDMACRO--宏结束.NOLIST-- 关闭列表文件生成器

.EQU-- 设置符号相等于一个表达式.ORG-- 设置程序起始位置

.ESEG-- EPROM段.SET-- 设置一个与表达式相等的符号

AVR ICE200在线仿真器 双龙电子为中国大陆总代理

ICE200可仿真的器件为AT90S1200/2313/2333/4433/4414/8515/4434/8535及

ATtiny10/11/12由于仿真器的电源不对外所以ICE200也支持低电压器件AT90S I/O空间定义

十六进制地址名 称AT90SMEG103名 称AT90S1200名 称AT90S8515功 能(对应8515名称,*为对应MEG103)

$3F($5F)SREGSREGSREG状态寄存器

$3E($5E)SPHSPH堆栈指针高

$3D($5D)SPLSPL堆栈指针低

$3C($5C)XDIVXTAL分频控制器 *

$3B($5B)RAMPZGIMSKGIMSK通用中断屏蔽寄存器

$3A($5A)EICRGIFR通用中断标态寄存器

$39($59)EIMSKTIMSKTIMSK定时器/计数器中断屏敝寄存器

$38($58)EIFRTIFRTIFR定时器/计数器中断标志寄存器

$37($57)TIMSK定时器/计数器中断屏敝寄存器 *

$36($56)TIFR定时器/计数器中断标志寄存器 *

$35($55)MCUCRMCUCRMCUCRMCU通用控制寄存器

$34($54)MCUSR MCU通用控制寄存器 *

$33($53)TCCR0TCCR0TCCR0定时器/计数器0控制寄存器

$32($52)TCNT0TCNT0TCNT0定时器/计数器0(8位)

$31($51)OCR0定时器/计数器0输出比较寄存器 *

$30($50)ASSR异步方式状态寄存器 *

$2F($4F)TCCR1ATCCR1A定时器/计数器1控制寄存器A

$2E($4E)TCCR1BTCCR1B定时器/计数器1控制寄存器B

$2D($4D)TCNT1HTCNT1H定时器/计数器1高字节

$2C($4C)TCNT1LTCNT1L定时器/计数器1低字节

$2B($4B)OCR1AHOCR1AH定时器/计数器1输出比较寄存器A高字节

$2A($4A)OCR1ALOCR1AL定时器/计数器1输出比较寄存器A低字节

$29($49)OCR1BHOCR1BH定时器/计数器1输出比较寄存器B高字节

$28($48)OCR1BLOCR1BL定时器/计数器1输出比较寄存器B低字节

$27($47)ICR1H定时器/计数器1输入捕获寄存器高字节 *

$26($46)ICR1L定时器/计数器1输入捕获寄存器低字节 *

$25($45)TCCR2ICR1HT/C1输入捕获寄存器高字节

$24($44)TCNT2ICR1LT/C1输入捕获寄存器低字节

$23($43)OCR2定时器/计数器2输出比较寄存器 *

$22($42)

$21($41)WDTCRWDTCRWDTCR看门狗定时控制寄存器

$20($40)

$1F($3F)EEARHEEARHEPROM地址寄存器高字节

$1E($3E)EEARLEEAREEARLEPROM地址寄存器低字节

$1D($3D)EEDREEDREEDREPROM数据寄存器

$1C($3C)EECREECREECREPROM控制寄存器

$1B($3B)PORTAPORTAA口数据寄存器

$1A($3A)DDRADDRAA口数据方向寄存器

$19($39)PINAPINAA口输入脚

$18($38)PORTBPORTBPORTBB口数据寄存器

$17($37)DDRBDDRBDDRBB口数据方向寄存器

$16($36)PINBPINBPINBB口输入脚

$15($35)PORTCPORTCC口数据寄存器

$14($34)ODRCC口数据方向寄存器

$13($33)PINCC口输入脚

$12($32)P0RTDPORTDPORTDD口数据寄存器

$11($31)DDRDDDRDDDRDD口数据方向寄存器$10($30)PINDPINDPINDD口输入脚

$0F($2F)SPORSPORSPI I/O数据寄存器

$0E($2E)SPSRSPSRSPI状态寄存器

$0D($2D)SPCRSPCRSPI控制寄存器

$0C($2C)UDRUDRUART I/O数据寄存器

$0B($2B)USRUSRUART状态寄存器

$0A($2A)UCRUCRUART控制寄存器

$09($29)UBRRUBRRUART波特率寄存器

$08($28)ACSRACSRACSR模拟比较控制和状态寄存器

$07($27)ADMUXADC多路选择寄存器 *

$06($26)ADCSRADC状态和控制寄存器 *

$05($25)ADCHADC数据寄存器高 *

$04($24)ADCLADC数据寄存器低 *

$03($23)PORIEE口数据寄存器 *

$02($22)DDREE口数据方向寄存器 *

$01($21)PINEE口输入脚 *

$00($20)PINFF口输入脚 *

复位和中断向量

向量号程序地址源源中断定义1$000/RESET/RESET硬件脚和看门狗复位

2$001INT0INT0外部中断请求0

3$002INT1INT1外部中断请求1

4$003TIMER1 CAPTTIMER1 CAPT定时器/计数器1捕获事件

5$004TIMER1 COMPATIMER1 COMPA定时器/计数器1比较匹配A

6$005TIMER1 COMPBTIMER1 COMPB定时器/计数器1比较匹配B

7$006TIMER1 OVFTIMER1 OVF定时器/计数器1溢出

8$007TIMER0 OVFTIMER0 OVF定时器/计数器0溢出

9$008SPI,STCSPI,STC串行传送完成

10$009UART,RXUART,RXUART,RX完成

11$00AUART,UDREUART,UDREUART数据寄存器空

12$00BUART,TXUART,TXUART,TX完成