jiongeyes 发表于 2011-3-24 14:51:15

STC12C2052AD做PCA捕获中断怎么就是不能进入中断呢

程序如下:
#include<stc.h>

sbit LED_R = P1^3;

void main(void)
{
        P1M0 = 0x00;
        P1M1 = 0x00;
        P3M0 = 0x00;
        P3M1 = 0x00;
        CMOD = 0x10;                //pca空闲模式下停止工作,时钟源FOSC/12,禁止PCA中断
        CCON = 0x00;               
        CH = 0x00;
        CL = 0x00;                        //清零CH CL
        CCAPM1 = 0x31;                //PCA1(P3.5)上跳变触发,使能CCF1中断
        CCAP1H = 0x00;
        CCAP1L = 0x00;
        LED_R = 0;
//        EPCA_LVD = 1;
        EA = 1;
        CR = 1;

        while(1);
}

void PCA_LVD_Routine(void) interrupt 6
{
        CR = 0;
         LED_R = ~LED_R;
        CCF1 = 0;
        CR = 1;
}

我选型是用AT89S52寄存器位都有改过都正确,但就是不能进入中断,求解

xiaowu191 发表于 2011-3-24 17:28:22

//        EPCA_LVD = 1;

这个干嘛消掉了

jiongeyes 发表于 2011-3-24 17:31:19

回复【1楼】xiaowu191 小屋
-----------------------------------------------------------------------

因为试过也没有用,这个是低压中断,所以就消掉了

xiaowu191 发表于 2011-3-24 17:37:38

要使能ECCF1,EPCA_LVD,EA,才能进入PCA1捕获中断,进入之后最好判断一下;
而且中断标志CCF1是必须要软件清零的

xiaowu191 发表于 2011-3-24 17:38:22

回复【2楼】jiongeyes书册糕
-----------------------------------------------------------------------

那个是低压检测和pca模块共用的

xiaowu191 发表于 2011-3-24 18:00:48

看了以前用12c54写的,没什么差别((CMOD = 0x10;)?CIDL是第7位,不是第4位);

只是我把端口配置为输入了,试一下P3M0|=0x20;

jiongeyes 发表于 2011-3-25 09:42:20

回复【5楼】xiaowu191 小屋
-----------------------------------------------------------------------

谢谢,我把端口改为输入就成功了

jiongeyes 发表于 2011-3-25 09:53:39

奇怪我不开EA就不会进入中断,但我不开CR还是会运行PCA,一样进入中断,这又是为什么
CR只是启动计数器阵列进行控制位,那是不是做为捕获模式就不用启动呢,而我现在这种情况(不开CR还是进入中断)是不是属于计数器溢出中断呢

davidtaoism 发表于 2012-6-7 21:19:16

jiongeyes 发表于 2011-3-25 09:53 static/image/common/back.gif
奇怪我不开EA就不会进入中断,但我不开CR还是会运行PCA,一样进入中断,这又是为什么
CR只是启动计数器阵列 ...

ea是总中断,不开当然不会进入。cr不开,会因为ccfn溢出中断,因为两个是公用一个中断序号6的
页: [1]
查看完整版本: STC12C2052AD做PCA捕获中断怎么就是不能进入中断呢