微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 51单片机怎样外部中断后让单片机从主程序开始?

51单片机怎样外部中断后让单片机从主程序开始?

时间:10-02 整理:3721RD 点击:
C语言怎样设计!~~~~~~~~~~~~~~~~~~~~

如果没有rtos那就是从main开始,中断只是打断一阵而已,之后会回来继续跑。

这个了解,其实我是想这样的按键控制led花样的,要一按下就换状态,可是我写的程序总是要等一会才换状态,下面是我的程序,大家帮帮忙:#include<reg51.h>
#include "delay5ms.h"
sbit KEY=P3^2;      //按键端口         
int i,num=0;

void init();
  void main()
{
        init();
        while(1)
        {       
                if(num==1)
                {
       
                        P2=0x99;            //P2口接共阳led灯
                        delay5ms(100);
                        P2=0x11;
                        delay5ms(100);
                        P2=0x99;
                        delay5ms(100);
                        P2=0x11;
                        delay5ms(100);
                }
                else if(num==0)
                {
                        P2=0x00;
                    delay5ms(100);
                    P2=0xff;
                    delay5ms(100);
                        P2=0x00;
                    delay5ms(100);
                    P2=0xff;
                    delay5ms(100);       
                }
       
         }
}       
void init()
{
        EA=1;
        IT0=1;                //外部中断0
        EX0=1;          
}
void exint0 () interrupt 0
{
                   if(KEY==0)
                {
                        delay5ms(1);
                        if(KEY==0)
                        {
                                num++;
                            if(num==2)
                                    {
                                        num=0;
                                }
                                while(!KEY);
                         }
                 }
}
如何才能一按健就能换 状态~

51有复位按钮呀~~按下复位按钮进复位,从main函数开始

你用switch语句试试

按键按下不能马上变换状态~~~~~~~

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

网站地图

Top