Timer0 模块是 8 位定时器 / 计数器,具有以下特性:
• 8 位定时器 / 计数器寄存器 (TMR0)
• 8 位预分频器 (与看门狗定时器共用)
• 可编程内部或外部时钟源
• 可编程外部时钟边沿选择
• 溢出时产生中断
/*************************************************************
@beep_;
TIMER0定时器初始化:void timer0_init(void);
相关寄存器:
TMR0:TIMER0模块寄存器
INTCON:中断寄存器
bit7:GIE 全局中断使能/禁止
bit5:T0IE TiMER0溢出中断使能/禁止
bit2:T0IF TiMER0溢出中断标志必须用软件清除
OPTION_REG:
T0CS:时钟源选择
1:GP2引脚电平跳变
0:FOSC/4
T0SE:GP2时钟源边沿选择
PSA:预分频器分配
1:分给WDT
0:分给TIMER0模块
PS<2:0>预分频比选择位
value TIMER0 WDT
000 1:2 1:1
001 1:4 1:2
010 1:8 1:4
011 1:16 1:8
...
2ms/tick:
系统时钟:FOSC=4MHZ
TIMER0时间:1us,TIR0延时2us,8分频.溢出中断.
tick=(0Xff-0X08)*8=2000us.
*************************************************************/
void timer0_init(void)
{
GIE=0; //关闭全局中断
OPTION_REGbits.T0CS=0;
OPTION_REGbits.PSA=0;
OPTION_REGbits.PS=0x02;
TMR0=C_Timer0;//C_Timer0=0x08;
T0IF=0; //TiMER0溢出中断标志必须用软件清除
T0IE=1; //TiMER0溢出中断使能
GIE=1; //打开全局中断
}
关键字:PIC12系列 TIMER0 定时器 初始化设置
引用地址:
PIC12系列 TIMER0定时器初始化设置
推荐阅读最新更新时间:2024-03-16 16:10
ATmega8 定时器 中断 外部中断 程序
4MHZ时钟 #include iom8v.h #include macros.h #include stdio.h #include stdlib.h #include string.h #include lcd1602.h int getKeyBoardValue( void ) { return(0); } /*定时器1中断服务程序*/ #pragma interrupt_handler Timer1_ovf:9 void Timer1_ovf( void ) { TCNT1H = (65535 - 20000) / 256; /* 5ms */ TCNT1L = (6
[单片机]
89C51单片机之定时器0、1控制LED1、0.5秒闪烁
1.proteus仿真图 2.keli代码 #include reg51.h sbit led1=P0^0; sbit led2=P1^0; int count0,count1; //定时器0溢出中断程序 void timer0() interrupt 1 //定时器0中断标志位为1 { //重新装载定时器0计数初值 TH0=(65536-50000)/256; TL0=(65536-50000)%256; if(count0==10) //T0*10=1s LED1闪烁 { led1=~led1; count0=0; } count0++; } //定时
[单片机]
STM32Cube开发-PWM
上一章我们讲解了定时器的基本应用,以及定时器中断。这一章我们讲解通过定时器控制管脚输出PWM信号,控制LED实现呼吸灯。 1. PWM简介 脉冲宽度调制(PWM),是英文“ Pulse Width Modulation” 的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制, PWM 原理如图所示: 上图就是一个简单的 PWM 原理示意图。图中,我们假定定时器工作在向上计数 PWM模式,且当 CNT CCRx 时,输出 0,当 CNT =CCRx 时输出 1。那么就可以得到如上的 PWM示意图:当 CNT 值小于 CCRx 的时候, IO 输出低电平(0),当
[单片机]
STM32CUBEMX开发GD32F303(13)----定时器TIM捕获PWM测量频率与占空比
概述 本章 STM32 CUBEMX配置STM32F103,并且在 GD32 F303中进行开发,同时通过开发板内进行验证。 本章STM32CUBEMX配置STM32F103输出PWM,同时使用 TI M测量PWM频率和正占空比。 最近在弄ST和GD的课程 。 生成例程 这里准备了自己绘制的开发板进行验证。 查看原理图,PA9和PA10设置为开发板的串口。 配置串口 查看原理图,PB0设置为PWM输出管脚,PB10设置为定时器输入捕获管脚。 配置时钟树 配置时钟为64M。 配置PWM 配置定时器1输出pwm的频率为1K。 配置输入捕获 开启中断 keil配置 microlib 进行了高度优化以
[单片机]
AVR定时器1快速PWM模式设置
简单归纳一下: 快速PWM,是由匹配值和TOP 值决定的。而TOP值可以是固定的(方波产生模式5,6,7),又或者可编程(方波产生模式14,15)。方波产生模式5,6,7 分别对应0x00ff,0x01ff,0x03ff 的TOP 值,而模式14,15 的TOP 值分别为1CR1,和OCR1A 来决定。从视频教程中我们知道模式15 需要牺牲OC1A 作为代价,(OC1A=PD5)OCR1A 决定了PWM 输出的频率,而OCR1B 决定了PWM 不同的占空比输出。换一句话说,OCR1A 是OCR1B 求出占空比的参考值。(上一页有详细的介绍),虽然OC1A 被牺牲了,但是,OC1A 还可以很合理的设置依然可以工作于近似CTC 模
[单片机]
51单片机(十九)—— 定时器1实例测试
在本文中,我们对51单片机的定时器1进行测试。用定时器1来定时,并用来控制LED闪烁。定时器1的初始化代码如下所示。 void init_T1(void) { TMOD|= 0x10; //使用方式1,16位定时器 TH1=(65536-50000)/256; //给TH1和TL1初初值,计数器由15536开始计数,到65535溢出 TL1=(65536-50000)%256; //外部晶振为12MHz,对应的延时时间为50ms EA=1; //总中断打开 ET1=1; //定时器中断打开 TR1=1; //定时器开关打开 } 采用中断方式对T1的溢出事件进行处理,中断
[单片机]
单片机定时器-遥控器解码程序分析
一、前言 利用STC公司1T内核的STC12C08S2 单片机对一款遥控器进行解码,将解码的数据转换为以us为单位的时间通过单片机串口通讯发送到STC下载软件自带的串口调试工具接收框进行显示。 本文主要对测试结果进行展示与分析并对单片机控制程序进行分析,以此起到抛砖引玉的作用,希望读者理解程序以后可以利用单片机对身边的任意一款遥控器进行解码并将遥控器与单片机的实际应用联系在一起。 二、测试结果展示 1、实验材料介绍 实验材料硬件部分 软件部分 为KEIL V2 编程软件 和 单片机程序下载软件STC_ISP_V479 为了高效率学习程序编写,本实验平台采用单片机教程网的51hei-5单片机开发
[单片机]
STM8S103定时器1,定时器2多路PWM波输出
一、时钟配置 1、STM8S的4种时钟源可用做主时钟: ● 1-24MHz高速外部晶体振荡器(HSE) ● 最大24MHz高速外部时钟信号(HSE user-ext) ● 16MHz高速内部RC振荡器(HSI) ● 128KHz低速内部RC(LSI) STM8默认时钟源为16MHz高速内部RC振荡器(HSI) 对 CLK_CKDIVR设置可以设置时钟为HSI的分频 如 CLK_CKDIVR|= (uint8_t)0x00;/*设置时钟为内部16M高速时钟*/ 2分频为 CLK_CKDIVR=0x08;4分频为 CLK_CKDIVR=0x10;8分频为 CLK_CKDIVR=0x18; 二、定时器1设置
[单片机]