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; 展开
PORTB=0xFF;
DDRB=0xFF;
之后进行读B端口的引脚的程序如下面的代码,这样写对吗??
DDRC=0x00;
delay(2);
PORTB=0x00;
value=PINB; 展开
3个回答
推荐于2018-04-14 · 知道合伙人教育行家
hi漫海feabd5e
知道合伙人教育行家
向TA提问 私信TA
知道合伙人教育行家
采纳数:6749
获赞数:129943
本科学历,毕业后从事设计工作;现任标码石材科技有限公司设计员。能决绝结构设计方面中等难度问题。
向TA提问 私信TA
关注
展开全部
首先需要将单片机引脚设置为输入,既然你有外部上拉,所以不用使能内部上拉。但是AVR单片机如果输入不使能上拉电阻设置为的端口就成了高阻态了,所以还是要使能上拉电阻的,而且即使使能上拉电阻也没问题的。然后直接读取引脚的值就行了。代码如下:
//-------------------------------------------------
unsigned char temp; //定义保存的变量
DDRA=0x00; //将端口A设置为输入
PORTA=0xff; //使能上拉电阻
temp=PINA; //读取端口A的状态
然后在程序例可以对读取的temp逐位处理你的开关量就行了
//-------------------------------------------------
unsigned char temp; //定义保存的变量
DDRA=0x00; //将端口A设置为输入
PORTA=0xff; //使能上拉电阻
temp=PINA; //读取端口A的状态
然后在程序例可以对读取的temp逐位处理你的开关量就行了
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样子写时可以的。
当DDR寄存器的位设置为0时,对应的端口为输入状态,转为输入状态后,PORT寄存器的位是1时,是使能弱上拉,反之相当于悬空;所以作按键检测时,可以使能PORT寄存器为1,省一个外部的上拉电阻(同51的单片机)。
当DDR寄存器的位设置为0时,对应的端口为输入状态,转为输入状态后,PORT寄存器的位是1时,是使能弱上拉,反之相当于悬空;所以作按键检测时,可以使能PORT寄存器为1,省一个外部的上拉电阻(同51的单片机)。
追问
我调试时为什么PORTC=0x00;时才能读引脚,而PORTB=0xFF;没有现象??
追答
怎么会没有现象呢,效果不一样吧,你是否要检测按键,且是高电平有效,若这样的话,PORTB = 0XFF;的确是没有效果的,因为已经上拉为高电平,应该接成检测低电平有效。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询