首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

单片机电子钟,外部中断进不去的缘故求指导

2013-03-25 
单片机电子钟,外部中断进不去的原因求指导#include reg52.h#include sure.hextern void GetTimer()ex

单片机电子钟,外部中断进不去的原因求指导
#include <reg52.h>
#include <sure.h>
extern void GetTimer();
extern void InitTimer();
extern void delay(unsigned int i);
extern void TS();
void display();
 
unsigned char code  Disp_Tab[] = { 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff}; 
unsigned long idata D[6], Led[8];
unsigned int z=0;
unsigned int TIM;


void system_Ini()
{
    TMOD = 0x11;
    TH0 = 0xFE; //11.0592M
    TL0 = 0x0B;
IE = 0x8B;//开启T0,T1,外部中断1
    TR0 = 1;
TH1=0xc1;
TL1=0x7f;
TCON=0xf2;//开启T0,T1,IE1(低电平有效)

}


void display()
{  
     unsigned int i,j;
 /********以下将分/秒中数据送到LED数码管显示*************/
     //D[0]秒  D[1]分 D[2]时 
     Led[0]=Disp_Tab[10];
     Led[1]=Disp_Tab[10];
     Led[2]=Disp_Tab[D[2]%100/10];
     Led[3]=Disp_Tab[D[2]%10]&0x7f;
 
 Led[4]=Disp_Tab[D[1]%100/10];
     Led[5]=Disp_Tab[D[1]%10]&0x7f;
     Led[6]=Disp_Tab[D[0]%100/10];
     Led[7]=Disp_Tab[D[0]%10];  

  for( i=0; i<8; i++) 
 { P1 = Led[i];

  switch(i)   
     {    
case 0:LS138A=0; LS138B=0; LS138C=0; break;         
        case 1:LS138A=1; LS138B=0; LS138C=0; break;             
        case 2:LS138A=0; LS138B=1; LS138C=0; break; 
        case 3:LS138A=1; LS138B=1; LS138C=0; break; 
case 4:LS138A=0; LS138B=0; LS138C=1; break;
case 5:LS138A=1; LS138B=0; LS138C=1; break;
case 6:LS138A=0; LS138B=1; LS138C=1; break;
case 7:LS138A=1; LS138B=1; LS138C=1; break;

     }
 
     for (j = 0 ; j<250 ;j++) { ;}
  }

     P1 = 0XFF;
}

main()

   system_Ini();
   InitTimer();    
   while(1);
   {
 
 
    }
}

void int0() interrupt 0  //外部中断0
{    
       EX0=0;
    if(change==0)  //按键是否按下
  {
  if(change==0)
  {
   z++; 
      TS(); //调整函数
  while(!change);  //按键是否抬起
  }
  }
 EX0=1;
}

 /*************************************
 [ t1 (0.5ms)中断] 中断
  ------------1000/(0.02ms*250)=200Hz
*************************************/
void T1zd(void) interrupt 1  //3定时器1的中断号  1定时器0的中断号 0外部中断0 2外部中断1  4串口中断


{
 TH0 = 0xfe;    //机器周期=12/12MHz(晶振)=1μs    TH0+TL0=0xfe33=65075    定时时间=65535-65035= 500ms 
 TL0 = 0x0b;
  TIM=1;
 


void timer1() interrupt 3  //定时器中断1
{
   TH1=0xC1;  //1s 60帧   16ms  初值=65535-16000=C17F
   TL1=0x7f;
   GetTimer();
   display();
  
} 单片机 外部中断
[解决办法]
中断无法进入,首先需要用示波器观测外部中断引脚是否有触发中断的信号进来,其次再用调试器看看中断寄存器的值是否有设定好。
[解决办法]
你的全局中断开了么???貌似没有找到EA=1这句话。

热点排行