有谁用过c8050f020侧过信号的上升时间?

2020-02-03 10:14发布

本帖最后由 小滑头520 于 2012-6-16 13:47 编辑

我用两个外部中断 INT6 INT7同时检测  INT6设置为上升沿检测 INT7下降沿检测 然后我用PCA计数 输出上升沿到下降沿的时间 但是为什么中断能检测到上升沿下降沿void INT6_ISR(void) void INT6_ISR(void) interrupt 18        //上升沿
{  
  
   P3IF&=~0x40;         //关闭外部中断6标志
   num1=1;
   
}

void INT7_ISR(void) interrupt 19
{
//  P3IF&=~0x40;
  P3IF&=~0x80; //关闭外部中断6标志
  num2=1;
}
但是加了PCA计数 下降沿这个中断就检测不出了
void PCA_Init(void)
{
EIE1 =0x08;                //使能PCA0中断  
PCA0MD =0x01;                //PCA时钟源选择        01        12分频
PCA0L =0x00;
PCA0H =0x00;
PCA0CPM0 =0x11;
PCA0CPL0 =0x00;
PCA0CPH0 =0x00;
PCA0CN =0x40;

}
下面是主函数
        void PORT_Init()
{
     //P3MDOUT   = 0xF0;
//         P0MDOUT|=0xfe;          //P0^0设置为漏极开路,数字输入
//         P0|=0x01;
        // XBR0 =0x08;
         XBR2 =0X40;
         P74OUT =0X00;
}
///中断初始化////
void INT67_Init(void)
{
           EIE2 |=0X30;
           P3IF |=0XC4;//把p3.6设置成上升沿触发 p3.7设置成下降沿触发
        }

void INT6_ISR(void) interrupt 18        //上升沿
{  
  
   P3IF&=~0x40;                   //关闭外部中断6标志
   num1=1;
   

}



void INT7_ISR(void) interrupt 19   //下降沿
{
  
  P3IF&=~0x80;                           //关闭外部中断7标志
  num2=1;
}
//////计数中断///////
void PCA_ISR(void) interrupt 9
{
   
   CCF0 =0;
   j++;  
}


void main()
{
         WDTCN = 0xde;                       // Disable watchdog timer
         WDTCN = 0xad;
         j=0;
         PORT_Init();
         oscillator_init();
         INT67_Init();
         LCD_init();
          
          EA =1;       

         while(1)
         {       
             
       
           if(num1==1)
             {
                             num1=0;
                   PCA_Init();
                    
                  }
                
                 if(num2==1)
                         {
                          PCA0CN =0x0;   //禁止计数
                          EIE1 =0x0;        //禁止pca0中断
                          num2=0;
                           j=0;          
                             }
//                 handle(); //数据处理       
         }
}        感觉是PCA_Init(); 里面的 EIE1 =0x08;                //使能PCA0中断   与程序中的一些地方冲突了 屏蔽了他就能检测到下降沿
      因为 EIE1 =0x08;是使能PCA0中断 屏蔽了他PCA就不能工作  求大侠们帮帮忙  谢谢!
                  
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。