找回密码
 立即注册

QQ登录

只需一步,快速开始

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

九齐单片机定时器扫描按键程序

[复制链接]
ID:1125252 发表于 2024-6-14 16:39 | 显示全部楼层 |阅读模式
/********************获取按键函数**********************/
unsigned char Get_keynum(void)
{
    unsigned char temp;
    temp=key_num;
    key_num=0;
    return temp;
}

unsigned char key_Getnum(void)
{
    unsigned keynum=0;
   
    if(K1==0){keynum=1;}
   
    return keynum;
}
void key_scan(void)
{
    static unsigned lastkey,nowkey;
    lastkey=nowkey;
    nowkey=key_Getnum();
    if(lastkey==1 && nowkey==0)
    {
        key_num=1;
    }
}/****************************配置定时器0********************************/
void Timer0_Init(void)
{
   
    PCON1 = C_TMR0_Dis;
    //1ms
    //TMRH = 0X30;
    TMR0 = 5;        //计算频率16M/2/2=4M=4000000HZ=4us   4us*(255-5)=1000us
    T0MD = C_PS0_TMR0 | C_PS0_Div2;   
    INTE = C_INT_TMR0;
    PCON1 = C_TMR0_En;
}

#endif
/***************************中断************************************/

void isr(void) __interrupt(0)
{
    if(INTFbits.PBIF)
    {   
        INTFbits.PBIF = 0;                    // Clear PBIF(PortB input change interrupt flag bit)
        INTF= (unsigned char)~(C_INT_PBKey);// Clear PBIF(PortB input change interrupt flag bit)
    }
   
    if(INTFbits.T0IF)
    {     
        tim++;
           if(tim>=25)
           {
               key_scan();
               tim=0;
           }
        
        
   
    INTF= (unsigned char)~(C_INT_TMR0);    // Clear T0IF flag bit
    }
}
/***************************主函数************************************/
void main(void)
{        
    GPIO_INIT();
    DISI();
   
   
    Timer0_Init();
    //Timer1_Init();
    ENI();
   
    //KEY1_INIT();
    while(1)
    {   
        CLRWDT();
        
        key=Get_keynum();
        if(key==1)
        {
           num++;
           if(num>=10)
           {
                num=0;
           }
        }
        if(num=1){}
        if(num=2){}
          ...
                                                
    }
}
}

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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