atmega128单片机I0口的操作,突然我觉得基本对单片机一窍不通了?跪求解答!
突然我觉得基本对单片机一窍不通了?atmega128单片机I0口的操作
有几个疑问:
1.上电时,仪器开始执行程序,初始化IO口时PORTxn,DDRxn顺序问题,
技术资料上
/* 定义上拉电阻和设置高电平输出*/
/* 为端口引脚定义方向*/
PORTB = (1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0);
DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0);
技术资料上还写:当引脚配置为输入时,若PORTxn 为"1“,上拉电阻将使能。
使能上拉电阻,是不是一定要先定义PORxn为高,再使能DDRBxn为低时,才能启动上拉电阻???
以前我编程时都是
DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0);
PORTB = (1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0);
可以吗?
2. 单片机IO口用做第二功能时,开机端口初始化的时候,如何定义其方向?
如:atmega128 ,uart1,我定义,我把TXD定义成输出,RXD定义成输入,电平都设置为0;
DDRD = (1<<TXD1)
PORTD = 0X00;
还是:全部设置成高阻态,即:DDRD = 0X00; PORTD = 0X00;??
3.单片机没有使用的IO引脚如何处理可以抗干扰?
<1>,设置成输出?
<2>,设置成输入,并使能上拉电阻?
PORTB = (1<<PB1);
DDRB = 0X00;
//SFIOR &= 0xfb; //允许上拉电阻PUD置零
<3>,外部下拉电阻或上拉电阻(10k)。
端口如何设置呢?端口定义成输入还是输出好呢?
例:定义成高阻状态,
PORTB = 0x00;
DDRB = 0X00;
<4>,atmega128的1脚(PEN),如何设置呢?
不要接?还是直接接上+5V电源(不加上拉电阻)?
<5>,atmega128没有使用外部ROM,所以没用到RD,WR,脚位如何配置呢?
直接接上+5V电平,或者上拉10k电阻?或者不用管?
4.看技术资料,
在( 高阻态) 三态({DDxn, PORTxn} = 0b00) 输出高电平({DDxn, PORTxn} = 0b11) 两种
状态之间进行切换时,上拉电阻使能({DDxn, PORTxn} = 0b01) 或输出低电平({DDxn,
PORTxn} = 0b10) 这两种模式必然会有一个发生。
这句话怎么理解呢?
是不是在由三态({DDxn, PORTxn} = 0b00)
切换到 输出高电平({DDxn, PORTxn} = 0b11)
在编程时,是否两者切换时,要加入一步:上拉电阻使能({DDxn, PORTxn} = 0b01) 或输出低电平({DDxn,
PORTxn} = 0b10) 。电平才能正常呢?
一下子提了这么多问题?我也觉得惊讶。谢谢各位给小弟以指导!
不胜感谢! 这些问题我以前都想过,小弟不知道理解的对不对,高手莫拍砖。
问题1:
以前我也是
DDRB = (1<<DDB3)|(1<<DDB2)|(1<<DDB1)|(1<<DDB0);
PORTB = (1<<PB7)|(1<<PB6)|(1<<PB1)|(1<<PB0);
没错过啊,记得阿莫有一篇帖子讨论过,改变输入输出方向之间是需要时间的。所以后来我一直都改为手册上的写法。
问题2:单片机IO口用做第二功能时,我一直都是不管该端口,使用第二功能时候AVR一般会自动设置该功能,比如:
MOSI: SPI 通道的主机数据输出,从机数据输入端口。工作于从机模式时,不论 DDB5 设置如何,这个引脚都将设置为输入。
SS: 从机选择输入。工作于从机模式时,不论 DDB4 设置如何,这个引脚都将设置为输入。
如果你不放心,可以自己设置为输入或者输出。
问题3:这个嘛,我只能告诉你我的做法,不用的管脚我都会给它一个确定的电平,高低要看实际了,
余下问题。。。。。。 这里有讲:http://www.ourdev.cn/bbs/bbs_content.jspbbs_sn=1133377&bbs_page_no=1&search_mode=3&search_text=armok&bbs_id=1000 谢谢cyr_hongfeng,回复的真快。谢谢了。
问题3:这个嘛,我只能告诉你我的做法,不用的管脚我都会给它一个确定的电平,高低要看实际了,
我还没有明白!
还有
http://www.ourdev.cn/bbs/bbs_content.jspbbs_sn=1133377&bbs_page_no=1&search_mode=3&search_text=armok&bbs_id=1000
怎么打不开啊? 我也想打开那个网页。。
页:
[1]