有关avr单片机的问题
在avr单片机中,对io操作,若将A的引脚设置为DDRA=0x00,PORTA=0xff与DDRA=0x00,PORTA=0x00,有什么区别么?...
在avr单片机中,对io操作,若将A的引脚设置为DDRA=0x00,PORTA=0xff与DDRA=0x00,PORTA=0x00,有什么区别么?
展开
展开全部
楼上那位,你说得不精确
若将A的引脚设置为DDRA=0x00,PORTA=0xff,是启动了单片机IO内部的上拉电阻,相当于普通的51单片机P0口接了个上拉电阻一样,这时候,IO引脚上是明确的高电平。
而DDRA=0x00,PORTA=0x00,是关闭了单片机内部的上拉电阻,相当于普通51单片机的P0口悬空,没有接上拉电阻,这个时候,其实你用万用表量,IO引脚上是没有电压存在的,但是不是低电平,是高阻态,相当于断路,这与低电平是两码事,而这个时候,你读PINA的值,如果在高干扰环境下,数值是不确定的,因为IO容易受到干扰。
一般来说,我们用来检测按键的时候,要将A的引脚设置为DDRA=0x00,PORTA=0xff,即内部启动个上拉电阻。
如果我们是用AD功能,是不启动上拉电阻的。
若将A的引脚设置为DDRA=0x00,PORTA=0xff,是启动了单片机IO内部的上拉电阻,相当于普通的51单片机P0口接了个上拉电阻一样,这时候,IO引脚上是明确的高电平。
而DDRA=0x00,PORTA=0x00,是关闭了单片机内部的上拉电阻,相当于普通51单片机的P0口悬空,没有接上拉电阻,这个时候,其实你用万用表量,IO引脚上是没有电压存在的,但是不是低电平,是高阻态,相当于断路,这与低电平是两码事,而这个时候,你读PINA的值,如果在高干扰环境下,数值是不确定的,因为IO容易受到干扰。
一般来说,我们用来检测按键的时候,要将A的引脚设置为DDRA=0x00,PORTA=0xff,即内部启动个上拉电阻。
如果我们是用AD功能,是不启动上拉电阻的。
追问
但什么时候应该设置上拉电阻,什么时候不应该呢?能举个例子并解释详细点么?我初学avr单片机,没学数电模电
追答
一般来说,如果一个引脚被用做AD转换输入的引脚时,也就是说,在测量模拟量的时候,是不可以加上拉的,除此以外的其他的情况,都可以加上拉,因为AVR单片机内部是弱上拉,所以除了影响AD采集之外,其他情况的影响可以忽略
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询