AVR的指令(第六部分 位操作、位测试指令和MCU控制指令)

2007天前 · AVR单片机 · 672次阅读

带进位逻辑操作指令

  • 寄存器逻辑左移
LSL Rd    0≤d≤31
说明:寄存器Rd中所有位左移1位,第0位清0,第7位移到SREG中的C标志位。该指令完成一个无符号数乘以2的操作。
操作:C←b7b6b5b4b3b2b1b0←0    PC←PC+1
  • 寄存器逻辑右移
LSR Rd    0≤d≤31
说明:寄存器Rd中所有位右移1位,第7位清0,第0位移到SREG中的C标志位。该指令完成一个无符号数除以2的操作,C标志用于结果舍入。
操作:C→b7b6b5b4b3b2b1b0→0    PC←PC+1
  • 带进位位的寄存器逻辑循环左移
ROL Rd    0≤d≤31
说明:寄存器Rd的所有位左移1位,C标志被移到Rd的第0位,Rd的第7位移到C标志位。
操作:C←b7b6b5b4b3b2b1b0←C    PC←PC+1
  • 带进位位的寄存器逻辑循环右移
ROR Rd    0≤d≤31
说明:寄存器Rd的所有位右移1位,C标志被移到Rd的第7位,Rd的第0位移到C标志位。
操作:C→b7b6b5b4b3b2b1b0→C    PC←PC+1
  • 寄存器算术右移
ASR Rd    0≤d≤31
说明:寄存器Rd的所有位右移1位,而第7位保持原逻辑值,第0位装入SREG的C标志位。这个操作实现2的补码值除以2,而不改变符号,进位标志用于结果的舍入。
操作:b7→b7b6b5b4b3b2b1b0→C    PC←PC+1
  • 寄存器半字节交换
SWAP Rd    0≤d≤31
说明:寄存器Rd的高半字节与低半字节交换。
操作:b7b6b5b4←→b3b2b1b0    PC←PC+1

位变量传送指令

  • 寄存器中的位存储到SREG中的T标志
BST Rr,d    0≤d≤31,0≤b≤7
说明:把寄存器Rr中的位b存储到SREG状态寄存器中的T标志位。
操作:T←Rr(b)    PC←PC+1
  • SREG中的T标志位值装入寄存器Rd中的某一位
BLD Rd,b    0≤d≤31,0≤b≤7
说明:复制SREG状态寄存器的T标志到寄存器Rd中的位b。
操作:Rr(b)←T    PC←PC+1

位变量修改指令

  • 状态寄存SREG的指定位置位
BSET s    0≤s≤7
说明:置位状态寄存器SREG的某一位标志。
操作:SREG(s)←1    PC←PC+1
  • 状态寄存SREG的指定位清0
BCLR s    0≤s≤7
说明:清0状态寄存器SREG的某一位标志。
操作:SREG(s)←0    PC←PC+1
  • I/O寄存器的指定位置位
SBI P,b    0≤P≤31,0≤b≤7
说明:对P指定的I/O寄存器的指定位置位。该指令只在32个I/O寄存器内操作,I/O寄存器地址为0~31。
操作:I/O(P,b)←1    PC←PC+1
  • I/O寄存器的指定位清0
CBI P,b    0≤P≤31,0≤b≤7
说明:对P指定的I/O寄存器的指定位清0。该指令只在32个I/O寄存器内操作,I/O寄存器地址为0~31。
操作:I/O(P,b)←0    PC←PC+1
  • 置进位位
SEC
说明:置位SREG状态寄存器中的进位标志C。
操作:C←1    PC←PC+1
  • 清进位位
CLC
说明:清0 SREG状态寄存器中的进位标志C。
操作:C←0    PC←PC+1
  • 置负标志位
SEN
说明:置位SREG状态寄存器中的负数标志N。
操作:N←1    PC←PC+1
  • 清负标志位
CLN
说明:清0 SREG状态寄存器中的负数标志N。
操作:N←0    PC←PC+1
  • 置零标志位
SEZ
说明:置位SREG状态寄存器中的零标志Z。
操作:Z←1    PC←PC+1
  • 清零标志位
CLZ
说明:清0 SREG状态寄存器中的零标志Z。
操作:Z←0    PC←PC+1
  • 使能全局中断位
SEI
说明:置位SREG状态寄存器中的全局中断标志I。
操作:I←1    PC←PC+1
  • 禁止全局中断位
CLI
说明:清0 SREG状态寄存器中的全局中断标志I。
操作:I←0    PC←PC+1
  • 置S标志位
SES
说明:置位SREG状态寄存器中的符号标志S。
操作:S←1    PC←PC+1
  • 清S标志位
CLS
说明:清0 SREG状态寄存器中的符号标志S。
操作:S←0    PC←PC+1
  • 置溢出标志位
SEV
说明:置位SREG状态寄存器中的溢出标志V。
操作:V←1    PC←PC+1
  • 清溢出标志位
CLV
说明:清0 SREG状态寄存器中的溢出标志V。
操作:V←0    PC←PC+1
  • 置T标志位
SET
说明:置位SREG状态寄存器中的T标志。
操作:T←1    PC←PC+1
  • 清T标志位
CLT
说明:清0 SREG状态寄存器中的T标志。
操作:T←0    PC←PC+1
  • 置半进位标志
SEH
说明:置位SREG状态寄存器中的半进位标志H。
操作:H←1    PC←PC+1
  • 清半进位标志
CLH
说明:清0 SREG状态寄存器中的半进位标志H。
操作:H←0    PC←PC+1

MCU控制指令

  • 空操作指令
NOP
说明:该指令完成一个周期空操作
操作:无
  • 进入休眠方式指令
SLEEP
说明:该指令使MCU进入休眠方式运行。休眠模式由MCU控制寄存器定义。当MCU在休眠状态下由一个中断唤醒时,在中断程序执行后,紧跟在休眠指令后的指令将被执行。
操作:PC←PC+1
  • 清0看门狗计数器
WDR
说明:该指令清0看门狗定时器。在允许使用看门狗定时器情况下,系统程序在正常运行中必须在WD预定比例器给出的限定时间内执行一次该指令,以防止看门狗定时器溢出,造成系统复位。
操作:PC←PC+1
👍 0

none

最后修改于2007天前

评论

贴吧 狗头 原神 小黄脸
收起

贴吧

狗头

原神

小黄脸

目录

avatar

未末

迷失

126

文章数

275

评论数

7

分类