小滑头520 发表于 2012-6-16 13:43:46

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

本帖最后由 小滑头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就不能工作求大侠们帮帮忙谢谢!
                  

唯仪智能 发表于 2012-10-4 16:56:00

看看问题出在哪里?

gaoyichuan000 发表于 2012-10-5 08:28:07

这个思路好像很奇怪啊 改用AD试试吧
页: [1]
查看完整版本: 有谁用过c8050f020侧过信号的上升时间?