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

單片機(jī)中斷應(yīng)用程序

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2010年10月06日   【字體:
/*單片機(jī)中斷反應(yīng) */
//==聲明區(qū)=====================================================================================================
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint a);
bit c,b;
//==主程序區(qū)===================================================================================================
void main()
{
 EA=1;//打開總中斷
 EX0=1;//打開外部中斷0
 IT0=0;//將中斷0設(shè)置為電平觸發(fā)
 IT1=0;//將中斷0設(shè)置為電平觸發(fā)

 EX1=1;//打開外部中斷1
 while(1)
 {
  P1=0xfe;//關(guān)掉INT0里面的LED
  P0=0xff;//關(guān)掉INT1里面的數(shù)碼管
  P0=0x00;
  P2=0xf8;
   P1=0xfe;
  while(1); 
 }
}
//=子程序區(qū)=====================================================================================================
void delay(uint a)
{
 uint b,c;
 for(b=a;b>0;b--)
  for(c=110;c>0;c--);
}
void Int0() interrupt 0//外部中斷0的服務(wù)子程序不用在聲明區(qū)聲明的
{
 uint a;
 a=10;
  while(a--)//這里不能用while(1)如果不是的話當(dāng)外部中斷已經(jīng)成了高電平,但無法跳出中斷服務(wù)子程序
 {
  P0=0x00;
  P2=0xf8;
   P1=0xff;
  delay(1000);
  P1=0x00;
  delay(1000);
 }
}
void Int1() interrupt 2//外部中斷1 的服務(wù)子程序也是不用在聲明區(qū)聲明的。 
{
 delay(1);
 c=P3^3;
 if(c==0)
 {
  delay(1);
  if(c==0)
  {
   uint a;
   a=10;
   while((a--))//這里不能用while(1)如果不是的話當(dāng)外部中斷已經(jīng)成了高電平,但無法跳出中斷服務(wù)子程序
   {
   
    P1=0xff;
    P2=0xf8;
    P0=0x3f;
    delay(1000);
    P2=0xf9;
    P0=0x00;
    delay(1000);
    P2=0xf8;
    P0=0x06;
    delay(1000);
    P2=0xf8;
    P0=0x5b;
    delay(1000);
    P2=0xf8;
    P0=0x4f;
    delay(1000);
    P2=0xf8;
    P0=0x66;
    delay(1000);
    P2=0xf8;
    P0=0x6d;
    delay(1000); 
    
   }
  } 
 }


}
/*程序功能是第一個(gè)LED亮的,P3^2口是低電平是進(jìn)入中斷程序,中斷實(shí)現(xiàn)功能是八個(gè)LED一起閃爍。P3^3口是低電平是進(jìn)入外部中斷1,
外部中斷1的程序?qū)崿F(xiàn)是,第一個(gè)數(shù)碼管顯示0,1,2,3,4,5.但我還沒有弄明白為什么0和1轉(zhuǎn)換的時(shí)候有一個(gè)時(shí)間間隔而大家的延時(shí)
都是一樣,但是在顯示就不一樣了。
程序?qū)崿F(xiàn)在中斷結(jié)束以后INT0的8個(gè)LED還是在點(diǎn)亮的,INT1的最后的一個(gè)數(shù)碼管還是點(diǎn)亮的,因?yàn)闆]有在主程序里面關(guān)掉LED和數(shù)碼管。
注意我的開發(fā)板P0口是接數(shù)碼管(是共陰極的)P2口是74HC138,P1口是LED*/
關(guān)閉窗口

相關(guān)文章