專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

外部中斷控制

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間: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;      //脈沖觸發(fā)方式,下降沿有效 
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下降沿觸發(fā)
} 
} 
void int0(void) interrupt 0 
{ 
flag=1; 
} 

對程序稍加修改,昨天的程序,燈有點亂亮。

上電馬上中斷:由于單片機復(fù)位后,各IO口為高電平。我給發(fā)中斷信號的單片機,程序起始就給下一個中斷入口置低電平,所以上電后,下一個單片機進(jìn)入中斷了。

漸變:本程序為四個亮度等級。第一行不斷輪流循環(huán)執(zhí)行了8000次。

break跳出整個循環(huán)。continue跳出本次循環(huán),重新執(zhí)行下一循環(huán)。goto語句應(yīng)盡量少用,通常與if連用,跳到對應(yīng)標(biāo)號處執(zhí)行

以下為發(fā)送中斷單片機的程序,沒有完成想要的效果。

#include<reg51.h>
sbit p33=P3^3;
unsigned int count=0;
main()         
{
 p33=0;
 EA=1;       //總中斷允許
 IT0=1;      //脈沖觸發(fā)方式,下降沿有效
 EX0=1; 
 while(1)
  {;}
}
void int0(void) interrupt 0
{
 p33=1;
 p33=0;
} 

前一個單片機輸出p33,接后一單片機外部中斷0輸入p32
 
單片機為2051

關(guān)閉窗口

相關(guān)文章