找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2508|回復: 1
打印 上一主題 下一主題
收起左側(cè)

51單片機外部中斷與定時器中斷不好使

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:493535 發(fā)表于 2019-5-6 15:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
交通燈控制器,用的外部中斷控制模式轉(zhuǎn)換,但是外部中斷1不好使,沒反應把外部中斷改為定時器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;                                                                //外部中斷擴展所需的口
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ù)
{
  uint x,y;
  for(x=z;x>0;x--)
   for(y=110;y>0;y--);
}
void timer0() interrupt 1                        //定時器初始化
{
  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()                               //主干道紅綠燈以及時間
{  uint num;
   num=15;
   display(num);
   while(num<=15&&num>=0)
   {  num--;
        P2=0xfc;
        display(num);   
   }
   ;
}
void redgreenb()                               //次干道紅綠燈以及時間
{  uint num;   
    num=10;
   while(num<=10&&num>=0)
   { P2=0xcf;   
    display(num);
    num--;
   }
   
}
void yellowa(void)                            //主干道黃燈以及時間
{
    uint a;
  for(a=4;a>0;a--)
  { P2=0xfc;
    dx=1;
    delay(100);
   dx=0;
   display(a);
  }
}
void yellowb(void)                           //次干道黃燈以及時間
{
     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ù)流程
           }
    }


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:123289 發(fā)表于 2019-5-7 11:21 | 只看該作者
“外部中斷1” 發(fā)生中斷的條件是什么呢?你給它條件了嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表