找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机定时器控制按键秒表程序 暂停之后无法进行其他操作

查看数: 1601 | 评论数: 2 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-12-8 17:38

正文摘要:

单片机程序里只定义了一个按键,但是用发的开发板做实物,另一个按键却可以暂停秒表,暂停之后无法进行其他操作,只能按总开关复位 #include <stc15.h> #include "delay.h" sbit DS = P1^1; //串 ...

回复

ID:77589 发表于 2022-12-9 10:01
其它地方没去看,你实现按键功能的中断函数应该可以优化一下,也不知道能不能行,但可以试试
void INT0(void) interrupt 0
{
    Delay10ms();//延时消抖
    if(K1 == 0) {
        LED = 0;
        second = 0;//为下一次长按进行初始化
        TR0 = 1;   //定时器0开始计时
    }
        else {
                return;
        }
    //等待按键释放   
    while(K1 == 0) {
        LED = 1;
    }
    //表示长按2s
    if(second > 50) {
        AUXR &= ~0x10;//定时器2暂停计时
        Send(0xff);
                Send(0xff);
                ST = 0;
                ST = 1;       //熄屏        
                m = 0;
                n = 0;
                i = 0;        //重新初始化
                flag = 1;     //长按标志位
        LED = 1;
                return;
    }
       
        i++;       //记录按键次数
        //按下一次 启动计时
    if(i == 1) {
        AUXR |= 0x10;    //定时器2开始计时
        LED = 0;
    }
        //再按一下暂停计时
    if(i == 2) {
        AUXR &= ~0x10;   //定时器2暂停计时
        LED = 1;
                i = 0;
    }
}
ID:123289 发表于 2022-12-9 08:57
做一个标记:BJ。你的计时程序依据BJ计时,BJ=1就计时,BJ=0就不计时。
这样做暂停,只有将BJ清0,即可。不影响其它东东。而恢复计时呢?就将BJ置1。
切记:不要用按键直接决定计时,因为你的功力不够,逻辑不清。用个BJ做控制,就简单了,清晰了。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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