AVR单片机方向数据寄存器(DDR)与数据寄存器的关系
来源:互联网 发布:淘宝消费报告数据分析 编辑:程序博客网 时间:2024/06/08 11:58
一、什么是端口对应管脚地址:
在AVR学习中,会遇到类似于LED闪烁灯闪烁灯示例,其中我们可以看到诸如如下示例:
#include<avr/io.h>unsigned char led[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}int main(){ DDRC=0xFF;//设置C口为输出 PORTC=led[0];//设置电平}
这里可以看到,DDR已经将C口设置为输出状态,同时使用PORT寄存器将0xfe管脚设置为高电平。
其中PORT寄存器即数据寄存器,是通过AVR的IO操作将数据输出至某一管脚,但其寄存器是配合DDR寄存器同时作用的,若DDR设置为输出状态,则PORT是相应的会设置为1,即高电平输出,反之会设置为0,即低电平输出。
二、寄存器怎样对应地址:
首先这里可以理解一下DDR寄存器如何设置方向的:
DRC其对应了PC7~PC0 8个引脚,若我们在程序中将DDRC设置为0xFF时,则表示将C端口所对应的8个引脚均被设置为输出,若将DDRC设置为0x00时则将其设置为输入。
若我们将DDRC设置为0xF0时,则表示将C端口对应的低4位的4个引脚(PC0~PC3)设置为输入,高4位的4个引脚(PC4~PC7)设置为输出,若将DDRC设置为0x0F则反之。
这里可以得出,例如在PC7~PC0的8个管脚中对应二进制位数如下:
其中前4位代表了高4位的端口,后四位则代表了低4位的端口。
同时在AVR中,PORT与DDR是相关联的两个寄存器,每个管脚的高低电平取决于DDR与PORT关联,其关系如下:
x代表端口号(A、B、C、D、E、F、G)
n代表个端口号的位号(0~7)
所以由此得知,若DDR设置端口为输出状态时,将该低电平地址赋值给PORT,则对应端口号会设置成指定的高低电平。
三、位运算:
趁计算管脚电平位,顺便复习一下位运算的方式方法:
阅读全文
0 0
- AVR单片机方向数据寄存器(DDR)与数据寄存器的关系
- 在AVR单片机中关于数据方向寄存器(DDR)的注解与DDRA、DDRB、DDRC、DDRD的作用与使用
- AVR单片机寄存器DDR,PORT和PIN之间对应关系(摘)
- 单片机上的寄存器
- 通用寄存器:地址指针寄存器,数据寄存器,变址寄存器
- AVR输入与输出寄存器之间的影响
- MCS-51单片机的定时器/计数器概念 寄存器关系图
- 单片机寄存器
- 单片机寄存器
- 8086数据寄存器
- SBUF数据缓冲寄存器
- 8086数据寄存器介绍
- 单片机寄存器组注意重复使用原数据可能被覆盖危险(C51编程也注意)
- 51单片机的特殊寄存器
- S12单片机的寄存器配置
- STM32定时器的预装载寄存器与影子寄存器之间的关系
- STM32定时器的预装载寄存器与影子寄存器之间的关系
- STM32定时器的预装载寄存器与影子寄存器之间的关系
- 编程题目的简单练习
- Java中类的加载顺序详解
- 使用spring-boot-starter-actuator,报错spring-boot-starter-actuator
- 深度学习利器: TensorFlow系统架构及高性能程序设计
- 转 OpenCV:remap()简单重映射
- AVR单片机方向数据寄存器(DDR)与数据寄存器的关系
- 非generic phy的引用计数为0
- minicom的移植
- Ultraedit打开中文乱码解决方案
- 各种基本的排序算法在Object-C实现
- Qt笔记 之 QListWidget控件的使用
- continue 和 return
- less
- css遇到的居中问题整理