/*********PIC16F877A TMR0定时器实验2*******
使用前置分频器,为实现精确定时,不应对TMR0进行重复写入操作
PS2 PS1 PS0
0 0 0 2 分频
0 0 1 4 分频
0 1 0 8 分频
0 1 1 16 分频
1 0 0 32 分频
1 0 1 64 分频
1 1 0 128分频
1 1 1 256分频
TMR0用作定时器时,定时器时钟=系统时钟/4
前置分频器分配给TMR0,对输入时钟256分频
如果MCU 4MHZ ,TMR0定时频率=1000000/(256*256)
*******************************************/
#include <pic.h>
#include "../head/config.h"
__CONFIG(HS&WDTDIS&LVPDIS&PWRTEN);
//HS振荡,禁止看门狗,低压编程关闭,启动延时定时器
void main(void)
{
PSA = 1;
PS2 = 0;
PS1 = 1;
PS0 = 1;
T0CS = 0;
TMR0 = 0;
GIE = 1;
T0IE = 1;
PORTD = 0x00;
TRISD = 0xfe;
while(1){}
}
void interrupt ISR(void)
{
static uint16 microSec = 0;
if(T0IE && T0IF)
{
T0IF = 0;
if(++microSec > 500)
{
microSec = 0;
PORTD = ~PORTD;
}
}
}
/*********PIC16F877A TMR0定时器实验2******* 使用前置分频器,为实现精确定时,不应对TMR0进行重复写入操作 PS2 PS1 PS0 0 0 0 2 分频 0 0 1 4 分频 0 1 0 8 分频 0 1 1 16 分频 1 0 0 32 分频 1 0 1 64 分频 1 1 0 128分频 1 1 1 256分频 TMR0用作定时器时,定时器时钟=系统时钟/4 前置分频器分配给TMR0,对输入时钟256分频 如果MCU 4MHZ ,TMR0定时频率=1000000/(256*256) *******************************************/ #include <pic.h> #include "../head/config.h" __CONFIG(HS&WDTDIS&LVPDIS&PWRTEN); //HS振荡,禁止看门狗,低压编程关闭,启动延时定时器 void main(void) { PSA = 1; PS2 = 0; PS1 = 1; PS0 = 1; T0CS = 0; TMR0 = 0; GIE = 1; T0IE = 1; PORTD = 0x00; TRISD = 0xfe; while(1){} } void interrupt ISR(void) { static uint16 microSec = 0; if(T0IE && T0IF) { T0IF = 0; if(++microSec > 500) { microSec = 0; PORTD = ~PORTD; } } }