打印

请教一下avr的内部上拉

[复制链接]
3187|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huangqi412|  楼主 | 2007-4-17 11:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
int main() //
{
PORTA=0XFF;  //debug
DDRA=0X00;
PORTB=0X00; 

为什么运行到这里我查看到pina是0呢??内部上拉了应该是1才对吧。
这是个测试,没有加其他语句的。

相关帖子

沙发
zhiwei| | 2007-4-17 12:52 | 只看该作者

内部上拉是比较弱的

大概20~30k欧姆的样子,而且上升沿不陡,用示波器看的,如果你在那里带载的话可能会被拉下来。你可以引脚悬空,延时几个周期再检测,可能就好了。以上是我的经验。

使用特权

评论回复
板凳
huangqi412|  楼主 | 2007-4-17 12:59 | 只看该作者

avr端口疑问

测试如下
int main()  //debug  用的是m16
{
//DDRA=0XFF;//avrstudio仿真必须加这句,就是先设输出,然后上拉然后设输入才可以打开上拉
PORTA=0X0F; //上拉电阻
DDRA=0XF0;  //高4位输出用led测试,低4位输入用按键测试

while(1)
{
if((PINA&0X01)==0)//如果对应位是0 输出1 如果为1,输出0
PORTA|=(1<<4);
~~~~~~~~~~~~~~~~~~~~~~~~~~~

proteus中怎么做都是错误结果,pina读到一直是0
avrstudio中如果不在前面加一个ddra=0xff的话pina会一直为低,
硬件实验则不要加,很正常 只需要porta=0x0f和ddra=0xf0
请教高手们只是怎么回事呢,难道avrstudio有bug吗?

输入脚我是接的key,key另一端接地。

使用特权

评论回复
地板
huangqi412|  楼主 | 2007-4-17 13:04 | 只看该作者

不是延时问题

DDRA=0XF0;  //高4位输出用led测试,低4位输入用按键测试
后面加延时1ms再读也一样。

使用特权

评论回复
5
huangqi412|  楼主 | 2007-4-17 13:12 | 只看该作者

别沉了,请指点一下

使用特权

评论回复
6
huangqi412|  楼主 | 2007-4-17 19:10 | 只看该作者

有人可以解释一下不?谢谢

使用特权

评论回复
7
zhiwei| | 2007-4-17 19:29 | 只看该作者

自己仔细看看吧,我都用的好好的

我有一个IO口有输入、输出两个功能,口接串10k电阻接按键到地,做输入的按键都可以用的。

使用特权

评论回复
8
huangqi412|  楼主 | 2007-4-17 22:04 | 只看该作者

硬件电路没错,但是软件仿真错误,难道avrstudio有问题?

使用特权

评论回复
9
hotpower| | 2007-4-17 22:40 | 只看该作者

我一般不用任何仿真,因为我相信自己的书写习惯

|= (1 << xxx)

&= ~(1 << xxx)

使用特权

评论回复
10
jasonell| | 2007-4-18 09:23 | 只看该作者

avr studio 明说了, i/o 口上拉不能仿真

过于相信仿真,又不仔细看文档。

使用特权

评论回复
11
huangqi412|  楼主 | 2007-4-18 22:12 | 只看该作者

哦,这个倒是没看过,但不知道为什么proteus也错误。

使用特权

评论回复
12
高建明| | 2007-4-19 18:22 | 只看该作者

RE

以前一个12864的LCD,PROTEUS仿真错误,但烧到片子里正确的

使用特权

评论回复
13
huangqi412|  楼主 | 2007-4-22 11:48 | 只看该作者

看来软件都不可靠

使用特权

评论回复
14
dreambird| | 2007-4-22 12:39 | 只看该作者

但是没有软件你什么都干不了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

622

主题

24960

帖子

18

粉丝