搜索
bottom↓
回复: 1

好久都不见马老师了.我也对以下问题比较想知道.链接如下

[复制链接]

出0入0汤圆

发表于 2010-3-24 11:31:11 | 显示全部楼层 |阅读模式
好久都不见马老师了.

   我也对以下问题比较想知道.链接如下:

  http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3900558&bbs_page_no=1&search_mode=1&search_text=atmega128单片机I0口的操作,突然我觉得基本对单片机一窍不通了?跪求解答!&bbs_id=1003


【楼主位】 yixiao301

    突然我觉得基本对单片机一窍不通了?
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) 。电平才能正常呢?

   一下子提了这么多问题?我也觉得惊讶。谢谢各位给小弟以指导!
    不胜感谢!

以下蓝色文字由站长:armok 于:2010-03-24,11:34:22 加入。
你的原标题:“<font color=black>马老师终于出山了
” 不合符规定。请更改成能说明帖子大意的标题
试想一下,如果本论坛的帖子标题清一色的‘帮助!’,‘ADC求救!’等笼统的标题,你在阅读的过程中会造成许多麻烦。
所以本论坛规定:一定要起一个能说明帖子大意的标题。不允许“关于 AVR 的 ADC 使用!”这种笼统标题。作为标题,必须说明清楚:
 ①你是在请教问题,还是在介绍有关的知识?
 ②ADC的问题有许多,你是想说那方面的内容?
注意以上两点,标题应该改成如:“请教:ADC 可以不使用中断吗?”。
起一个能说明帖子大意的标题,除了减轻我们的帖子分类整理工作,还方便其它人阅读,节省大家的时间。
注:使用合格的标题,对你来说只是举手之劳,但却会为我们的管理工作提供很大的便利。谢谢你的支持。

出0入0汤圆

发表于 2010-3-25 00:05:28 | 显示全部楼层
我先提示你几个基本的概念和芯片I/O的开始状态(手册上有),你自己分析。

1。只有当I/O为输入方式,才有高阻和内部上拉有效的情况。
2。上电后,I/O为输入高阻态(DDR=0,PORT=0)
3。M128上电后,RD,WR实际为通用I/O,如果不外部扩展RAM,他们就作为普通I/O处理。
4。要改变I/O 在( 高阻态) 三态({DDxn, PORTxn} = 0b00) 与输出高电平({DDxn, PORTxn} = 0b11) 两种  
   状态之间进行切换时,必须改变2个寄存器的值,需要2条指令。那么执行第1条后,就是中间状态(即两种模式必然会有一个发生)。

5。至于I/O的第2功能设置,需要看手册。有的会自己根据第2功能变化,有的还需要进行配置。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-2 08:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表