>_<:定时/计数器0使用16位定时模式,计数初值为0,计数到65536溢出,中断程序中LED取反,LED以65536*2个时钟周期为周期闪烁。
>_<:连接方式:将任意一个LED的引脚和P1.2相连
>_<:实验现象:LED以65536*2个时钟周期为周期闪烁。
1 /*-----------------------------------------------
2 名称:定时器0
3 论坛:www.doflye.net
4 编写:shifang
5 内容:通过定时让LED灯闪烁
6 ------------------------------------------------*/
7 #include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
8
9 sbit LED=P1^2; //定义LED端口
10
11 /*------------------------------------------------
12 定时器初始化子程序
13 ------------------------------------------------*/
14 void Init_Timer0(void)
15 {
16 TMOD |= 0x01; //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
17 TH0=0x00; //给定初值,这里使用定时器最大值从0开始计数一直到65535溢出
18 TL0=0x00;
19 EA=1; //总中断打开
20 ET0=1; //定时器中断打开
21 TR0=1; //定时器开关打开
22 }
23 /*------------------------------------------------
24 主程序
25 ------------------------------------------------*/
26 main()
27 {
28 Init_Timer0();
29 while(1);
30 }
31 /*------------------------------------------------
32 定时器中断子程序
33 ------------------------------------------------*/
34 void Timer0_isr(void) interrupt 1 using 1
35 {
36 TH0=0x00; //重新赋值
37 TL0=0x00;
38
39 LED=~LED; //指示灯反相,可以看到闪烁
40 }
关键字:定时器2 计数示例
引用地址:
定时器2-计数示例
推荐阅读最新更新时间:2024-03-16 15:30
stm8 uart2 串口接收中断协议解码+定时器中断
协议解码的时候,如果上位机发送数据不完整或者有错误,通过定时器中断将之接收的不完整数据清楚。定时的时间长短可有定时器觉得,ms为单位。 //初始化位毫秒单位 void Timer_Init() { TIM1_PSCRH = (unsigned char) ( ( (F_CPU / 1000) - 1) 8); /* 16M系统时钟经预分频f=fck/(PSCR+1) */ TIM1_PSCRL = (unsigned char) ( (F_CPU / 1000) - 1); /* PSCR=0x3E7F,f=16M/(0x3E7F+1)=1000Hz,每个计数周期1ms */ TIM1_ARRH = 0;
[单片机]
2. avr定时器/计数器0 --TC0 --快速PWM输出
PWM:脉冲宽度调制,图中T为脉冲周期,t为高电平时间,t与T的比值t/T称为占空比,脉宽调制指的是调整t的大小,即改变脉冲的占空比 ,占空比值越大,输出的电压越高。改变占空比就改变输出的电压,常用于实现D/A,调节电压或电流,改变电动机的转速等。 快速PWM模式:它的计数方式是TCNT0由0开始计数到255式,计数加1返回到0,然后继续加1计数,相对于相位PWM修正模式(由0计数到255,再从255计数到0),只有一个斜坡,因此PWM输出频率高。在快速PWM模式下,计数器的最大值决定了PWM的频率,而比较寄存器OCR0决定了占空比的大小。T/C0是8位计数器, 输出PWM的频率=系统时钟频率/(分频系数*255) 。 P
[单片机]
stm32定时器外部时钟3使用外部时钟源模式2进行定时的步骤
stm32中的通用定时器的计数时钟有三种,内部时钟、外部时钟源、内部触发输入这三种,其中内部时钟是大家都比较常用的,也是在应用中比较多的,我们现在主要来讲一下外部时钟源的模式2外部时钟模式2:外部触发输入。 编程步骤: 配置TIM3_ETR引脚为输入引脚PD2,硬件上需要将脉冲连接到该引脚,我这里是使用6.78MHz的晶振 配置定时器3:包括使能定时器3对应的时钟引脚,配置定时器3的周期、预分频参数 因为我们使用了定时器3中断,所以需要给定时器设置优先级,在timerx_nvic_init()中的关于TIM3部分操作 将SMCR中的ETF、ETPS、ETP和ECE进行配置 执行完了以上步骤之后还需要操作triggle中断
[单片机]
STM8S105 TIM1 TIM2 定时器的定时时间初始化
很多刚接触STM8单片机的入门者不知到如何使用TIM1和TIM2的定时器作为定时功能。 下面介绍如下: TIM1的初始化1us: 系统时钟是16M。 void set_TIM1_nus(u16 nus) { /*1u的记数周期*/ /*TIM1_TimeBaseInit(0x0F,TIM1_COUNTERMODE_UP,nus,TIM1_RCR_RESET_VALUE);*/ /* Set the Autoreload value */ TIM1- ARRH = (u8)(nus 8); TIM1- ARRL = (u8)(nus); /* Set the Prescaler value */ TIM1- PSCRH = (u
[单片机]
单片机学习之十五:定时器应用2(模式2)
一、试验现象 在P0.0输出一个周期是500us的方波信号,方波的周期由定时器T0确定。 二、试验目的 掌握内部定时/计数器作定时功能(模式2)的应用 三、试验任务分析 上一个试验我们采用了T0工作于模式1的应用,因为定时时间较长,所以T0应该选择16位的工作方式。但是在这个试验里面,定时时间很短,只有500/2=250us,所以我们可以让T0工作于方式2,即8位计数器(注:8位计数器的最长定时时间是:2^8=256us)。计数初值的计算方法和以前一样,即: 定时器工作于模式2的时候,它还有一个特性-可自动再装入定时常数。我们在上一个试验的时候发现,
[单片机]
51单片机定时器0工作在模式2
51单片机定时器0工作在模式2,INT0(P3.2)引脚控制定时/计数器定时计数,定时/计数器0溢出中断,使P2.0引脚相连的LED灯闪烁。定时/计数器0溢出中断为250μs,与P2_0引脚相连的LED灯每2s亮灭一次。源程序如下: //51hei单片机网原创作品,版权所有. #include "reg_c51.h" #define reload_value 0x06 //计数值为250,若时钟频率为12MHz,相当于250μs unsigned char hex ={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90, 0x88,0x83,0xC6,0xA1,0x86,
[单片机]
STC89C52单片机定时器2详细整理
51单片机是我自学的第一款单片机,那时正好是过春节,想起那个寒假,外面下着大雪,有时还会传来一两声爆竹的炸响,而我一个人在房间里摆弄单片机开发板,反复调试程序的时光,真是难忘! 我自认为这款单片机所有的资源中最不好搞清楚的就是定时器2,尤其是对于那些以前从来没有玩过单片机的新手。定时器2是新增资源,也是51单片机定时器里面功能最强大的一个定时器。所以掌握好定时器2还是非常有必要的。以下是在我完全搞明白它的原理和用法的基础上整理的一篇小文章。读起来,好像Datasheet一样!请原谅,希望没有辜负你的点击! 定时器2是一个16位定时器/计数器,通过设置特殊功能寄存器T2CON中的C/T2位可将其设置为定时器或是计数器;通过设
[单片机]
关于stm8定时器2的中断
定时器2定时器溢出中断开启 TIM2_ITConfig( TIM2_IT_UPDATE, ENABLE); 中断函数入口在stm8s_it.c文件中,函数名INTERRUPT_HANDLER( TIM2_UPD_OVR_BRK_IRQHeadler, 13) 进入该中断函数第一件事情就是要清除溢出状态位 TIM2_ClearFlag( TIM2_FLAG_UPDATE); 否则会不断的进入该中断函数
[单片机]