求一个简单51的c程序

2019-07-16 02:32发布

按键key1 key2 key3无任何操作15s返回main函数!最好把调用的函数也写出来参考下!谢谢。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
fanchendeyezi
2019-07-16 06:48
#include<reg51.h>
sbit led=P2^0;
sbit key1=P2^1;
sbit key2=P2^4;
sbit key3=P2^7;
unsigned int count;
bit flag=0;
void Delayms(unsigned int t)
{
        unsigned char i;
        for(;t>1;t--)
                for(i=0;i<125;i--)
                        {;}
}
bit keypress()
{
        if(!key1)
        {
                Delayms(10);
                if(!key1)
                        return 1;
        }
                if(!key2)
        {
                Delayms(10);
                if(!key2)
                        return 1;
        }
                if(!key3)
        {
                Delayms(10);
                if(!key3)
                        return 1;
        }
        return 0;
}
void main()
{
        led=1;
        EA=1;
        ET0=1;
        TMOD=0x02;
        TH0=TL0=1;
        TR0=1;
        while(1)
        {
                if((count<60000)&&(1==flag))//15S内按下任意键,灯都会继续亮
                        {
                                led=1;
                                count=0;
                                flag=0;
                        }
                if(count>=60000)//15S后没按键则灯熄灭
                        {
                                led=0;
                                ET0=0;
                                count=0;
                                flag=0;
                        }
                if(keypress())//灯熄灭后按任意键,则灯亮,并延时15S熄灭
                {
                        led=1;
                        ET0=1;
                }                       
        }
}
void timer() interrupt 1
{
        ET0=0;
        flag=keypress();
        count++;
        ET0=1;
}

硬件连接

硬件连接

一周热门 更多>