长汀无线电厂交流论坛

标题: 单片机C语言编程问题:怎样实现设置好之后按键无动作10秒退出键盘扫描子函数 [打印本页]

作者: 摇滚铁心    时间: 2011-6-2 10:34
标题: 单片机C语言编程问题:怎样实现设置好之后按键无动作10秒退出键盘扫描子函数

2051做个充电器,有两个按键k1,k2。用来设置充电参数。开机先进入键盘扫描子函数,怎样实现设置好之后按键无动作10秒退出键盘扫描子函数,进入输出充电脉冲子函数?

作者: 摇滚铁心    时间: 2011-6-2 13:35
经熊的提点,用定时器中断搞定了
作者: 快活丞    时间: 2011-6-2 14:28
C 的我不大熟悉,汇编的就没问题
作者: 蓝绿黄    时间: 2011-6-2 17:33
#include<reg52.h>

sbit LED1=P1^0;
sbit LED2=P1^1;
sbit LED3=P1^2;
sbit KEY1=P3^2;
sbit KEY2=P3^3;

void delay(unsigned char time){
while(time>0)
  time--;
}

void fun1(){                      //按键KEY1的程序
while(1){LED2=0;}
}

void fun2(){                     //按键KEY2的程序
while(1){LED3=0;}
}

void main(){
unsigned int i=0,j;
LED1=1;
LED3=1;
LED2=1;
KEY1=1;
KEY2=1;
while(i<50){
  while(j<14000){        //修改14000这个参数可以调整延时时间
   j++;
   if(!KEY1){
    delay(200);
    if(!KEY1)
    fun1();
   }
   if(!KEY2){
    delay(200);
    if(!KEY2)
    fun2();
   }  
  }
  j=0;
  i++;
}
while(1){LED1=0;}
}

LED1亮表示进入子函数。LED2和LED3亮表示进入按键程序。
上电复位后,不按KEY和1KEY2,约10S钟后LED1亮。

菜鸟愚见,欢迎高手拍砖

作者: 摇滚铁心    时间: 2011-6-2 20:59
谢谢各位,程序已经好了。硬件还有点问题,没调整好。等完成了拿上来给大伙拍拍砖
作者: 摇滚铁心    时间: 2011-6-2 21:09
稳压充电两用电源.rar (1.46 KB, 下载次数: 14) “while(j<14000){        //修改14000这个参数可以调整延时时间
   j++;”在这里停的时间太长,这期间如果有键按下就检测不到了。还是用定时器中断好,没发生中断时一直再扫描键盘
作者: 山东人    时间: 2011-6-5 11:36
楼主能否把原理图发上来,学习学习。
作者: 摇滚铁心    时间: 2011-6-5 20:01
图片比较多,发在矿坛了,http://www.crystalradio.cn/bbs/thread-192013-1-1.html




欢迎光临 长汀无线电厂交流论坛 (http://www.ctwxd.com/) Powered by Discuz! X3.1