***************************
TMR0用作定时器时,定时器时钟=系统时钟/4;
写TMR0时,会产生2个周期的的延时,如果不使用前置分频器,可通过设置
初值进行补偿。
例如 需要定时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
给大家一个意见:如果想用TMR0实现精确的定时,一旦用了预分频器后就不要对TMR0做任何写操作。
注意:在中断服务程序中查询TMR0中断时,既要查询T0IE位,还要查询T0IF位。
***********************/
#include
#include "../head/config.h"
__CONFIG(HS&WDTDIS&LVPDIS&PWRTEN);
//HS振荡,禁止看门狗,低压编程关闭,启动延时定时器
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 == 1000)
{
count = 0;
PORTD = ~PORTD;
}
TMR0 = TMR0 + 58;
}
}
上一篇:PIC16F877A TMR0定时器实验2
下一篇:PIC学习5定时器
推荐阅读最新更新时间:2024-03-16 15:23
设计资源 培训 开发板 精华推荐
- PC产业驶入创新超车道,英特尔蓉城撬动AI新引擎
- 与产业聚力共赢,英特尔举行新质生产力技术生态大会
- “新”享5G-A万兆网络前沿体验 高通携手产业伙伴亮相第二届链博会
- 英飞凌推出符合ASIL-D标准的新型汽车制动系统和电动助力转向系统三相栅极驱动器 IC
- 南芯科技推出80V升降压转换器,持续深耕工业储能市场
- 法雷奥与罗姆联合开发新一代功率电子领域
- 贸泽电子开售能为电动汽车牵引逆变器提供可扩展性能的 英飞凌HybridPACK Drive G2模块
- 德州仪器新型 MCU 可实现边缘 AI 和先进的实时控制, 提高系统效率、安全性和可持续性
- 瑞萨推出高性能四核应用处理器, 增强工业以太网与多轴电机控制解决方案阵容
- 研华全新模块化电脑SOM-6833助力5G路测设备升级