怎么让单片机按一下按键执行一个程序,再按一下马上执行另一个程序

怎么让单片机按一下按键执行一个程序,再按一下马上执行另一个程序,第1张

call key

jmp loop

key:

jnb p30,rel

ret

rel:

call delay20MS

jnb p30,rel

第一次这里标志位为0,则执行,第一次按下功能。

是两个子程序单片机按键切换lcd显示是两个子程序。单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统。

#include<reg52h>

#define uchar unsigned char

#define uint unsigned int

void delayms(uint i) //1ms延时程序

{

uint j;

for(;i>0;i--)

{

for(j=0;j<164;j++)

{;}

}

}

void main(void)

{

uchar i;

while(1)

{

for(i=0;i<8;i++)

{

P2=0X01<<i;

delay_ms(200);

}

}

}

现在一般不用2051了,呵呵,不过仿真也没事。

这程序可以这样写:设一个变量作为按键的键值,按下为1,再次按下为0;首先写一个流水灯的子程序,然后再主函数里去识别之前设置的键值,=1--->去执行流水灯;=0--->直接把P1口赋值0(也就是全亮)。这样就可以实现了。

#include<reg51h>

#define uchar unsigned char

#define uint unsigned int

uchar time,sec,keyval;

sbit D1=P3^3;

sbit D2=P3^4;

sbit KEY=P3^5;

void t0isr() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

time++;

if(time>=20)sec++;

}

main()

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

ET0=1;

EA=1;

keyval=0;

while(1)

{

switch(keyval)

{

case 0: TR0=1;sec=0;

if(sec<30){D1=0;D2=1;}

else {D1=1;D2=1;}

break;

case 1: TR0=1;sec=0;

if(sec<30){D1=1;D2=0;}

else {D1=1;D2=1;}

break;

case 2: TR0=1;sec=0;

if(sec<30){D1=0;D2=1;}

if(sec>=30 && sec<60){D1=1;D2=0;}

else {D1=1;D2=1;}

break;

default:break;

}

}

}

长按3秒进入程序可以这样

while(1)

{

     if( key==0)//按键按下

     {

         cnt++;

         if( cnt>300)

         {

            cnt=0;//到3秒,退出本循环进入下一段程序

             break;

}

         dely(10);//延时10毫秒

}

}  

while(1)

{

    //此为主程序段

}

参考如下:

假设按键按下为低电平;

if(key1==0)

{

while(key1==0);//d起后执行

{

按键1需要执行的功能;

}

}

if(key2==0)

{

while(key2==0);//d起后执行

{

按键2需要执行的功能;

}

}

以上就是关于怎么让单片机按一下按键执行一个程序,再按一下马上执行另一个程序全部的内容,包括:怎么让单片机按一下按键执行一个程序,再按一下马上执行另一个程序、单片机按键切换lcd显示、C51单片机按键切换流水灯等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9359178.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存