请各位高手帮帮忙,我是刚学PIC单片机的,下面是我写的...

2020-02-08 09:05发布

我主要是简单的试验一下CCP1(捕捉工作)各寄存器初值正确没,但是我把下面的程序放进仿真里面没反应,每捕捉一次,就对变量Count加1,然后在LED(RD口)上显示
变量的值,我用的是PIC18F46K22的单片机,希望各位高手帮帮忙,找找原因,谢谢了!
#include<pic18.h>

unsigned int Count=0;

void delay(void)
{
        unsigned char i,j;
        for(i=0;i<30;i++)
                for(j=0;j<250;j++)
                        ;
}

void CCP1_INIT(void)
{
        CCP1CON = 0x05;//捕捉模式,每个上升沿捕捉
        CCPTMRS0 = 0x08;//CCP1使用Timer1为定时器,CCP2使用Timer3定时器
        PIR1bits.CCP1IF = 0;//捕捉标志清零
        PIE1bits.CCP1IE = 1;//允许捕捉中断
        IPR1bits.CCP1IP = 1;//高优先级
       
        T1CON = 0x023;//Timer1使能一次16位操作进行寄存器读写,F = Fsoc/4,使能TMR1
        TMR1L = 0;//计数器放初始值
        TMR1H = 0;
        PIR1bits.TMR1IF = 0;//计数器标志清零
        PIE1bits.TMR1IE = 1;//允许定时器TMR1溢出中断
        IPR1bits.TMR1IP = 1;//高优先级       
}

void main(void)
{
        CCP1_INIT();
        TRISD = 0x00;
        LATD = 0xff;
        delay();
        while(1)
        {
                LATD = Count;
                delay();
                LATD = 0x00;
                delay();
        }
}

void interrupt Ccp1(void)
{
        if(CCP1IF==1)
        {
                CCP1IF = 0;
                Count++;
        }
        if(TMR1IF==1)
        {
                               xxxxxxxxxxx
        }
}
0条回答

一周热门 更多>