微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 单片机的外部中断的电平触发,触发中断,为什么数码...

单片机的外部中断的电平触发,触发中断,为什么数码...

时间:10-02 整理:3721RD 点击:
程序很简单就是P0口控制数码管从0到F,加了一个中断控制LED灯,这是一个电平触发
我想问的是当我用指拨开关使P3.2置低电平,那么这个程序应该只在中断程序运行数码管应该不会在改变,可实际上数码管却在缓慢从0到F变化,这是问什么?
#include<reg52.h>#define uint unsigned int#define uchar unsigned charvoid delay(uint a);sbit dula=P2^6;sbit wela=P2^7;sbit d1=P1^0;void main(){                           uchar i;   uchar code temp[]={                       0x3f,0x06,0x5b,0x4f,                       0x66,0x6d,0x7d,0x07,                       0x7f,0x6f,0x77,0x7c,                       0x39,0x5e,0x79,0x71,                         };      EA=1;   EX0=1;   IT0=0;                                                                 wela=1;   P0=0xf0;   wela=0;   for(i=0;i<16;i++)   {      d1=1;      dula=1;      P0=temp[i];      dula=0;      delay(82);   }}void delay(uint a){    uint x,y;    for(x=500;x>0;x--)      for(y=a;y>0;y--);}void exter0() interrupt 0{   d1=0;}

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint a);
sbit dula=P2^6;
sbit wela=P2^7;
sbit d1=P1^0;
void main()
{
                     
  
   uchar i;
   uchar code temp[]={
                       0x3f,0x06,0x5b,0x4f,
                       0x66,0x6d,0x7d,0x07,
                       0x7f,0x6f,0x77,0x7c,
                       0x39,0x5e,0x79,0x71,
                        };  
    EA=1;
   EX0=1;
   IT0=0;                                                              
   wela=1;
   P0=0xf0;
   wela=0;
   for(i=0;i<16;i++)
   {
      d1=1;
      dula=1;
      P0=temp[i];
      dula=0;
      delay(82);
   }
}
void delay(uint a)
{
    uint x,y;
    for(x=500;x>0;x--)
      for(y=a;y>0;y--);
}
void exter0() interrupt 0
{
   d1=0;
}

低电平触发,当执行完中断后会回到主程序,然后再次触发,执行中断,所以数码管缓慢变化

楼上正解                       

对的,触发中断回到主程序

你给中断程序里加个延时很长的函数 你看数码管还变化布

外部中断没有改变主函数的进程啊,他原来怎么样中断后还是一样的。

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

网站地图

Top