📄 timer0.c
字号:
#include <pic.h>
/*
* Example code for using timer0 on a 17C756
* Just sets up a 1 second interrupt and increments a variable
*/
/*
* Calculate preload value for one second timer
*/
#define PERIOD 1000000 // period in uS - one second here
#define XTAL 4000000 // crystal frequency - 4MHz
#define ICLK (XTAL/4) // crystal is divided by four
#define SCALE 16 // prescale by 16 - check for overflow!
#define PRELOAD PERIOD*ICLK/SCALE/1000000
unsigned long seconds; // second count
/* service routine for timer 0 interrupt */
void interrupt
timer0_isr(void) @ 0x10
{
seconds++;
TMR0 += -PRELOAD; // re-load timer
// no need to clear T0IF - the hardware did it
}
main()
{
// initialize timer 0;
T0STA = 0b01000; // prescale by 16
T0CS = 1; // select internal clock
TMR0 = -PRELOAD; // preload timer
T0IE = 1; // enable timer interrupt
GLINTD = 0; // enable global interrupts
for(;;)
continue; // let interrupt do its job
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -