单片机设置一个按键重启主程序

单片机设置一个按键重启主程序,第1张

首先在程序的开头加入一句定义,sfr SAP = 0xe7

SAP 是名称,可以随意改写

之后在外部中断或程序内添加一个按键检测的语句

例如

if(K1==0)//如果按键被按下

{

YS(20)//延时去抖

if(K1==0)//如果是有效按键触发

{

SAP=0x60//执行软复位

}

}

此按键处理语句即可实现单片机的软复位 *** 作

至于sfr SAP = 0xe7这一条语句可以放在#include<reg52.h>头文件下面

#include<reg52.h>

sfr SAP = 0xe7

sbit K1=P3^3//按键

至于这两个地址0x60和0xe7代表什么,我也查阅了很多资料

如果要使用按键选择两个不同的程序,可以采用如下方法:

1、在80C51单片机的程序中定义两个不同的子程序,分别处理两个不同的功能。

2、在80C51单片机的程序中定义一个循环,用于监听按键的输入。

3、在循环中,通过读取按键的状态来判断用户按下了哪个按键。

4、如果用户按下了第一个按键,就调用第一个子程序;如果用户按下了第二个按键,就调用第二个子程序。

5、在子程序中实现具体的功能代码。

以上就是使用按键选择两个不同的程序的基本流程。

#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

void delay_ms(uint)

sbit led0=P0^0

sbit led1=P0^1

sbit key1=P3^2

sbit key2=P3^3

void main()

{

   uchar i=0

   uchar j=0

    while(1)

    {

       if(key1==0)//按键1

       {

        delay_ms(10)

        if(key1==0)

        {

            i++

            i=i%2

            switch(i)

            {

                 case 0: led0=1 break//关小灯

                 case 1: led0=0 break//开小灯

                 default:  break

            }

        }

        while(!key1)

        }

        

        if(key2==0)//按键2

       {

        delay_ms(10)

        if(key2==0)

        {

            j++

            j=j%2

            switch(j)

            {

                 case 0: led1=1 break//关小灯

                 case 1: led1=0 break//开小灯

                 default:  break

            }

        }

        while(!key2)

        }

    }

}

void delay_ms(uint z)  //延时子程序

{  

uint x,y

for(x=zx>0x--)

for(y=110y>0y--)

}


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

原文地址:https://54852.com/yw/11181714.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存