日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]----------------------------------------------------------timer 0----------------------------------------------------------TMR0為8位寬,有一個可選的預(yù)分頻器,用于通用目的,可用于定時和計數(shù)。TMR1為16位

----------------------------------------------------------timer 0----------------------------------------------------------

TMR0為8位寬,有一個可選的預(yù)分頻器,用于通用目的,可用于定時和計數(shù)。

TMR1為16位寬,附帶一個可編程的預(yù)分頻器和一個可選的低頻時基振蕩器,適合與CPP模塊配合使用來實現(xiàn)輸入捕扣或輸出比較功能,也可于定時和計數(shù)。

TMR2為8位寬,附帶一個配合使用來實現(xiàn)PWM脈沖寬度調(diào)制信號的產(chǎn)生,只能用于定時。

TMR0用作定時器時,定時器時鐘=系統(tǒng)時鐘/4;
寫TMR0時,會產(chǎn)生2個周期的的延時,如果不使用前置分頻器,可通過設(shè)置
初值進行補償。
例如 需要定時200個時鐘周期時,TMR0 = 256 -200 + 2= 58

OPTION_REG:

bit5 T0CS:TMR0 Clock Source Select bit

1 = Transition on T0CKI pin

0 = Internal instruction cycle clock(CLKO)

bit 4 T0SE:TMR0 Source Edge Select bit

1 = Increment on high-to-low transition on T0CKI pin

0 = Increment on low-to-high transition on T0CKI pin

bit 3 PSA:Prescaler Assignment bit

1 = Prescaler is assigned to the WDT

0 = Prescaler is assigned to the Timer0 module

bit2-0 PS2:PS0:Prescaler Rate Select bits

任何時候?qū)MR0寄存器進行一次寫操作后,其計數(shù)功能將被禁止2個指令周期。

給大家一個意見:如果想用TMR0實現(xiàn)精確的定時,一旦用了預(yù)分頻器后就不要對TMR0做任何寫操作。

注意:在中斷服務(wù)程序中查詢TMR0中斷時,既要查詢T0IE位,還要查詢T0IF位。

uint16 count = 0;
void main(void)
{
PSA = 1;//prescaler is assigned to the WDT
T0CS = 0;//Internal instruction cycle clock

TMR0 = 58;//timer 200 cycle clock

GIE = 1;//global interrupt enable
T0IE = 1;//TMR0 interrupt enable

PORTD = 0x00;
TRISD = 0x00;

while(1)
{}
}

void interrupt ISR(void)
{
if(T0IE && T0IF)
{
T0IF = 0;
count++;
if(count ==15530) // 大于1s左右,led閃 爍一次。
{
count = 0;
PORTD = ~PORTD;
}
TMR0 = TMR0 + 58;
}
}

---------------------------------------------timer1--------------------------------------

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

使用前置分頻器
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輸入,
當(dāng)來一個上升沿時,采集到一個有效的信號,計數(shù)到TMR1L,TMR1H中。
當(dāng)計滿時就會產(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;
}
}

/*使用MPLAB X IDE V1.85 , XC8 compiler,PICKit 3, target的外部晶振12MHz,power 使用kit3提供5VTimer1 的time計時功能*/#include#pragma config FOSC = HS //#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)#pragma config LVP = ON // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled)#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)#defineucharunsignedchar#defineuintunsignedintvoiddelay(uintx)//1ms{uinty,z;for(y=x;y>0;y--)for(z=25;z>0;z--);}voidinit(void){T1CON=0x01;//使能定時器1,時鐘為外部晶振四分頻PIE1|=0x01;//允許中斷INTCON|=0xc0;//開全局中斷和第一外設(shè)中斷 GIE =1,PIE1 = 1;TMR1H=15536/256;//50ms初值TMR1L=15536%256;}voidinterrupttimer1(void){if(TMR1IE&&TMR1IF){TMR1H=(65535-50000)/256;TMR1L=(65535-50000)%256; TMR1IF=0;//中斷標(biāo)志位清零// ISR 相應(yīng)的中斷處理 }}voidmain(void){ init();while(1);}--------------------------------------------Timer2-------------------------------------------

TMR2的寬度與TMR0一樣的也是8位,一般伴隨著CCP模塊和PWM功能一起出現(xiàn)。

8位寬度的TMR2定時器有一個前置預(yù)分頻器和后置預(yù)分頻器,同時還有一個周期控制寄存器與它配合一起實現(xiàn)針對單片機指令周期的計數(shù)。

TMR2只能作為定時器使用,無法對外部輸入的脈沖作計數(shù)。

TMR2定時器與TMR0相比,最大的區(qū)別是TMR2有一個周期的控制寄存器PR2。PR2寄存器可以設(shè)定定時器的上限值。只要當(dāng)TMR2的計數(shù)值和PR2的設(shè)定值相等時就會自動歸0,同時產(chǎn)生一個中斷。

當(dāng)TMR2的計數(shù)值與PR2寄存器中所設(shè)定的數(shù)值相一致后,一睛個計數(shù)脈沖,的到來應(yīng)會讓TMR2溢出歸0,注意:一個計數(shù)溢出歸0后,并不一定產(chǎn)即產(chǎn)生TMR2IF中斷標(biāo)志,何時產(chǎn)生中斷標(biāo)志將取決于后分頻器的分頻比。如果選擇的后分頻比為1:8,則TMR2計數(shù)溢出8次后才產(chǎn)生1次中斷。

//前分頻器
//T2CKPS1 T2CKPS0
// 0 0 1 分頻 TMR1時鐘為晶振時鐘/(4*1)
// 0 1 4 分頻 TMR1時鐘為晶振時鐘/(4*4)
// 1 x 16 分頻 TMR1時鐘為晶振時鐘/(4*16)
//后分頻器
//TOUTPS3 TOUTPS2 TOUTPS1 TOUTPS0
// 0 0 0 0 1 分頻
// 0 0 0 1 2 分頻
// 0 0 1 0 3 分頻
// 0 0 1 1 4 分頻
// 0 1 0 0 5 分頻
// 0 1 0 1 6 分頻
// 0 1 1 0 7 分頻
// 0 1 1 1 8 分頻
// 1 0 0 0 9 分頻
// 1 0 0 1 10分頻
// 1 0 1 0 11分頻
// 1 0 1 1 12分頻
// 1 1 0 0 13分頻
// 1 1 0 1 14分頻
// 1 1 1 0 15分頻
// 1 1 1 1 16分頻

關(guān)于PIC16F877A 的時鐘問題,我還是沒搞懂,調(diào)整config bits的Fsoc,只有HS可以使用,其它選項均提示:“Programming/Verify completeThe target device is not ready for debugging. Please check your configuration bit settings and program the device before proceeding.”?Key:原因在PIC16F877A的時鐘設(shè)置 根據(jù)crystal大小設(shè)定相應(yīng)的configuration bits。8M~16MHz 屬于HS配置,詳見PIC16F877a的datasheet的145頁,關(guān)于crystal的講解。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉