新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > PIC16位單片機CAN(7)定時器

        PIC16位單片機CAN(7)定時器

        作者: 時間:2016-11-13 來源:網絡 收藏
        定時器相對來說是最簡單的了,也沒有什么說的,
        每個定時器模塊都是 16 位定時器 / 計數器,由以下可讀 / 寫寄存器組成:
        ? TMRx:16 位定時器計數寄存器
        ? PRx:與定時器相關的 16 位定時器周期寄存器
        ? TxCON:與定時器相關的 16 位定時器控制寄存器
        需要注意的是:
        1:定時器是16位了,也可以配置為32位的,具體看文檔,這里使用16位的定時器。
        2:PRx:與定時器相關的 16 位定時器周期寄存器。也就是TMRx的值和PRx值相等時產生中斷?!?/div>
        下面看程序:
        /******************************************************************
        初始化Time1為定時器模式
        參數:
        ******************************************************************/
        void Time1Init(void)
        {
        T1CONbits.TON = 0; // Disable Timer
        T1CONbits.TCS = 0; // Select internal instruction cycle clock
        T1CONbits.TGATE = 0; // Disable Gated Timer mode
        T1CONbits.TCKPS = 0b11; // Select 1:256 Prescaler
        TMR1 = 0x00; // Clear timer register
        PR1 =46875; // Load the period value 相當于1秒產生一次中斷
        T1CONbits.TON = 1; // Enable Timer
        }
        中斷處理函數為
        /******************************************************************
        定時器1中斷 1s中斷一次 發送一次CAN數據
        參數:
        ******************************************************************/
        void __attribute__((__interrupt__, no_auto_psv)) _T1Interrupt(void)
        {
        IFS0bits.T1IF = 0; //Clear Timer1 interrupt flag
        Ecan1_WriteMessage(AD_Data);//CAN發送數據
        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 辽阳县| 乌兰县| 宁晋县| 八宿县| 芒康县| 平江县| 社旗县| 鸡泽县| 怀安县| 得荣县| 广饶县| 黔东| 顺昌县| 巴楚县| 页游| 灌云县| 洪湖市| 益阳市| 荃湾区| 南昌市| 隆昌县| 柞水县| 商南县| 苍梧县| 比如县| 永福县| 贵阳市| 枣阳市| 崇仁县| 赣州市| 手游| 白水县| 淄博市| 教育| 曲水县| 将乐县| 雷山县| 嘉善县| 罗甸县| 长海县| 楚雄市|