AVR汇编(七):位操作和MCU控制指令
AVR汇编(七):位操作和MCU控制指令
位操作指令
SBI / CBI

SBI 指令用于设置I/O寄存器中的第 b 位, CBI 指令用于清除I/O寄存器中的第 b 位。
例如:
SBI DDRB, 5 ; PB5设为输出模式
CBI PORTB, 5 ; PB5输出低电平
移位

LSL 指令用于逻辑左移,低位补0。
LSR 指令用于逻辑右移,高位补0。
ASR 指令用于算术右移,高位补符号位。
ROL 指令用于循环左移,低位补 C 标志位,高位进入 C 标志位。
ROR 指令用于循环右移,高位补 C 标志位,低位进入 C 标志位。
例如:
LDI R16, 0x88 ; R16 = 0x88
LSR R16 ; R16 = 0x44
LSL R16 ; R16 = 0x88
ASR R16 ; R16 = 0xC4
SEC ; C = 1
ROR R16 ; R16 = 0xE2, C = 0
ROL R16 ; R16 = 0xC4, C = 1
SWAP

SWAP 指令用于交换寄存器的高低4位。
例如:
LDI R16, 0xA5 ; R16 = 0xA5
SWAP R16 ; R16 = 0x5A
BSET / BCLR

BSET 用于设置 SREG 寄存器中的第 s 位, BCLR 用于清除 SREG 寄存器中的第 s 位。
例如:
BSET 0 ; C = 1
BCLR 0 ; C = 0
BST / BLD

BST 用于将寄存器中的第 b 位保存到 T 标志位, BLD 用于将 T 标志位加载到寄存器的第 b 位。
例如:
LDI R16, 0xAA
BST R16, 1 ; T = 1
BLD R16, 0 ; R16 = 0xAB
SEx / CLx

形如 SEx 的指令用于设置 SREG 寄存器中对应的标志位,形如 CLx 的指令用于清除 SREG 寄存器中对应的标志位,这两条指令作用和 BSET / BCLR 指令相同。
例如:
SEC ; SREG = 0x01
SEZ ; SREG = 0x03
SEN ; SREG = 0x07
SEV ; SREG = 0x0F
SES ; SREG = 0x1F
SEH ; SREG = 0x3F
SET ; SREG = 0x7F
SEI ; SREG = 0xFF
CLI ; SREG = 0x7F
CLT ; SREG = 0x3F
CLH ; SREG = 0x1F
CLS ; SREG = 0x0F
CLV ; SREG = 0x07
CLN ; SREG = 0x03
CLZ ; SREG = 0x01
CLC ; SREG = 0x00
MCU控制指令

NOP 指令占用一个周期而不做任何操作。
SLEEP 指令用于进入睡眠模式。
WDR 指令用于复位看门狗。
BREAK 指令供调试系统使用,应用程序用不到。
参考资料
AVR汇编(七):位操作和MCU控制指令的更多相关文章
- AVR之BOOTLOADER技术详解(转)
源:http://blog.csdn.net/zhenhua10/article/details/6442412 ATmega128具备引导加载支持的用户程序自编程功能(In-System Progr ...
- 第九章 C语言在嵌入式中的应用
上章回顾 编码的规范和程序版式 版权管理和申明 头文件结构和作用 程序命名 程序注释和代码布局规范 assert断言函数的应用 与0或NULL值的比较 内存的分配和释放细节,避免内存泄露 常量特性 g ...
- KeilC51高级编程
第一节 绝对地址访问 C51提供了三种访问绝对地址的方法: 1. 绝对宏: 在程序中,用“#include<absacc.h>”即可使用其中定义的宏来访问绝对地址,包括: CBYTE.XB ...
- 单片机汇编语言实现DES加密算法
目前在金融界及非金融界的保密通信中,越来越多地用到了DES算法.DES(Data Encryption Standard)即数据加密算法,是IBM公司于 1977年研究成功并公开发表的.随着我国三金工 ...
- A51汇编器的解释
A51汇编器是运行于IBM PC系列及其兼容机上的交叉汇编软件,其主要功能是将MCS-51系列单片机汇编语言源程序翻译成符合Intel目标文件格式的可再定位的目标代码,经过L51连接器的连接和装配,产 ...
- Markdown 常用语言关键字
Markdown 语法高亮支持的语言还是比较多的,记下来备用. 语言名 关键字 Bash bash CoffeeScript coffeescript C++ cpp C# cs CSS css Di ...
- 使用 VSCode 开发调试 STM32 单片机尝试
使用 VSCode 开发调试 STM32 单片机尝试 本文记录基于 Windows + DAP-Link 开发 STM32F103C8T6 的实践过程,其他操作系统或芯片应该也只是大同小异的问题. 注 ...
- Ubuntu x86-64汇编(5) 控制指令
控制指令 Control Instructions 汇编的控制指令主要包含标签, 无条件跳转和有条件跳转几种 标签 Label 标签用于标记跳转的目的, 必须以字母开头, 后面跟着字母, 数字和下划线 ...
- 汇编入门学习笔记 (七)—— dp,div,dup
疯狂的暑假学习之 汇编入门学习笔记 (七)-- dp.div.dup 參考: <汇编语言> 王爽 第8章 1. bx.si.di.和 bp 8086CPU仅仅有4个寄存器能够用 &qu ...
- Swift系列七 - 汇编分析值类型
通过汇编分下值类型的本质. 一.值类型 值类型赋值给var,let或者给参数传参,是直接将所有内容拷贝一份.类似于对文件进行复制粘贴操作,产生了全新的文件副本,属于深拷贝(deep copy). 示例 ...
随机推荐
- 2022-08-25:以下go语言代码输出什么?A:1 0;B:1 2;C:不能编译;D:0 0。 package main import “fmt“ func named() (n, _ int
2022-08-25:以下go语言代码输出什么?A:1 0:B:1 2:C:不能编译:D:0 0. package main import "fmt" func named() ( ...
- APRIL 2022-Explanation-Aware Experience Replay in Rule-Dense Environments
I. INTRODUCTION 解释是人类智能的关键机制,这种机制有可能提高RL代理在复杂环境中的表现 实现这一目标的一个核心设计挑战是将解释集成到计算表示中.即使在最小的规则集变化下,将规则集(或部 ...
- lec-5-Policy Gradients
直接策略微分 Goal: idea:求最大值:直接求导 tip:利用log导数等式进行变换 具体推导: 理解策略梯度 假定开始policy服从高斯分布,采样得到回报,计算梯度,根据reward增加动作 ...
- RESTful API 简介
RESTful API 简介 想必使用过 PHP.JSP 这一类服务器动态页面技术的程序员应该都还记得,在使用这种传统的动态页面架构构建应用程序的时候,用于描述用户界面的 HTML 页面通常都是在服务 ...
- Android string.xml与Excel的互相转换
Notice 使用以下脚本需要安装 openpyxl 和 lxml 两个库. string.xml转成Excel文件 """ 将 Android string.xml 文 ...
- gateway异常:DefaultDataBuffer cannot be cast to org.springframework.core.io.buffer.NettyDataBuffer
启动gateway后 出现java.lang.ClassCastException: org.springframework.core.io.buffer.DefaultDataBufferFacto ...
- 闺蜜机 StanbyME 产品随想
今天媳妇告诉我,现在小度这边推出一款叫 "闺蜜机"的可用移动的IPAD设备,我点开链接一看,就感觉兴趣不大,不就是一款把屏幕做的更大些的IPAD了吗? 有哪些更多创新呢?为什么会需 ...
- rabbitmq安装部署和常用命令
python操作rabbitmq rabbitmq实现可以使用java或者springboot的封装方法,自己创建实现,也可以使用中间件实现,相对于自建,使用rabbitmq应用场景及使用更系统安全. ...
- 从Kafka中学习高性能系统如何设计
1 前言 相信各位小伙伴之前或多或少接触过消息队列,比较知名的包含Rocket MQ和Kafka,在京东内部使用的是自研的消息中间件JMQ,从JMQ2升级到JMQ4的也是带来了性能上的明显提升,并且J ...
- Spring Boot 整合组件套路
自动配置类 Spring Boot 在整合任何一个组件的时候都会先添加一个依赖 starter,比如整合 MybatisPlus 有一个 mybatis-plus-boot-starter,如下: & ...