ATMEGA16 IOport相关汇总
ATMEGA16 IOport总的共同所有权有关的寄存器有三个DDRX、PORTX和PINX。
假设你想IO动作基本上与这三个寄存器操纵。DDRX也被称为数据方向寄存器、PORTX所谓数据寄存器、PINX叫port输入引脚。
DDRX的作用:
当DDRX = 0时。表示的是某port的引脚为输入;当DDRX = 0xff时表示某port的引脚为输出。
引脚的状态:输入或者输出是依据什么定义的呢?
是依据高低电平是输入单片机还是从单片机输出。输入是指:不属于单片机的外部的电平输入到单片机;输出是指:单片机的电平输出到单片机的外部。
PORTX的作用:
当DDRX = 0时,若把PORTX置位则表示启动了上拉电阻;若PORTX为0,则不启动上拉电阻。当DDRX = 0xff时,若把PORTX置位则表示输出高电平;若PORTX为0,则输出低电平。
PINX的作用:
PINX寄存器的值与DDRX寄存器的值(输入还是输出)没有不论什么关系;仅仅与port引脚上面的值有关系(PORTX)。假设PORTXn = 0xdd,则不管DDTX取什么样的值。其PINX都为0Xdd。
#include <avr/io.h>
#include <util/delay.h> int main(void)
{
uint8_t temp;
DDRC = 0xff;
PORTC = 0xff; DDRA = 0;
PORTA = 0xdd; asm("nop");//汇编指令nop,即空操作。其运行时间为一个时钟周期
PORTC = PINA; return 0;
}
当中不管DDRA的值是0还是0xff。结果都是一样的。
因此也能够得出一个结论:PINX寄存器里的值是能够依照自己的意愿设定的。原因是单片机能捕捉port的电平,并置位PINX寄存器。
初始值问题:
单片机刚上电后。port上的寄存器的初始值是什么?
上电后,默认的初始值为0。即DDRX= 0;PORTX = 0。PINX = 0;
#include <avr/io.h>
#include <util/delay.h>
//#include<intrins.h> int main(void)
{
uint8_t temp;
DDRC = 0xff;
PORTC = 0xff; //DDRA = 0;
//PORTA = 0xdd; asm("nop");//汇编指令nop,即空操作。其运行时间为一个时钟周期
//_nop();
PORTC = PINA; return 0;
}
初始化方法1:
PORTA=0xFF; //内部上拉,高电平
DDRA=0xFF; //输出高电平---------灯一直是灭的
初始化方法2:
DDRA=0xFF; //输出低电平--------灯被错误点亮了
PORTA=0xFF; //输出高电平--------立即被熄灭了,时间非常短(1个指令不到uS时间),灯闪了一下,眼睛无法察觉
版权声明:本文博客原创文章。博客,未经同意,不得转载。
ATMEGA16 IOport相关汇总的更多相关文章
- UML相关汇总
类图 类图是UML最常用的图之一,用于描述面向对象程序设计中,类.接口等结构之间的关系,如图 类图中涉及到以下几种类型的对象 UMLClass 如图中Class1,代表类 UMLOperation 如 ...
- Android X 相关汇总
一.说明 官方原文如下: We hope the division between android.* and androidx.* makes it more obvious which APIs ...
- Sonar相关汇总
http://www.sonarqube.org/downloads/ http://docs.sonarqube.org/display/SONAR/Documentation/ 公司前段时间推动项 ...
- Windows远程协助相关汇总
正常情况下要勾选一个 复选框 ,再确保三个服务启动 https://jingyan.baidu.com/article/ca00d56c4c62bce99febcf11.html https://ji ...
- Spring研磨分析、Quartz任务调度、Hibernate深入浅出系列文章笔记汇总
Spring研磨分析.Quartz任务调度.Hibernate深入浅出系列文章笔记汇总 置顶2017年04月27日 10:46:45 阅读数:1213 这系列文章主要是对Spring.Quartz.H ...
- 高性能MySQL --- 读书笔记(2) - 2016/8/2
第1章 MySQL架构 MySQL架构与其他数据库服务器大不相同,这使它能够适应广泛的应用.MySQL足够灵活,能适应高要求架构.例如Web应用,同时还适用于嵌入式应用.数据仓库.内容索引和分发软件. ...
- 11、js 数组详细操作方法及解析合集
js 数组详细操作方法及解析合集 前言 在开发中,数组的使用场景非常多,平日中也涉及到很多数组的api/相关操作,一直也没有对这块内容进行一块整理总结,很多时候就算用过几次这个api,在开发中也很容易 ...
- Lodop生成文档式模版
Lodop模版有两种方法,一种是传统的JS语句,可以用JS方法里的eval来执行,一种是文档式模版,是特殊格式的base64码,此篇博文介绍文档式模版的生成方法.两种模版都可以存入一下地方进行调用,比 ...
- Lodop获取全部JS代码,传统JS模版的生成
Lodop模版有两种方法,一种是传统的JS语句,可以用JS方法里的eval来执行,一种是文档式模版,是特殊格式的base64码,此篇博文介绍传统JS模版的生成方法.两种模版都可以存入一下地方进行调用, ...
随机推荐
- SDUT 1265-马停下过河卒(DFS)
马拦过河卒 nid=24#time" title="C.C++.go.haskell.lua.pascal Time Limit3000ms Memory Limit 65536K ...
- 站长VS微商 你选择哪个?
近期,站长圈里盛行起了一阵面膜风.我刷空间和微信朋友圈的时候,常常看到一些朋友在卖面膜,不光女童鞋在卖,男屌丝站长也在卖. 不光普通人在卖.行业圈的自媒体明星大佬也在卖. 我们暂且称卖面膜的童鞋为微商 ...
- Xenomai 3 和 PREEMPT_RT 有哪些优势相比,
Q: 我可以在我的开发板PREEMPT_RT直接在内核环境中执行POSIX应用, 使用Xenomai3 这是什么原因它? A:假设你的应用程序已经完全是POSIX,而且性能也满足,则,而且也没有理由去 ...
- Building Redis for use on Cygwin(转)
This is the second time I have installed Redis for use on Cygwin in the last several months. It seem ...
- 写作Openwrt固件
启动tftp软体.并设置文件夹的固件文件(Current Dircctory)和serverIP(Service interface).server指PC机.图.: ...
- ASP.NET MVC应用程序展示RDLC报表
原文:ASP.NET MVC应用程序展示RDLC报表 学习ASP.NET MVC这样久,在学习,练习与应用过程中,觉得很多知识与以前的ASP.NET多有区别,但是实现操作起来,细处又有许多相近的地方. ...
- In Oracle 11g, how to change the order of the results of a sql without “order by”?(转)
oracle 11g 当sql语句中不加order by的时候,好像是按rowid的顺序返回结果的.我也看过一些相关的文档,oracle的官方意思就是不加order by,就不保证输出的顺序. 那么, ...
- Linux:闪光的宝石,智慧(下一个)
2005年4月7日.Linus Torvalds公布了一款新型通用工具软件包,叫做"Git"(the Git source code management system).&quo ...
- Intel 80x86 寻址模式
随着进一步的研究,我们会逐渐接触到你的电脑配置模式的内在联系,和设计原则.在这些,解决计算机是一个非常重要的概念,我们需要很好地理解了什么. 一.预赛: (1)作数 在接触寻址方式之前,我们还要先了解 ...
- DynamicReports
try { response.setCharacterEncoding("UTF-8"); response.setHeader("Content-disposition ...