专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

AVR单片机I/O端口应用

作者:羊村长   来源:羊村长   点击数:  更新时间:2014年08月03日   【字体:

1、端口寄存器及配置

 

   作为通用数字I/O使用时,每个引脚都具有3个寄存器位:DDRxn、PORTxn、PINxn 

                 

2、配置实例

   (1)PA配置为输出

       DDRA = 0XFF;

       PORTA = 0X03;   //PA输出值为0x03

   (2)PA口配置为不带上拉的输入

       DDRA = 0X00;

       PORTA = 0X00;

       i = PINA;            //将PA口输入的值赋给变量i

   (3)PB口配置为带上拉的输入

       DDRB = 0X00;

       PORTB = 0XFF;

       i = PINB;           //将PB口输入的值赋给变量i

3、I/O口的位操作

       由于ICC AVR中并不支持AVR单片机的直接位操作,所以我们并不能像在Keil中那样进行位定义,然后直接进行位操作,在ICC AVR中进行位操作需要一个非常重要的指令BIT(X)—使用BIT(X)指令需要包含头文件即#include。所谓的BIT(X)指令就是左移指令,BIT(X)表示参数“1”左移X位,如BIT(2)表示“1”左移2位。

   (1)PA口最低位输出0,其余位不变

       DDRA = DDRA | BIT(0);     //只有最低位输出,其余位保持原有状态不变

       PORTA = PORTA & (~BIT(0));   //最低位输出低电平,其余位不变

为达到优化代码及方便阅读的目的,上述代码亦可变为

       DDRA |= BIT(0);

       PORTA &= (~BIT(0));

   (2)PA口最低位输出高电平,其余位不变

       DDRA |= BIT(0);

       PORTA |= BIT(0);

   (3)PA口最低位输出低电平,最高位输出高电平,其余位保持原有状态不变

         DDRA |= BIT(0) | BIT(7);

         PORTA &= ~BIT(0);

         PORTA &= ~BIT(7);

关闭窗口

相关文章