微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 求一个简单51的c程序

求一个简单51的c程序

时间:10-02 整理:3721RD 点击:
按键key1 key2 key3无任何操作15s返回main函数!最好把调用的函数也写出来参考下!谢谢。

有一个类似的。按键Key1,Key2,Key3无任何操作15S则灯灭。

#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;
}

硬件连接


时间应该不是严格的15S,你自己调吧!

谢谢楼上的,我试试

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

网站地图

Top