智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2440|回复: 11
打印 上一主题 下一主题

按键问题,纠结好几天了

[复制链接]

21

主题

196

帖子

0

精华

版主

Rank: 9Rank: 9Rank: 9

积分
2080
威望
1012
贡献
600
兑换币
642
注册时间
2014-12-6
在线时间
234 小时
毕业学校
华南农业大学
跳转到指定楼层
1#
发表于 2015-3-10 22:03:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5贡献
按键一端接单片机,一端接地。
总共有4个按键,用了下面的程序,程序的现象是LED灯在闪,当有按键按下的时候,LED会亮,松手继续闪。

S1可以实现控制。但是!!!!S2,S3,S4却不可以,当把程序里的S1改成S2或者S3,S4的时候,LED闪了一下就一直亮着!!!!按键按下也是一直亮着。
一样的程序,为什么会出现不一样的现象
硬件没有问题,用万用表测过了,都是可以的。

PA口接的是LED..


#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */

#define S1 PORTE_PE4            //按键
#define S2 PORTE_PE5
#define S3 PORTE_PE6
#define S4 PORTE_PE7
#define S1_dir DDRE_DDRE4
#define S2_dir DDRE_DDRE5
#define S3_dir DDRE_DDRE6
#define S4_dir DDRE_DDRE7   


void delay(uint z)
{

最佳答案

查看完整内容

我遇到过类似的问题,按键有三个能用,另一个不能,而且初始化方式完全相同,用法也相同,但就是用不了。后来我发现:仅仅给单片机上电,程序还是原来的,发现不能使用的端口与其他三个的输出电压不同。至于原因我也不太确定,所以我就换了几个初始化后输出电压相同的IO口来使用。
回复

使用道具 举报

1

主题

342

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
5290
威望
2675
贡献
1705
兑换币
1749
注册时间
2014-7-26
在线时间
455 小时
2#
发表于 2015-3-10 22:03:43 | 只看该作者
我遇到过类似的问题,按键有三个能用,另一个不能,而且初始化方式完全相同,用法也相同,但就是用不了。后来我发现:仅仅给单片机上电,程序还是原来的,发现不能使用的端口与其他三个的输出电压不同。至于原因我也不太确定,所以我就换了几个初始化后输出电压相同的IO口来使用。
回复

使用道具 举报

21

主题

196

帖子

0

精华

版主

Rank: 9Rank: 9Rank: 9

积分
2080
威望
1012
贡献
600
兑换币
642
注册时间
2014-12-6
在线时间
234 小时
毕业学校
华南农业大学
3#
 楼主| 发表于 2015-3-10 22:04:18 | 只看该作者
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */

#define S1 PORTE_PE4
#define S2 PORTE_PE5
#define S3 PORTE_PE6
#define S4 PORTE_PE7
#define S1_dir DDRE_DDRE4
#define S2_dir DDRE_DDRE5
#define S3_dir DDRE_DDRE6
#define S4_dir DDRE_DDRE7   


void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)         
                for(y=110;y>0;y--);
}

void key()

{
S1=1;  
S2=1;
S3=1;
S4=1;
    S1_dir=0;
    S2_dir=0;
    S3_dir=0;
    S4_dir=0;
}


void main(void)
{
  DisableInterrupts;
  DDRA=0Xff;
  key()  ;
  EnableInterrupts;

  for(;;)
  {      
   PORTA=0Xff;
   delay(5000);
   PORTA=0X00;
   delay(5000);  
   
     if(S1==0)
     {
           delay(30);
           if(S1==0)
           {                     
             while(!S1)
             PORTA=0Xff;

           }      
     }   
   
    _FEED_COP(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}
回复

使用道具 举报

21

主题

196

帖子

0

精华

版主

Rank: 9Rank: 9Rank: 9

积分
2080
威望
1012
贡献
600
兑换币
642
注册时间
2014-12-6
在线时间
234 小时
毕业学校
华南农业大学
4#
 楼主| 发表于 2015-3-10 22:26:57 | 只看该作者
不要不鸟我啊:'(:'(我搞了好久的,真的不知道是什么原因了:'(:'(:'(
回复

使用道具 举报

8

主题

437

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2938
威望
1452
贡献
846
兑换币
982
注册时间
2014-12-7
在线时间
320 小时
5#
发表于 2015-3-10 22:35:35 | 只看该作者
我也不懂
回复

使用道具 举报

20

主题

572

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3501

优秀会员奖章活跃会员奖章论坛元老奖章在线王奖章

威望
1767
贡献
1086
兑换币
1086
注册时间
2014-5-3
在线时间
324 小时
毕业学校
江苏科技大学
6#
发表于 2015-3-11 10:23:47 | 只看该作者
你看下应该是引脚的问题,PE5,6,7可能与其他引脚有冲突,5,6,7好像是定时器,SPI的接口吧?如果是k60.还有,你按键的话最好要接上拉电阻
回复

使用道具 举报

21

主题

196

帖子

0

精华

版主

Rank: 9Rank: 9Rank: 9

积分
2080
威望
1012
贡献
600
兑换币
642
注册时间
2014-12-6
在线时间
234 小时
毕业学校
华南农业大学
7#
 楼主| 发表于 2015-3-11 17:08:40 | 只看该作者
也许,太在意 发表于 2015-3-11 10:17
我遇到过类似的问题,按键有三个能用,另一个不能,而且初始化方式完全相同,用法也相同,但就是用不了。后 ...

那要怎么确定每个端口输出的电压是多少??
回复

使用道具 举报

21

主题

196

帖子

0

精华

版主

Rank: 9Rank: 9Rank: 9

积分
2080
威望
1012
贡献
600
兑换币
642
注册时间
2014-12-6
在线时间
234 小时
毕业学校
华南农业大学
8#
 楼主| 发表于 2015-3-11 17:10:36 | 只看该作者
申继鹏 发表于 2015-3-11 10:23
你看下应该是引脚的问题,PE5,6,7可能与其他引脚有冲突,5,6,7好像是定时器,SPI的接口吧?如果是k60.还 ...

我试过用PB口还是不行,我是128的,应该不需要接上拉电阻吧?
回复

使用道具 举报

4

主题

429

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4063

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章

QQ
威望
1892
贡献
1233
兑换币
1210
注册时间
2014-11-9
在线时间
469 小时
9#
发表于 2015-3-11 17:12:33 | 只看该作者
,很客观结果
回复

使用道具 举报

1

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
威望
243
贡献
127
兑换币
147
注册时间
2014-7-21
在线时间
46 小时
毕业学校
遂宁中学校
10#
发表于 2015-3-11 22:19:30 | 只看该作者
你设置过那个控制引脚功能的寄存器了吗?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 17:11 , Processed in 0.062328 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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