单片机/MCU论坛
直播中

hau

6年用户 7经验值
擅长:控制/MCU
私信 关注

大神帮我看看,这个Timer1定时器哪里错了?上电后只执行一次从灭到亮,之后就一直亮着。MPLAB X IDE v4.15编的

本帖最后由 xinfan2468 于 2019-8-7 17:28 编辑


// PIC16F676 Configuration Bit Settings

#pragma config FOSC = INTRCIO   //INTOSC 振荡器, RA4、RA5为IO口
#pragma config PWRTE = ON      // 上电复位开
#pragma config BOREN = OFF       // 欠压检测功能关
#pragma config CPD = OFF        // 数据代码保护关
// Use project enums instead of #define for ON and OFF.
#include
void interrupt ISR(void)  //中断控制
    if(TMR1IF==1)    //中断标志位==1
{   
        TMR1H=0x0B;  //重置
        TMR1L=0xE9;  //重置
        TMR1IF=0;  //中断标志位清零
           if(RA0==0)
            {
                RA0=1;   //亮
            }
            else
            {
                RA0=0;  //灭
            }  
    }
void main()
    TRISA=0b00000100;       //RA0置输出
    PORTA=0b00000000;     //RA0低电平
    TMR1CS=0;   //Timer1使用内部时钟
    T1CKPS0=1;   //1:8倍预分频比
    T1CKPS1=1;   //1:8倍预分频比
    TMR1H=0x0B;   //置Timer1计时初始值
    TMR1L=0xE9;  // 置Timer1计时初始值
    TMR1ON=1;  //Timer1 启动控制位使能(开启)
    TMR1IF=0;  //中断标志位清零
    TMR1IE=1;  //Timer1中断开启
    PEIE=1;    //外部中断开启
    GIE=1;   //全局中断开启
    while(1)  //死循环
   {
        
     }
  }

回帖(2)

hau

2019-8-8 14:04:01
原来RA0是复用口,换成RC2就正常了
举报

alonggege

2019-8-9 13:50:17
不错,很好的经验分享,辛苦麻烦了,欠缺这方面的资料,非常感谢
举报

更多回帖

发帖
×
20
完善资料,
赚取积分