標(biāo)題: 51單片機(jī)外部中斷與定時(shí)器中斷不好使 [打印本頁]

作者: dh981226    時(shí)間: 2019-5-6 15:29
標(biāo)題: 51單片機(jī)外部中斷與定時(shí)器中斷不好使
交通燈控制器,用的外部中斷控制模式轉(zhuǎn)換,但是外部中斷1不好使,沒反應(yīng)把外部中斷改為定時(shí)器0就可以

#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar aa;                                
sbit nb=P2^2;
sbit dx=P2^3;
sbit shi=P3^6;
sbit ge=P3^7;                                                                    
bit  flag=0;
sbit P10=P1^0;                                                                //外部中斷擴(kuò)展所需的口
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
sbit P14=P1^4;
sbit P15=P1^5;
                                                                            //定義IO口
uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};         //數(shù)碼管段碼
void delay(uint z);
void display(uint n);
void yellowa(void);
void yellowb(void);
void timer0();
void redgreena();
void redgreenb();                 
                                                    //模塊函數(shù)
void delay(uint z)                               //延時(shí)函數(shù)
{
  uint x,y;
  for(x=z;x>0;x--)
   for(y=110;y>0;y--);
}
void timer0() interrupt 1                        //定時(shí)器初始化
{
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
  aa++;
  if(aa==18)
  {
   aa=0;
   flag=1;
  }
}
void display(uint n)                            //數(shù)碼管顯示函數(shù)
{
   while(!flag)
   {
    shi=0;ge=1;
    P0=table[n/10];
    delay(5);
   ge=0;shi=1;
    P0=table[n%10];
    delay(5);
   
   
    //shi=1;ge=1;
    }
   if(flag==1)
      flag=0;
}
void redgreena()                               //主干道紅綠燈以及時(shí)間
{  uint num;
   num=15;
   display(num);
   while(num<=15&&num>=0)
   {  num--;
        P2=0xfc;
        display(num);   
   }
   ;
}
void redgreenb()                               //次干道紅綠燈以及時(shí)間
{  uint num;   
    num=10;
   while(num<=10&&num>=0)
   { P2=0xcf;   
    display(num);
    num--;
   }
   
}
void yellowa(void)                            //主干道黃燈以及時(shí)間
{
    uint a;
  for(a=4;a>0;a--)
  { P2=0xfc;
    dx=1;
    delay(100);
   dx=0;
   display(a);
  }
}
void yellowb(void)                           //次干道黃燈以及時(shí)間
{
     uint a;
for(a=3;a>0;a--)
  {  P2=0xcf;
    nb=1;
    delay(100);
    nb=0;
    display(a);
  }
}
void int0() interrupt 2          //緊急模式與夜間模式函數(shù)
{     
  if(!P12)
{     
   P2=0x0c;
}
   if(!P11)
{      
    P2=0x03;
   }
}

void main()
{
  uint num;
  num=0;
  aa=0;
  TMOD=0x01;
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
  EA=1;
  ET0=1;
  TR0=1;
  EX0=1;
  IT0=0;
  EX1=1;
  IT1=0;
    PX1=1;
  PT0=0;
                                                //中斷初始化
  while(1)
  { //P1=0x00;
   P2=0xff;
   redgreena();
//P0=1;   
   yellowa();
   redgreenb();
   yellowb();         //函數(shù)流程
           }
    }



作者: yzwzfyz    時(shí)間: 2019-5-7 11:21
“外部中斷1” 發(fā)生中斷的條件是什么呢?你給它條件了嗎?




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1