找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2|回复: 0
收起左侧

半阻塞式按键判断程序

[复制链接]
ID:18253 发表于 2026-2-23 22:35 | 显示全部楼层 |阅读模式
参考江协科技的定时器实现非阻塞式按键程序中对按键状态判断的思路,搞了一个半阻塞式按键判断程序,挺有意思。

#include <STC8H.H>
#include "delay.h"
#include "keyx3.h"


sbit k1 = P3^2;          
sbit k2 = P3^3;       
sbit k3 = P3^4;       

unsigned char num;

//==============================
unsigned char keynum()
{
        unsigned char temp;
        temp = num;
        num = 0;
        return temp;
}

unsigned char key_getnum()//输出与实际电平相反,有数值代表按下,0为未按下。
{
        if(k1 == 0)
        {
                return 1;
        }       

        if(k2 == 0)
        {
                return 2;
        }

        if(k3 == 0)
        {
                return 3;
        }

        return 0;
}


//--------------------------------------------
void key_tick()//在主函数轮循
{
        static unsigned char currstate, prevstate;

        delayms(20);//阻塞延时
        prevstate = currstate;           //当前状态传递到之前状态
        currstate = key_getnum();  //按键值传递到当前状态

        if(currstate != 0 && prevstate == 0)
        {
                num =  currstate;
        }

}
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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