专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

外部中断控制

作者:佚名   来源:本站原创   点击数:  更新时间:2011年03月01日   【字体:
#include<reg51.h> 
unsigned char flag=0; 
sbit p33=P3^3; 
unsigned char code port3[4][4]=   
{ 
0x28,0x28,0x28,0x28, 
0x29,0x29,0x29,0x29, 
0x29,0x29,0x29,0x29, 
0x29,0x29,0x29,0x29, 
}; 
unsigned char code port1[4][4]= 
{ 
0x00,0x00,0x00,0x00, 
0x00,0x00,0x00,0x00, 
0x20,0x20,0x20,0x20, 
0x24,0x24,0x24,0x24, 
}; 
main()         
{ 
unsigned char i; 
unsigned int j,count=0; 
EA=1;       //总中断允许 
IT0=1;      //脉冲触发方式,下降沿有效 
EX0=1;      //外中断0允许 
while(1) 
{ 
   while(1) 
   { 
     if(flag==1) break; 
   } 

   flag=0; 
   for(i=0;i<4;i++) 
    { 
      while(1) 
       { 
         for(j=0;j<4;j++) 
          { 
         P3=port3[j];     
            P1=port1[j]; 
       } 
     if(++count==8000) {count=0;break;} 
       } 
    } 
  p33=0;    //本单片机效果走完,改变p33,使下一单片机,外部中断0下降沿触发
} 
} 
void int0(void) interrupt 0 
{ 
flag=1; 
} 

对程序稍加修改,昨天的程序,灯有点乱亮。

上电马上中断:由于单片机复位后,各IO口为高电平。我给发中断信号的单片机,程序起始就给下一个中断入口置低电平,所以上电后,下一个单片机进入中断了。

渐变:本程序为四个亮度等级。第一行不断轮流循环执行了8000次。

break跳出整个循环。continue跳出本次循环,重新执行下一循环。goto语句应尽量少用,通常与if连用,跳到对应标号处执行

以下为发送中断单片机的程序,没有完成想要的效果。

#include<reg51.h>
sbit p33=P3^3;
unsigned int count=0;
main()         
{
 p33=0;
 EA=1;       //总中断允许
 IT0=1;      //脉冲触发方式,下降沿有效
 EX0=1; 
 while(1)
  {;}
}
void int0(void) interrupt 0
{
 p33=1;
 p33=0;
} 

前一个单片机输出p33,接后一单片机外部中断0输入p32
 
单片机为2051

关闭窗口

相关文章