ATMEGA16 IO端口相关总结

2020-08-02来源: eefocus关键字:ATMEGA16  IO端口  寄存器

ATMEGA16 IO端口相关的寄存器总共有三个DDRX、PORTX和PINX。如果要对IO操作基本上就是对这三个寄存器进行相关的操纵。DDRX也称为数据方向寄存器、PORTX称为数据寄存器、PINX称为端口输入引脚。


DDRX的作用:

当DDRX = 0时,表示的是某端口的引脚为输入;当DDRX = 0xff时表示某端口的引脚为输出。


引脚的状态:输入或者输出是根据什么定义的呢?


是根据高低电平是输入单片机还是从单片机输出。输入是指:不属于单片机的外部的电平输入到单片机;输出是指:单片机的电平输出到单片机的外部。


PORTX的作用:

当DDRX = 0时,若把PORTX置位则表示启动了上拉电阻;若PORTX为0,则不启动上拉电阻。当DDRX = 0xff时,若把PORTX置位则表示输出高电平;若PORTX为0,则输出低电平。


PINX的作用:

PINX寄存器的值与DDRX寄存器的值(输入还是输出)没有任何关系;只与端口引脚上面的值有关系(PORTX)。如果PORTXn = 0xdd,则无论DDTX取什么样的值,其PINX都为0Xdd。

#include #include int main(void)
{
   uint8_t temp;
   DDRC = 0xff;
   PORTC = 0xff;

   DDRA = 0;
   PORTA = 0xdd;

   asm("nop");//汇编指令nop,即空操作,其执行时间为一个时钟周期
   PORTC = PINA;

    return 0;
}

其中无论DDRA的值是0还是0xff,结果都是一样的。

bubuko.com,布布扣

因此也可以得出一个结论:PINX寄存器里的值是可以按照自己的意愿设定的。原因是单片机能捕捉端口的电平,并置位PINX寄存器。


初始值问题:

单片机刚上电后,端口上的寄存器的初始值是什么?

上电后,默认的初始值为0,即DDRX= 0;PORTX = 0;PINX =  0;

#include #include //#includeint main(void)
{
   uint8_t temp;
   DDRC = 0xff;
   PORTC = 0xff;

   //DDRA = 0;
   //PORTA = 0xdd;

   asm("nop");//汇编指令nop,即空操作,其执行时间为一个时钟周期
   //_nop();
   PORTC = PINA;

    return 0;
}

bubuko.com,布布扣

初始化方法1:
      PORTA=0xFF;    //内部上拉,高电平

     DDRA=0xFF;     //输出高电平---------灯一直是灭的

  初始化方法2:

      DDRA=0xFF;     //输出低电平--------灯被错误点亮了

     PORTA=0xFF;    //输出高电平--------马上被熄灭了,时间很短(1个指令不到uS时间),灯闪了一下,眼睛无法察觉


关键字:ATMEGA16  IO端口  寄存器 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic504989.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:IAR for AVR 报array is too large错误 【已解决】
下一篇:最后一页

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

ATmega16读取RTC和ADC显示在LCD1602,同时串口输出
介绍mikroPascal for AVR 写的ATmega16读取RTC和ADC显示在LCD1602,同时串口输出,并写入EEPROM的程序。附带仿真文件。mikro编译器分为c,basic,pascal三种,除了语法有所区别外,使用和功能基本一样。有8051,AVR,PIC,ARM等版本,界面和语法都一样。学会一种芯片花很少时间就可以转到另一种芯片。自带常用库,帮助文件中例子很多,基本不需要其他文档就可以开始学习了。仿真原理图如下单片机源程序如下:program RTC_Read;var seconds, minutes, hours, day, month, year : byte;   
发表于 2020-07-12
<font color='red'>ATmega16</font>读取RTC和ADC显示在LCD1602,同时串口输出
ATMEGA16单片机usart通信(主从多机通信)proteus仿真与源码
use onlyCompany :Comments:Chip type               : ATmega16Program type            : ApplicationAVR Core Clock frequency: 4.000000 MHzMemory model            : SmallExternal RAM size       : 0Data
发表于 2020-07-12
<font color='red'>ATMEGA16</font>单片机usart通信(主从多机通信)proteus仿真与源码
AVR LCD12864 程序
:(1)编译烧写该程序到ATmega16,断开电源(2)若使用ISP接口烧写程序,请断开ISP烧写器(由于本示例程序使用的是ATmega16的SPI接口,刚好是ISP烧写器的烧写口)(3)将LCD12864_ST7920插入主板的Lcd12864插槽(4)使用连接线将LCD12864_ST7920的以下引针接口连接到MCU:(由于SMK1632已经做好了大部分的硬件连接,您只需连接以下数据端口)LCD12864_ST7920 ATmega164.RS(CS) -------- VCC5.R/W(SID) -------- MOSI/PB56.E(SCLK) -------- SCK/PB715.PSB -------- GND(5)上电
发表于 2020-06-27
Atmega328p-pu与Atmega16A-PU区别
Atmega328p-pu(Arduino-URO主控芯片)和Atmega16A-PU有什么区别 Atmega328p-pu和Atmega16最大的区别是它们的FLSAH容量不同,前者为32KB,后者为16KB,外部中断数也不一样,其余的基本上相同,ATMEGA系列的单片机主要都是FLASH容量不同,以及增加一些功能模块,本质上都是相同的,汇编指令基本上一样,没有什么实质上的区别。都是40pin DIP引脚封装而且可以通过对Atmega16,烧写成Arduino可编译的单片机见下面链接用ATMEGA16/A/L和ATMEGA8/A单片机DIY移植ARDUINOATMEGA16A-PU(AVR单片机2007年的时候比较热门
发表于 2020-06-20
AVR单片机ATMEGA16编译软件ICCAVR的使用技巧与应用示例
此处注意,要以.C结尾,表明是一个C程序文件声明,然后点保存。5 可以看到默认的文件名Untitled-1被保存成我们输入的testpro0000.c,在界面右边目录树上鼠标右键 选择Add file(s),将此程序文件添加到第一步新建的项目test中去。6 在弹出的窗口中 找到我们刚才建的程序文件testpro0000.c,点击打开7 如下图,该.c文件已经在项目的目录下了,准备工作结束8 接下来说一下重点有用的一个功能:应用生成器,就是下图中像扫把一个的小图标9 不要犹豫,点它,弹出一个向导窗口,在CPU选项里选择我们用的型号,例如Target CPU,选M16,即ATMEGA16,Xtal speed 即晶振频率,选择你所用
发表于 2020-06-20
AVR单片机<font color='red'>ATMEGA16</font>编译软件ICCAVR的使用技巧与应用示例
小白的MSP432学习之路(1)
是专为超低功耗模式而优化的低频时钟,适用于低频和低功耗模式。需特别提出的是,ACLK和BCLK均可在从128KHz到10KHz范围内的任意环境下运行。可以用 DCO 来驱动 MCLK,也可以用 MDOSC 来驱动 MCLK,以此类推。学习(一)配置GPIO端口-挂起看门狗。经过我的对比,我发现这条程序在开发的时候基本上可以无脑写上去了。-GPIO设置成输出端口。从函数名,可以看出来,这段代码的作用是选择port和pin作为输出口。其中,port可选择的范围是P1-P11加上PJ,一共是12个端口,pin的范围从0到15.根据库函数中的列表,选择的时候对应的数值如下。(这部分在CCS中的GPIO.h文件中可以找到)-将对应的接口设置
发表于 2020-04-18
小白的MSP432学习之路(1)
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved