微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 这个按键怎么才可以用啊?

这个按键怎么才可以用啊?

时间:10-02 整理:3721RD 点击:
我想用这个实验板的按键来显示。0.....4.....8c.....


下面程序是我写的。可是按按键没有反应。感觉程序没有问题呀。那个师傅来看看。指导下。是怎么回事。研究了两天没有结果。很是郁闷啊。
#include<reg52.h>
#define uint unsigned int       
#define uchar unsigned char
uchar temp,num;
uchar code table[]={        //共阳极0--F
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void main()
{
        P0=0xff;
        P2=0;
        while(1)
        {
                P3=0xfe; //11111110第1行线置0
                temp=P3;
                temp=temp&0xf0;         //判断是否有按键按下
                while(temp!=0xf0)//有按键按下temp!=0xf0
                {
                        delay(5);
                        temp=P3;         //重新读P3的值
                    temp=temp&0xf0;         //重新与运算
                        while(temp!=0xf0)//确认有按键按下
                        {
                                temp=P3;         //再读P3的值 这一句很关键
                                switch(temp) //如果temp=以下case中的某一值
                                {                         //就执行该行的语句
                                        case 0xee:num=1;
                                         break;
                                        case 0xde:num=5;
                                         break;
                                        case 0xbe:num=9;
                                         break;
                                        case 0x7e:num=13;
                                         break;
                                }
                                while(temp!=0xf0) //等待按键释放
                                {
                                        temp=P3;
                                        temp=temp&0xf0;       
                                }
                               
                        P0=table[num-1];  //从0开始显示到F
                
                        }
                }
        }
}

while(temp!=0xf0)//有按键按下temp!=0xf0
把这句和下面和这句相同的while都改成if
否则你在while那个为真的语句里永远第二个while为真,其他没再看了,你先试试...

我运行了单步。看见程序都没有进入到按键确认的语句。

谢谢。你的回复。我在试下。

我改为if还是一样的。按键都没有反应。

师傅们来看看。卡住了。

有中断是不是会好点?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top