用C语言pic16f505怎样设置中断函数?请随便给个例子
发布网友
发布时间:2022-08-15 19:19
我来回答
共1个回答
热心网友
时间:2023-09-18 22:01
定时器的初始化要在中断函数外部做,作为一个功能函数,定时器的初始值一定不要在中断函数中给出啊,而是要在外部初始化函数中,这里给出的是定时器1的设置,可以做个参考
void T1Init(void)
{
T1CONbits.TON = 0; /* Stop timer */
T1CONbits.TCKPS = 0; /* Set prescaler to 1:1 */
T1CONbits.TCS = 0; /* Use internal clock */
T1CONbits.TGATE = 0; /* Disable gated time accumulation */
TMR1 = 0; /* Reset timer value */
PR1 = TIME_1MS; /* Set interupt ration,TIME_1MS为1ms 定义的宏,与时钟设置大小有关*/
IPC0bits.T1IP = 1;
IFS0bits.T1IF = 0; /* Reset interrupt flag */
IEC0bits.T1IE = 1; /* Enable interrupt */
T1CONbits.TON = 1; /* Start timer */
}
中断函数中处理定时处理的事件。
void __attribute__((interrupt))_T1Interrupt(void)
{
/* 1mS gone */
/* Handle all auxiliary timers based on 1mS clock */
Adc_1ms_Timer(); //AD采样处理函数
PwmCmd_1msTimer(); //pwm 处理函数
IFS0bits.T1IF = 0; /* Reset interrupt flag */
}