8051比较器中断

时间:2014-09-11 09:49:42

标签: microcontroller interrupt 8051

我正在使用Silicon Labs C8051F120。         下面是我用于比较器的代码。         当我减少电源时,我应该得到一个中断。         但我没有得到中断。         我怀疑初始化程序。         正常电压为5V。当电压降至4.2V时,我应该得到比较器1中断。当电压降至3.V时,我应该得到比较器0中断。         另外我很困惑为什么有两种方法可以启用比较器中断:         1)通过CPTT0MD / CPT1MD:比较器0 /比较器1模式选择         2)EIE1:扩展中断使能1     哪个使用的时间和原因?

    #define COMPARATOR_SETTLE 30

void Comp0_Init()
{

      char SFRPAGE_SAVE = SFRPAGE;
      SFRPAGE = CPT0_PAGE;
      CPT0CN = 0x83;                      // Comparator0 enabled       // 20 mV Negative hysteresis
      Delay_us (COMPARATOR_SETTLE);   // Allow CP0 output to settle for 20 us
      CP0RIF = 0;
      CP0FIF = 0;
      CPT0MD = 0x10;
      EIE1 |= 0x10;
      SFRPAGE = SFRPAGE_SAVE;

}

void Comp0_ISR(void) interrupt (10) 
{

      CP0FIF = 0;
      comp_flag = 1;

}

void Comp1_Init()
{

      char SFRPAGE_SAVE = SFRPAGE;
      SFRPAGE = CPT1_PAGE;
      CPT1CN = 0x83;                      // Comparator0 enabled       // 20 mV Negative hysteresis
      Delay_us (COMPARATOR_SETTLE);   // Allow CP0 output to settle for 20 us
      CP1RIF = 0;
      CP1FIF = 0;
      CPT1MD = 0x10;
      EIE1 |= 0x40;
      SFRPAGE = SFRPAGE_SAVE;

}

void Comp1_ISR(void) interrupt (12) 
{

      CP1FIF = 0;
      comp_flag = 2;

}

0 个答案:

没有答案