热搜关键词: 电路基础ADC数字信号处理封装库PLC

pdf

第四章AVR单片机指令系统

  • 1星
  • 2022-03-18
  • 1.83MB
  • 需要6积分
  • 1次下载
标签: 嵌入式

嵌入式

单片机

单片机

  AVR  单片机指令系统计算机的指令系统是一套控制计算机操作的代码,称之为机器语言。计算机只能识  别和执行机器语言的指令。为了便于人们理解、记忆和使使用。

第四章
AVR
单片机指令系统
4
1
第四章 AVR 单片机指令系统 
 
说明:
为了½读者和用户迅速掌握 AVR 指令系统的功½,边学习,边实践,希望大家
先学习<<第三章 AVR 开发工具>> 根据我们的实际教学经验,有的书籍是根据英文
文翻译,程序及说明可½不合中½人习惯 ,又由于印刷等多种原因 ,内容有出入,学起
来较难 我们是参考有关资料,并在实际工½中验证,并编写有关测试程序(含中文注
释),在模拟调试½件窗口观察通过,或在实时仿真器或在 SL-AVR 下½½开发下½½实验
器上验证通过,把测试实验程序刻在光盘上,保证用户学习 实验时少走弯路 所以我
们先学习系统½件的½用,然后学指令系统,用户一边学习 AVR 指令系统, 
一边学习系
统½件编程调试,这样½指令功½流向看得见摸得着,学习起来有声有色,达到事半功
倍的效果 ½学完所有指令,½也学会了用½件编程开发调试 我们的想法希望½½
去边学边实践,并得到½的认可,我们就谢谢了  
 
AVR 单片机每条指令对应的实验源程序见文件夹<<指令 ASM>> 
 
计算机的指令系统是一套控制计算机操½的代码 称之为机器语言 计算机只½识别和执行
机器语言的指令 为了便于人们理解 记忆和½用 通常用汇编语言指令来描述计算机的指令系
统 汇编语言指令可通过汇编器翻译成计算机½识别的机器语言  
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
条;
(4) 121
条指令器件(
)ATmega603/103; 121
条指令=
+ 118
条;
(5) 130
条指令器件(
)ATmega161;
130
条指令=
+121
AVR 大多数执行时间为单个时钟周期 这一章主要分析 AVR 单片机指令系统的功½和½用方法
下表为常用 AVR 器件指令表: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
广州天河双龙电子有限公司
http://WWW.SL.COM.CN
第四章
AVR
单片机指令系统
4
2
     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
1
DEC Rd
1
TST 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,b
I/O
½清零跳行
SBIS P,b
I/O
½½½跳行
BRBS s,k
SREG
½½½½
BRBC s,k
SREG
½清零½
BREQ k
相等½移
BRNE k
不相等½移
BRCS k
C
½½½
BRCC k
C
清零½
BRSH k
½
BRLO k
小于½(无符号)
BRMI k
负数½移
BRPL k
正数½移
BRGE k
½(带符号)
BRLT k
小于½
(
带符号
)
BRHS k
H
½½½移
BRHC k
H
清零½移
BRTS k
T
½½½移
BRTC k
T
清零½移
BRVS k
V
½½½移
BRVC k
V
清零½移
BRIE k
中断½½½½移
BRID k
中断½清零½移
数据传送指令
MOV Rd,Rr
寄存器传送
LDI Rd,Rr
装入立即数
LD Rd, X
X
间接取数
LD Rd, X+
X
间接取数后
LD Rd,-X
X
间接取数先
LD Rd,Y
Y
间接取数
LD Rd,Y+
Y
间接取数后
LD Rd,–Y
Y
间接取数先
LDD Rd,Y+q Y
间接取数
q
LD Rd, Z
Z
间接取数
LD Rd, Z+
Z
间接取数后
LD Rd,–Z
Z
间接取数先
LDD Rd, Z+q Z
间接取数
q
LDS Rd,K
SRAM
装入
ST X ,Rr
X
间接存数
ST X+ ,Rr
X
间接存数后
ST –X ,Rr
X
间接存数先
ST Y ,Rr
Y
间接存数
ST Y+ ,Rr
Y
间接存数后
ST –Y ,Rr
Y
间接存数先
STD Y+q ,Rr
Y
间接存数
q
ST Z ,Rr
Z
间接存数
ST Z+ ,Rr
Z
间接存数后+
ST –Z ,Rr
Z
间接存数先-
STD Z+q ,Rr Z
间接存数+q
STS k,,Rr
数据送
SRAM
LPM
从程序区取数
IN Rd,P
从/O 口取数
OUT P, Rdr
存数
I/O
PUSH Rr
压栈
POP Rd,
出栈
½指令和½测试指令
SBI P,b
½½
I/O
½
CBI P,b
清零
I/O
½
LSL Rd
左移
LSR Rd
右移
ROL Rd
带进½左循环
ROR Rd
带进½右循环
ASR Rd
算术右移
SWAP Rd
半字节交换
BSET s
½½
SREG
BCLR s
清零
SREG
BST Rr,b
Rr
b
½送
T
BLD Rd
T
Rr
b
½
SEC
½½
C
CLC
清零
C
SEN
½½
N
CLN
清零
N
SEZ
½½
Z
CLZ
清零
Z
SEI
½½
I
CLI
清零
I
SES
½½
S
CLS
清零
S
SEV
½½
V
CLV
清零
V
SET
½½
T
CLT
清零
T
SEH
½½
H
CLH
清零
H
NOP
空操½
SLEEP
休眠指令
WDR
看门狗复½
90
条指令为
Attiny11/12/15/22=
+89
条基本指令是
AT90S1200
118
条指令器件=
+ 90
条指令器件
 
 
广州天河双龙电子有限公司
http://WWW.SL.COM.CN
第四章
AVR
单片机指令系统
 
4
3
4.1 指令格式 
 
    4 . 1 . 1     汇编指令 
 
      汇编语言源文件是由汇编语言代码和汇编程序指令所组成的 ASCII 字符文件  
  一
汇编语言源文件 
      汇编语言源文件包括指令助记符 标号和伪指令 指令助记符和伪指令常带操½数  
      每条程序输入行首先是标号,标号为字母数字串 并带一个冒号 ½用标号的目的是为了跳
½和½移指令及在程序存储器和 SRAM 中定义变量名  
    程序输入行有下列四种½式  
     1) 标号 伪指令 操½数 注释义  
     2 标号 指令 操½数 注释  
     (3)注释 
4 空行 
    注释有下列½式 文字  
    括号内的项是任选的 用于注释的分号
及到行结尾的文字 汇编器是½略的 标号  
指令和伪指令在后面有详细说明  
    例子  
            L½½½½ .EQU V½½1=100     ½ V½½1 等于 100 伪指令  
                   .EQU V½½2=200     ½ V½½2 等于 200 
            ½½½½:  ½½½½  ½½½½        无限循环 指令  
                                     纯注释行 
                                     另一个注释行 
注意 不限制有关标号 伪指令 注释或指令的列½½  
 
二 指令助记符 
汇编器认可指令集中的指令助记符 指令集中综合了助记符并给出了参数  
操½数有下列½式
    R½ RO R31 或 R16 R31 取决于指令  
    R½ RO R31  
    ½ 常数 0 7 可½是常数表达式  
    S 常数 0 7 可½是常数表达式  
    ½ 常数(0 31 63 可½是常数表达式  
    K 常数 0 255 可½是常数表达式  
    ½ 常数 值范围取决于指令 可½是常数表达式  
    ½ 常数 0 63 可½是常数表达式  
 
4 . 1 . 2   汇编器伪指令 
  
   汇编器提供一些伪指令 伪指令并不直接½换成操½数 而是用于调整存储器中程序的½½
定义宏 初始化存储器等 全部伪指令在表 4.2 中给出  
  1 BYTE
保存字节到变量 
      BYTE 伪指令保存存储的内容到 SRAM 中 为了½提供所要保存的½½ BYTE 伪指令前应有
标号 该伪指令带一个表征被保存字节数的参数 该伪指令仅用在数据段内 见伪指令 CSEG DSEG
和 ESEG 注意 必须带一个参数 字节数的½½不需要初始化  
      语法 LABEL BYTE 表达式 
广州天河双龙电子有限公司
http://WWW.SL.COM.CN
第四章
AVR
单片机指令系统
4
4
  2 CSEG 一代码段 
      CSEG 伪指令定义代码段的开始½½ 一个汇编文件包含几个代码段 这些代码段在汇 编时
被连接成一个代码段 在代码段中不½½用 BYTE 伪指令 典型的缺省段为代码段 代码段有一个
字定½计数器 ORG 伪指令用于放½代码段和放½程序存储器指定½½的常数  
  CSEG 伪指令不带参数  
语法 CSEG 
表 4.2 伪指令表 
序号  伪指令 
说  明 
序号  伪指令  说  明 
1 
BYTE 
保存字节到变量 
10  ESEG 
E2PROM 段 
2 
CSEG 
代码段 
11  EXIT 
退出文件 
3 
DB 
定义字节常数 
12  INCLUDE  从指定文件开始读 
4 
DEF 
设½寄存器的符号名  13  LIST 
打开列表文件 
5 
DEVICE 
定义被汇编的器件  14  LISTMAC  打开宏表达式 
6 
DSEG 
数据段 
15  MACRO  宏开始 
7 
DW 
定义字常数 
16  NOLIST  关闭列表文件 
8 
ENDMACRO  宏结束 
17  ORG 
设½程序起始½½ 
9 
EQU 
符号相等于表达式  18  SET 
赋值给一个标号 
 
3 DB
在程序存储器或 E2PROM 存储器中定义字节常数 
    DB 伪指令保存数据到程序存储器或 E2PROM 存储器中 为了提供被保存的½½ 在 DB 伪指令
前必须有标号 DB 伪指令可带一个表达式表 至少有一个表达式 DB 伪指令必须放在代码段或
E2PROM 段 表达式表是一系列表达式 用逗号分隔 每个表达式必须是一 128 255 之间的有效值
如果表达式有效值是负数 则用 8 ½ 2 的补码放在程序存储器或 E2PROM 存储器中 如果 DB 伪指
令用在代码段 并且表达式表多于一个表达式 则以两个字节组合成一个字放在程序存储器中
如果表达式表是奇数 那么最后一个表达式将独自以字格式放在程序存储器中 而不管下一行汇
编代码是否是单个 DB 伪指令  
    语法 LABEL DB 表达式 
4 DEF
设½寄存器的符号名 
    DEF 伪指令允许寄存器用符号代替 一个定义的符号用在程序中 并指定一个寄存器,一个寄
存器可以赋几个符号 符号在后面程序中½再定义  
    语法 DEF 符号一寄存器 
5 DEVICE
定义被汇编的器件 
    DEVICE 伪指令允许用户告知汇编器被执行的代码½用那种器件 如果½用该伪指令 若在代
码中有指定的器件不提供的指令 则提示一个警告 如果代码段或 E2PROM 段的尺寸大于被指定器
件的尺寸 也提示警告 如果不½用 DEVICE 伪指令 则假定器件提供所有的指令 也不限制存储
器尺寸  
语法   .DEVICE AT90S1200  AT90S2313  AT90S4414  AT9OS8515 
6 DSEG 一数据段 
    DSEG 伪指令定义数据段的开始 一个汇编文件½包含几个数据段 这些数据段在汇编时 
被连接成一个数据段 一个数据段正常仅由 BYTE 伪指令 和标号 组成 数据段有自己的定 
½字节计数器 ORG 伪指令被用于在 SRAM 指定½½放½变量 DSEG 伪指令不带参数  
语法  .DSEG  
7 DW——在程序存储器和 E2PROM 存储器中定义字常数 
DW 伪指令保存代码到程序存储器或 E2PROM 存储器 为了提供被保存的½½ 在 DW 伪指 
令前必须有标号 DW 伪指令可带一个表达式表 至少有一个表达式 DW 伪指令必须放在 
代码段或 E2PROM 段 表达式表是一系列表达式 用逗号分隔 每个表达式必须是一 32 768  
65 535 之间的有效值 如果表达式有效值是负数 则用 16 ½ 2 的补码放在程序存储器中  
广州天河双龙电子有限公司
http://WWW.SL.COM.CN
第四章
AVR
单片机指令系统
4
5
    语法 LABEL  .DW 表达式表 
8·ENDMACRO 一宏结束 
    ENDMACRO 伪指令定义宏定义的结束 该伪指令并不带参数 参见 MACRO 宏定义伪指令  
    语法  .ENDMACRO 
9 EQU
——
设½一个符号相等于一个表达式 
EQU 伪指令赋一个值到标号 该标号用于后面的表达式 用 EQU 伪指令赋值的标号是一个 
常数 不½改变或重定义  
    语法  .EQU 标号= 表达式 
10 ESEG - E2PROM 段 
ESEG 伪指令定义 E2PROM 段的开始½½ 一个汇编文件包含几个 E2PROM 段 这些 E2PROM 
段在汇编时被连接成一个 E2PROM 段 在 E2PROM 段中不½½用 BYTE 伪指令 E2PROM 段有一 
个字节定½计数器 ORG 伪指令用于放½ E2PROM 存储器指定½½的常数 ESEG 伪指令不带参数  
    语法  .ESEG 
11 EXIT——退出文件 
EXIT 伪指令告诉汇编器停止汇编该文件 正常情况下 汇编器汇编到文件的结束 如果 
EXIT 出现在包括文件中 则汇编器从文件中 INCLUDE 伪指令行继续汇编  
    语法  .EXIT 
12·INCLUDE——包括另外的文件 
INCLUDE 伪指令告诉汇编器从指定的文件开始读 然后汇编器汇编指定的文件 直到文件 
结束或遇到 EXIT 伪指令 一个包括文件也可½自己用 INCLUDE 伪指令来表示  
    语法  .INCLUDE“文件名” 
13 LIST——打开列表文件生成器 
    LIST 伪指令告诉汇编器打开列表文件生成器 汇编器生成一个汇编源代码 地址和操½ 
代码的文件列表 列表文件生成器缺省值是打开 该伪指令总是与 NOLIST 伪指令一起出现  
用于生成列表或汇编源文件有选择的列表  
    语法  .LIST 
14 LISTMAC——打开宏表达式 
    LISTMAC 伪指令告诉汇编器 ½调用宏时 用列表生成器在列表文件中显示宏表达式  
缺省值仅是在列表文件中显示宏调用参数  
    语法  .LISTMAC 
15 MACRCO 一宏开始 
MACRO 伪指令告诉汇编器这是宏开始 MACRO 伪指令带宏名和参数 ½后面的程序中写 
了宏名 被表达的宏程序在指定½½被调用 一个宏可带 10 个参数 这些参数在宏定义中 
用 0
9 代表 ½调用一个宏时 参数用逗号分隔 宏定义用 ENDMACRO 伪指令结束  
缺省值为汇编器的列表生成器 仅列表宏调用 为了在列表文件中包括宏表达式 必须½ 
用  LISTMAC 伪指令 在列表文件的操½代码域内宏用  ½+ ½记号  
    语法  .MACRO 宏名 
16 NOLIST--关闭列表文件生成器 
    NOLIST 伪指令告诉汇编器关闭列表文件生成器 正常情况下 汇编器生成一个汇编源 
代码 地址和操½代码文件列表 缺省时为打开列表文件 ½是可用该伪指令禁止列表 为 
了½被选择的汇编源文件部分产生列表文件 该伪指令可以与 LIST 伪指令一起½用  
    语法  .NOLIST 
17 ORG 一设½程序起始½½ 
ORG 伪指令设½定½计数器一个绝对值 设½的值为一个参数 如果 ORG 伪指令放在数 
据段 则设½ SRAM 定½计数器 如果该伪指令放在代码段 则设½程序存储器计数器 如 
果该伪指令放在 E2PROM 段 则设½ E2PROM 定½计数器 如果该伪指令前带标号 在相同 
的源代码行 则标号由参数值给出 代码和 E2PROM 定½计数器的缺省值是零 而½汇编启 
广州天河双龙电子有限公司
http://WWW.SL.COM.CN
展开预览

猜您喜欢

评论

登录/注册

意见反馈

求资源

回顶部

推荐内容

热门活动

热门器件

随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
×