标题: 大佬们按键中断求帮助 [打印本页]

作者: 张879    时间: 2022-12-25 15:37
标题: 大佬们按键中断求帮助
#include <REGX52.H>

sbit key1 = P2^4;
sbit key2 = P2^5;
sbit key3 = P2^6;
sbit key4 = P2^7;
unsigned char sz[]={0x10,0x00,0x78,0x02,0x12,0x19,0x30,0x24,0x79,0x40};//数码管值
void Timer0Init(void)                //1毫秒@12.000MHz
{
        TMOD &= 0xF0;                //设置定时器模式
        TMOD |= 0x01;                //设置定时器模式
        TL0 = 0x30;                //设置定时初值
        TH0 = 0xf8;                //设置定时初值
        TF0 = 0;                //清除TF0标志
        TR0 = 1;                //定时器0开始计时
        EA=1;                        //定时器总开关
        ET0=1;                        //定时器0开关
}
bit keydq = 1;//按键当前值
bit bc = 1;//保存前一次的值

void main()
{
       
        unsigned char i; //数值变化
        P2=0xfe;//矩阵按键选择P2.0低电平
        Timer0Init();
        while(1)
        {  
                if(key2==0)
                {
                        P0=0X55;
                }
                if(keydq != bc) //当前值与前一次不一样
                {
                       
                        if(bc == 0)
                        {
                                i++;       
                                if(i >= 9)
                                        {
                                                i=0;
                                        }
                                }
                }
                P1=sz[i];
                bc=keydq;
        }
}

void time0() interrupt 1
{
        unsigned char keybuf=0xff;
        P2=0XFE;
        TL0 = 0x30;                //设置定时初值
        TH0 = 0xf8;                //设置定时初值
        keybuf=(keybuf<<1) | key2;
        if(keybuf==0x00)
        {
                keydq=0;
        }       
        else if(keybuf==0xff)
        {
                keydq=1;
        }
        else
        {}
}

程序如上在main中将keydq换成key1则按键正常使用,求大佬帮看看哪里写的有问题


作者: 张879    时间: 2022-12-26 14:09
小白求求懂得大佬看看是哪里问题,2天来没搞懂
作者: aecuter    时间: 2023-4-27 20:25
宏定义的是key1

作者: jxchen    时间: 2024-2-2 09:52
非常好,谢谢楼主




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1