2016年8月12日 星期五

DIY - PIC24:PIC24FJ64GA008 Timer1 程式(四十)

DIY - PIC24PIC24FJ64GA008 Timer1 程式(四十): 

Microchip PIC24FJ64GA008 Timer1 A類型計時器是16-bit Timer0 ~ 65535),計時器程式是會使用到中斷服務。計時器都是基於系統時鐘作基準,在計時器模式下,首先使用 PRx 寄存器設定的預設時間,預分頻器設置,然後啓動計時器,計時器的數值在每個指令週期都會遞增,當計時器的數值遞增至 PRx 寄存器預設數值,便會觸發中斷服務程式,處理完成中斷服務程式,計時器便會重置,數值從新開始遞增。

PIC24FJ64GA008 Timer1 程式
配置 Timer1 
1TON 位置 1 = 1)。 
2 使用 TCKPS1:TCKPS0 位選擇計時器的預分頻比。
3 使用 TCS TGATE 位元選擇時鐘和門控模式。 
4 TSYNC 位置 1 或清零分別配置為同步或非同步操作。 
5 將計時器的週期值裝載到 PR1 寄存器。 
6 如果需要中斷,將中斷允許位 T1IE 1。使用優先級 T1IP2:T1IP0 位設置中斷優先順序。

Microchip PIC24FJ64GA008 Timer1 初始化程式:
#include                    // timer.h

// Initialise Timer1  
        CloseTimer1();               // Timer1 Close
        ConfigIntTimer1(T1_INT_ON);  // Timer1 Interrupt ON
        SetPriorityIntT1(1);           // Set Interrupt Priority 0~7
        OpenTimer1
        (
           T1_ON &                   // Timer1 ON
           T1_IDLE_CON &            // Idle Time Continue Run
           T1_GATE_OFF &            // Timer Gate Time Accumulation OFF/ON
           T1_PS_1_64 &              // Prescaler 1:1/8/64/256
           T1_SYNC_EXT_OFF &       // Synchronize External Clock Input OFF/ON
           T1_SOURCE_INT,           // Timer1 Source Oscillator INT/EXT
           0x5000                    // PR1=0~65535
        );

Microchip PIC24FJ64GA008 Timer1 中斷程式
int t1;
// Timer1 Interrup
void __attribute__((interrupt, no_auto_psv)) _T1Interrupt(void) {

IFS0bits.T1IF = 0;

SetDDRamAddr(0x40);
WriteNbXLCD(t1);
t1++;
}

Microchip PIC24FJ64GA008 Timer1 程式運作中
2016年 8月 12日 天氣報告
氣溫:26.9@ 20:40
相對濕度:百分之 84%
天氣:微雨

沒有留言:

張貼留言