AVR中如何读引脚?

初始化时设置成PORTB=0xFF;DDRB=0xFF;之后进行读B端口的引脚的程序如下面的代码,这样写对吗??DDRC=0x00;delay(2);PORTB=0x00... 初始化时设置成
PORTB=0xFF;
DDRB=0xFF;
之后进行读B端口的引脚的程序如下面的代码,这样写对吗??
DDRC=0x00;
delay(2);
PORTB=0x00;
value=PINB;
展开
 我来答
gdxizhilang
2013-11-08 · TA获得超过3333个赞
知道小有建树答主
回答量:802
采纳率:50%
帮助的人:302万
展开全部
这样是可以的,但使能上拉要设置SFRIO的PUD为0,;
另外,您用的是AVR那一款,要注意IO口的共用问题,不要有其他电路连接到上面,会相互有影响,如果烧录接口则要加开关,另外在熔丝位中相关IO的设置也要注意,如JTAG的接口使用时要将JTAG功能关闭等等。
hi漫海feabd5e
推荐于2018-04-14 · 知道合伙人教育行家
hi漫海feabd5e
知道合伙人教育行家
采纳数:6749 获赞数:129943
本科学历,毕业后从事设计工作;现任标码石材科技有限公司设计员。能决绝结构设计方面中等难度问题。

向TA提问 私信TA
展开全部
  首先需要将单片机引脚设置为输入,既然你有外部上拉,所以不用使能内部上拉。但是AVR单片机如果输入不使能上拉电阻设置为的端口就成了高阻态了,所以还是要使能上拉电阻的,而且即使使能上拉电阻也没问题的。然后直接读取引脚的值就行了。代码如下:
  //-------------------------------------------------
  unsigned char temp; //定义保存的变量
  DDRA=0x00; //将端口A设置为输入
  PORTA=0xff; //使能上拉电阻
  temp=PINA; //读取端口A的状态

  然后在程序例可以对读取的temp逐位处理你的开关量就行了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
伽罗林克
2013-11-06 · TA获得超过2633个赞
知道小有建树答主
回答量:931
采纳率:0%
帮助的人:1186万
展开全部
这样子写时可以的。
当DDR寄存器的位设置为0时,对应的端口为输入状态,转为输入状态后,PORT寄存器的位是1时,是使能弱上拉,反之相当于悬空;所以作按键检测时,可以使能PORT寄存器为1,省一个外部的上拉电阻(同51的单片机)。
追问
我调试时为什么PORTC=0x00;时才能读引脚,而PORTB=0xFF;没有现象??
追答
怎么会没有现象呢,效果不一样吧,你是否要检测按键,且是高电平有效,若这样的话,PORTB = 0XFF;的确是没有效果的,因为已经上拉为高电平,应该接成检测低电平有效。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式