一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 1381|回复: 4

[其他综合] 求助大侠这程序怎么不行啊

[复制链接]
发表于 2013-10-3 18:01 | 显示全部楼层 |阅读模式
本帖最后由 YZMMDY 于 2013-10-3 18:03 编辑

我业余单片机爱好者,想弄好一点的独立按键程序,在网上找了个,比葫芦画瓢后不行,那个大侠帮我看看问题出在那里
这个KEYMASK是什么意思,在这里起到什么作用
#include <reg52.h>
unsigned char KeyPressDown=0x00;
unsigned char KeyRelease=0x00;
unsigned char LastKey=0x00;
sbit KEYMASK = 0XFF;这个是我自己后来加的
sbit Led = P3^0;
sbit key = P1^0;
void delay(unsigned int x)
{
unsigned char i,j;
for(i=x;i>0;i--)
    for(j=124;j>0;j--);
}
/*****************************************
按键扫描
*******************************************/
void KeyScan(void)
{
  static unsigned char LastReadKey=0x00; //记录上次KeyScan()读取的IO口键值
  unsigned char CurrReadKey;    //记录本次KeyScan()读取的IO口键值
  unsigned char CurrKey;    //记录本次经过消抖后的键值
  P1 |=KEYMASK;       // 将按键对应的IO设置为输入状态
  CurrReadKey = (~P1) & KEYMASK;     // 取反
  CurrKey = (CurrReadKey & LastReadKey) | (CurrKey ^ LastReadKey);
  // 记录按键按下及释放
  KeyPressDown = (~LastKey) & CurrKey;
  KeyRelease = LastKey & (~CurrKey);
  LastReadKey = CurrReadKey;
  LastKey = CurrKey;
}
void mian(void)
{
while(1)
{
  if((key&0xff) != 0xff)
  Led = ~Led;
  delay(500);
}
}

发表于 2013-10-4 00:19 | 显示全部楼层
void mian(void)    笔误
主循环未调用 KeyScan();
其它LZ再看看,晚了睡了................
回复

使用道具 举报

 楼主| 发表于 2013-10-4 06:02 | 显示全部楼层
lyxing 发表于 2013-10-4 00:19
void mian(void)    笔误
主循环未调用 KeyScan();
其它LZ再看看,晚了睡了................

感谢指导,还是不行,期待大侠
回复

使用道具 举报

发表于 2013-10-4 09:58 | 显示全部楼层
光程序不行,楼主要把原理图发上来才行
回复

使用道具 举报

 楼主| 发表于 2013-10-4 12:43 | 显示全部楼层
谢谢各位,程序弄好了,要在中端里扫描按键才行
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-11-1 01:23 , Processed in 0.034034 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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