色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > PIC16F877A TIMER1計數(shù)操作

          PIC16F877A TIMER1計數(shù)操作

          作者: 時間:2016-11-11 來源:網(wǎng)絡 收藏
          /**********************

          Title:PIC16F877A TIMER1計數(shù)操作
          Author:hnrain
          Date:2010-12-28

          本文引用地址:http://cafeforensic.com/article/201611/316848.htm

          使用前置分頻器
          T1CKPS1 T1CKPS1
          0 0 1 分頻 TMR1時鐘為晶振時鐘/(4*1)
          0 1 2 分頻 TMR1時鐘為晶振時鐘/(4*2)
          1 0 4 分頻 TMR1時鐘為晶振時鐘/(4*4)
          1 1 8 分頻 TMR1時鐘為晶振時鐘/(4*8)
          TMR1是16位寬度的TMR1由2個8位的可讀寫的寄存器TMR1H和TMR1L組成。

          TMR1有專門的啟停控制位TMR1ON,通過軟件可以任意啟動或暫停TMR1計數(shù)功能。

          T1CON:TIMER1 CONTROL REGISTER

          bit7-6 unimplemented :Read as ‘0’

          bit5-4 T1CKPS1:T1CKPS0:Timer1 input Clock Prescale Select bits

          11=1:8 prescale value

          10=1:4 prescale value

          01=1:2 prescale value

          00=1:1 prescale value

          bit3 T1OSCEN:Timer1 Oscillator Enable Control bit

          1 = Oscillator is enable

          0 = Oscillator is shut-off

          bit2 T1SYNC:Timer1 External Clock Input Synchronization Control bit

          when TMR1CS = 1

          1= Do not synchronize external clock input

          0= Synchronize external clock input

          when TMR1CS = 0

          This bit is ignored .Timer1 uses the internal clock when TMR1CS = 0.

          bit1 TMR1CS:Timer1 Clock Source Select bit

          1 = External clock from pin RC0/T1OSO/T1CKI

          0 = Internal clock

          bit0 TMR1ON:Timer1 on bit

          1 = enables timer1

          0 = stops timer1
          說明:作用在TMR1的計數(shù)狀態(tài),計數(shù)信號從RC0/T1CKI輸入,
          當來一個上升沿時,采集到一個有效的信號,計數(shù)到TMR1L,TMR1H中。
          當計滿時就會產(chǎn)生中斷信號。
          ***********************/
          #include
          #include "../head/config.h"

          __CONFIG(HS&WDTDIS&LVPDIS&PWRTEN);

          void main(void)
          {
          T1CKPS0 = 0;
          T1CKPS1 = 0;//不分頻

          TMR1L = (65536 - 1)%256;//TMR1L,TMR1H賦初值
          TMR1H = (65536 - 1)/256;
          T1SYNC = 1;//TMR1異步計數(shù)器
          TMR1CS = 1;
          GIE = 1;//打開全局中斷
          PEIE = 1;//打開外部中斷
          TMR1IE = 1;//TMR1中斷打開
          TMR1ON = 1;
          PORTD = 0x00;
          TRISD = 0x00;
          while(1){}
          }

          void interrupt ISR(void)
          {
          TMR1L = (65536 - 1)%256;//重新賦值
          TMR1H = (65536 - 1)/256;
          if(TMR1IE && TMR1IF)
          {
          TMR1IF = 0;
          PORTD = ~PORTD;
          }
          }



          評論


          技術專區(qū)

          關閉