智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2487|回复: 18
打印 上一主题 下一主题

为什么我这个简单小程序的功能不能实现啊? 急死我了!!求指导!!!

  [复制链接]

5

主题

23

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
268
威望
105
贡献
39
兑换币
50
注册时间
2013-7-22
在线时间
62 小时
跳转到指定楼层
#
发表于 2013-7-24 20:00:45 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions  */  
void PLL_Init(void)
{                     //锁相环时钟=2*16*(2+1)/(1+1)=48MHz
  REFDV=1;           //总线时钟=48/2=24MHz
  SYNR=2;
  while(!(CRGFLG&0x08));
  CLKSEL=0x80;
}


void main(void) {
  /* put your own code here */

    PLL_Init( );
    DDRB=0X00;//PB为输入端口
    PORTB=0X00;
    DDRA=0XFF;  //PA为输出端口
    PORTA=0X00;
    while(1)

    {
      switch(PORTB)
     {
       case 0X01ORTA=0Xf0;//PB0输入高电平则PA高4位输出高电平
       case 0X02:PORTA=0X0f;//PB1输入高电平则PA低4位输出高电平  
       default:PORTA=0X00;//其他情况PA全为低电平
       break;

     }
    }

}


12

主题

185

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3413
威望
1741
贡献
998
兑换币
782
注册时间
2011-11-22
在线时间
337 小时
18#
发表于 2013-7-26 12:12:38 | 只看该作者
穆旦阿斗 发表于 2013-7-26 10:47
如果你设置成输入模式,没有设置是否上拉就不上拉,你悬空读回来应该是0啊,又不确定的状态?测过?是不 ...

这个我确实亲测过的,LZ自己也说了,如果不设置上拉,所有功能都无法实现。为什么?就是因为返回了随机数,但并不是静电问题。
我用过的128和AVR系列,都必须设置,例如AVR给DDRx写0X00时,x口就会自动上拉(但128不是自动上拉的)。
而51什么都不用设置,它本身就不用设置方向,所以任何时候都是悬空自动上拉的
回复 支持 反对

使用道具 举报

42

主题

1054

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3034

优秀会员奖章活跃会员奖章

QQ
威望
1650
贡献
780
兑换币
625
注册时间
2012-7-6
在线时间
302 小时
17#
发表于 2013-7-26 10:59:59 | 只看该作者
额 51的不设置输出的都是高,不要搞混了,初始化不对就在论坛找找别人的初始化,另外在看数据手册。不设置不会是随机的,你觉得飞思卡尔公司会让这种事儿发生?可能没测试的时候有静电影响了吧。你可以试一下,不设置也就是默认,再悬空读取PB口的值试试
回复 支持 反对

使用道具 举报

5

主题

23

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
268
威望
105
贡献
39
兑换币
50
注册时间
2013-7-22
在线时间
62 小时
16#
 楼主| 发表于 2013-7-26 10:51:55 | 只看该作者
穆旦阿斗 发表于 2013-7-26 10:47
如果你设置成输入模式,没有设置是否上拉就不上拉,你悬空读回来应该是0啊,又不确定的状态?测过?是不 ...

我原先是这样想的:因为悬空相当于高电平,所以我就算不设置上拉,每次悬空应该都算是输入高电平吧,但是用单片机做实验好像不是这么回事,设置了上拉,我的程序功能才能实现,不设置就没反应。。。。
回复 支持 反对

使用道具 举报

42

主题

1054

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3034

优秀会员奖章活跃会员奖章

QQ
威望
1650
贡献
780
兑换币
625
注册时间
2012-7-6
在线时间
302 小时
15#
发表于 2013-7-26 10:47:14 | 只看该作者
夜之音 发表于 2013-7-25 23:12
这个解释有点小小的问题,上拉是指悬空时返回高电平1,但是不设置上拉却不一定返回0,因为还有可能返回随 ...

  如果你设置成输入模式,没有设置是否上拉就不上拉,你悬空读回来应该是0啊,又不确定的状态?测过?是不是输入口有静电了?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

5

主题

23

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
268
威望
105
贡献
39
兑换币
50
注册时间
2013-7-22
在线时间
62 小时
14#
 楼主| 发表于 2013-7-26 10:47:11 | 只看该作者
夜之音 发表于 2013-7-25 23:12
这个解释有点小小的问题,上拉是指悬空时返回高电平1,但是不设置上拉却不一定返回0,因为还有可能返回随 ...

设置上拉就是为了让其悬空时返回高电平,不设置上拉的话就有可能端口悬空时也不会返回高电平,而是随机数,是这个意思吧!
回复 支持 反对

使用道具 举报

12

主题

185

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3413
威望
1741
贡献
998
兑换币
782
注册时间
2011-11-22
在线时间
337 小时
13#
发表于 2013-7-25 23:12:33 | 只看该作者

RE: 为什么我这个简单小程序的功能不能实现啊? 急死我了!!求指导!!!

只想更懂 发表于 2013-7-25 09:36
谢谢你的解释哈  让我知道加那句的意思

这个解释有点小小的问题,上拉是指悬空时返回高电平1,但是不设置上拉却不一定返回0,因为还有可能返回随机数,比如128的AB口,AVR什么的
回复 支持 反对

使用道具 举报

5

主题

23

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
268
威望
105
贡献
39
兑换币
50
注册时间
2013-7-22
在线时间
62 小时
12#
 楼主| 发表于 2013-7-25 09:36:45 | 只看该作者
穆旦阿斗 发表于 2013-7-25 05:28
同意楼上的 输入模式的时候可以选择是否上拉,就是说B口什么都不接的时候读回PORTB的值是高还是低

谢谢你的解释哈  让我知道加那句的意思  
回复 支持 反对

使用道具 举报

5

主题

23

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
268
威望
105
贡献
39
兑换币
50
注册时间
2013-7-22
在线时间
62 小时
11#
 楼主| 发表于 2013-7-25 09:35:58 | 只看该作者
夜之音 发表于 2013-7-24 22:30
还是我来个标准答案吧,
在while(1)的前面加上一句,PUCR=0XFF;
保证解决问题,别忘了回来感谢我

好激动  终于解决了  怎么谢呢   你要是女的我就以身相许吧  如果是男的。。。。来青岛请你喝正宗青岛啤酒
回复 支持 反对

使用道具 举报

42

主题

1054

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3034

优秀会员奖章活跃会员奖章

QQ
威望
1650
贡献
780
兑换币
625
注册时间
2012-7-6
在线时间
302 小时
10#
发表于 2013-7-25 05:28:18 | 只看该作者
同意楼上的 输入模式的时候可以选择是否上拉,就是说B口什么都不接的时候读回PORTB的值是高还是低
回复 支持 反对

使用道具 举报

12

主题

185

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3413
威望
1741
贡献
998
兑换币
782
注册时间
2011-11-22
在线时间
337 小时
9#
发表于 2013-7-24 22:30:54 | 只看该作者
还是我来个标准答案吧,
在while(1)的前面加上一句,PUCR=0XFF;
保证解决问题,别忘了回来感谢我
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-6 13:45 , Processed in 0.080390 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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