您的位置:首页单片机AVR单片机
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

AVR单片机寄存器 DDRx PORTx PINx 与对应IO端口之间的关系(x代表某个端口,如A端口、B端口等)

[日期:2008-08-01 ] [来源:东哥单片机学习网 www.picavr.com 整理 作者:佚名] [字体: (投递新闻)
AVR单片机寄存器 DDRx PORTx PINx 与对应IO端口之间的关系(x代表某个端口,如A端口、B端口等)
下表以端口B的第2位PB2为例子加以说明,并且假设PB2为悬空状态
 
DDRB.2 PORTB.2 读取PINB.2的结果 引脚PB2的状态 
1 1 1 PB2推挽输出 1 
1 0 0 PB2推挽输出 0 
0 1 1 PB2弱上拉,可作输入 
0 0 × PB2高阻抗,可作输入 

 
读取PINB.2时,就是读取PB2引脚的实际电平,
如果PB2直接接VCC,那么任何时候读取PINB.2的结果都是1
如果PB2直接接GND,那么任何时候读取PINB.2的结果都是0
 
下面是一个标准C语言例子:
 
#include <mega48.h>     
unsigned char abc;       //定义一个变量
void main(void)          //主函数
{  
  DDRB  = 0b11110000;
  PORTB = 0b11001100;      
  while (1)              //主循环
  {     
    abc   = PINB;        //读取B端口的实际电平
  }  
}
 
如果整个B端口都是悬空的话,
那么abc的结果就是:0b110011**
如果B端口第7位接GND 、第0位接VCC 、其它位悬空,
那么abc的结果就是:0b010011*1 (PB7工作在“短路”状态)
其中“*”表示不确定,理想状态下可以看作0 
  
阅读:
录入:petta

推荐 】 【 打印
本文评论
      全部评论
发表评论


点评: 字数
姓名:
站长推荐