51单片机-定时器简单运用

发布者:EnchantedBreeze最新更新时间:2021-10-14 来源: eefocus关键字:51单片机  定时器  初值 手机看文章 扫描二维码
随时随地手机看文章

1.细节


上一讲里,我们知道TH0和TL0合成的“16位的变量”的初值最小要为0,不能是负数,


所以我们要满足:65536-( x/(12/11059200) )>=0。


解得x<= 0.071111秒=71.111毫秒。


也就是用定时器的工作模式1最长的定时时间为71毫秒左右而已。


2.定时器开关


首先定时器也是有开关的,这个相当于我们的导管是否打开让水流进“试管”里。


因为我们用的是定时器0,TCON^4这个位就是控制定时器0是否打开或关闭,所以“TR0=1;”就是打开了定时器开始计时,“TR0=0;”是关闭了定时器计时功能。


只要打开了定时器,TH0和TL0合成的“16位的变量”就会每过(12/11059200)秒就自加1,直到定时器溢出。


3.溢出标志


我们的定时器0一旦溢出,TCON^5就会被置1(TF0==1),如果我们不使用中断函数也是可以在主函数里等待判断“if(TF0==1)”。TF0跟外部中断0的IE0一样,被置1了需要软件清零。


4.工作模式1的代码


这里我们用定时器0来实现间隔50ms的流水灯实验


#include  

#include //详见第六章第8讲

 

void main()

{   

    u8 i=0;

    LED_Init();   //初始化LED硬件模块 

    TMOD = 0x01;  //设置定时器0为工作模式1

    TH0  = 0x4C;  //设置定时时间为50ms

    TL0  = 0x00;

    TR0  = 1;     //启动定时器0

     

    while(1)

    {

        if (TF0 == 1)     //判断定时器0是否溢出,每隔50ms就可以进入一次这个if语句

        {

            TF0 = 0;      //定时器0溢出后,清0溢出标志

            TH0 = 0x4C;   //重新赋初值,保证下次溢出间隔时间还是50ms

            TL0 = 0x00;

            P0=~(0x01<            i++;

        }   

        if(i>=8)i=0;

    }

}


5.定时器1的使用


如果我们用定时器1实现上处代码同样的功能,那么TMOD只要初始化为“TMOD=0x10;”


还有把TH0,TL0,TR0,TF0这些全部改为TH1,TL1,TR1,TF1即可,所以说这两个定时器的工作原理都是一样的。


#include  

#include //详见第六章第8讲

 

void main()

{   

    u8 i=0;

    LED_Init();   //初始化LED硬件模块 

    TMOD = 0x10;  //设置定时器1为工作模式1

    TH1  = 0x4C;  //设置定时时间为50ms

    TL1  = 0x00;

    TR1  = 1;     //启动定时器1

     

    while(1)

    {

        if (TF1 == 1)     //判断定时器1是否溢出,每隔50ms就可以进入一次这个if语句

        {

            TF1 = 0;      //定时器1溢出后,清0溢出标志

            TH1 = 0x4C;   //重新赋初值,保证下次溢出间隔时间还是50ms

            TL1 = 0x00;

            P0=~(0x01<            i++;

        }   

        if(i>=8)i=0;

    }

}


关键字:51单片机  定时器  初值 引用地址:51单片机-定时器简单运用

上一篇:51单片机-定时时长的作法
下一篇:51单片机-定时器工作模式2

推荐阅读最新更新时间:2024-11-16 21:08

51单片机输出PWM的两种方法
51系列单片机无PWM输出功能,可以采用定时器配合软件的方法输出。对精度要求不高的场合,非常实用。电路图见图一,采用了高速光隔(6N137)输出,并将PWM的信号倒相。 一、原理图 图一 二、固定脉宽PWM输出 用T0定时器完成PWM输出,脉宽固定:65536微妙。T0定时器设置成:16位定时器 PWM: 程序清单:(12MHz) PwmData0 ;T0定时t1所需的定时初值(字) PwmData1 ;T0定时t2所需的定时初值(字) PwmF ;PWM输出标志 ;***********************************************
[单片机]
<font color='red'>51单片机</font>输出PWM的两种方法
51单片机利用74HC595驱动数码管
基于51单片机利用八个数码管花样显示如下: xxx11xxx→xx2222xx→x333333x→44444444→x555555x→xx6666xx→x777777x→88888888 每个状态各一秒,显示反复循环,其中x表示对应的数码管熄灭 问题补充:是共阳极的数码管,利用595芯片驱动的。采用C语言。 =================================================== 最佳答案:程序设计完毕,采用PROTEUS仿真截图如下。 程序如下: //============================================= #include reg52.h #define u
[单片机]
<font color='red'>51单片机</font>利用74HC595驱动数码管
51单片机实验9:外部中断
实验:按下按键,使led状态反转。 开发板独立按键,led,mcu电路图如下: 对于中断系统的介绍参考:https://blog.csdn.net/cax1165/article/details/86633086 #include reg52.h #define uc unsigned char sbit led=P2^0; sbit k3=P3^2; void delay(uc x) { uc i,j; for(i=1;i =x;i++) for(j=1;j =110;j++); } void int0init() { IT0=1; EX0=1; EA=1; } void int0() int
[单片机]
<font color='red'>51单片机</font>实验9:外部中断
51单片机串口通信软件程序集
串口通信的单片机程序 beep bit p3.7 ;蜂鸣器定义 org 00h jmp main org 23h ;串行中断入口地址 jmp com_int ;串行中断服务程序 ;*********** 主程序开始 ******************* org 30h main: mov sp,#30h ;设置堆栈 lcall rest ;初始化 lcall comm ;串口初始化 jmp $ ;原地等待 ; ******
[单片机]
通用定时器基本原理
1、参考资料 《STM32F1开发指南-库函数版本》-第13,14,15章 《STM32中文参考手册V10》-第14章通用定时器 2、通用定时器概述 ·STM32定时器 ·三种STM32定时器区别 ·通用定时器功能特点描述 STM32的通用TIMx(TIM2、TIM3、TIM4和TIM5)定时器功能特点包括: ·位于低速的APB1总线上(APB1) ·16位向上、向下、向上/向下(中心对齐)计数模式,自动重装载计数器(TIMx_CNT)。 ·16位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数为1~
[单片机]
通用<font color='red'>定时器</font>基本原理
MSP430学习点滴—看门狗定时器
简介:看门狗有三种工作模式:停止模式,计时器模式,看门狗模式。控制寄存器WDTCTL由两部分组成,高8位用作口令,低8位实现对WDT的控制操作。要实现对WDT的操作控制,必须先写入高字节看门狗口令。 控制寄存器WDTCTL由两部分组成,高8位用作口令,低8位实现对WDT的控制操作。要实现对WDT的操作控制,必须先写入高字节看门狗口令。口令为5AH,头文件里一般将WDTPW宏定义为5AH.WDTCTL寄存器各位定义如下: 15~8 7 6 5 4 3 2 1 0 口令 HOLD NMIES NMI TMSEL CNTCL SSEL IS1 IS0 IS0 IS1 选择看门狗定时器的定时输出,其中T是WDTCNT的输入
[单片机]
Systick定时器几个简单的函数简介
Systick定时器 Systick定时器是什么? Systick定时器就是系统滴答定时器,一个24 位的倒计数定时器,计到0 时,将从RELOAD 寄存器中自动重装载定时初值。只要不把它在SysTick 控制及状态寄存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作; SysTick定时器被捆绑在NVIC中,用于产生SYSTICK异常中断请求(异常号:15); Systick中断的优先级也可以设置。 SysTick的四个寄存器 寄存器对应的位 Systick时钟源选择函数SysTick_CLKSourceConfig() 函数体定义 void SysTick_CLKSourceConfig(uint32
[单片机]
Systick<font color='red'>定时器</font>几个简单的函数简介
8052定时器2的可编程时钟输出模式的实例
52单片机里面有一个T2定时器,它比普通的16为定时器功能要强大多了,今天研究了T2定时器的一个应用 可编程时钟输出功能。配置成500KHZ的时钟信号输出后,用示波器测量了时钟输出脚P1^0,发现还真准。 为了把定时器配置成时钟发生器,位C/T2(T2CON.1)必须清0,也就是选择定时模式,位T2OE(T2MOD.1)必须置1,使能定时器2输出。位TR2(T2CON.2)启动、停止定时器。时钟输出频率取决于晶振频率和定时器2捕捉寄存器(RCAP2H,RCAP2L)的重载值,如公式所示: 定时器2的可编程输出模式原理框图如下 图1 定时器2的可编程输出模式 上个测试用的程序 // 文件
[单片机]
8052<font color='red'>定时器</font>2的可编程时钟输出模式的实例

推荐帖子

求地铁安全门控制系统原理图及电脑与安全门通信连接方式
我公司专做地铁安全门和BRT安全门,我负责维护与维修。目前有很多通讯故障公司还没有解决。希望高手指点谢谢!另外本人想学习安全门系统连接原理与电脑(控制盘)与电机连接的详细原理图!非常感谢!求地铁安全门控制系统原理图及电脑与安全门通信连接方式一个问题一个问题单独提出吧,大家尽量帮忙。地铁安全门和BRT安全门这可是大市政工程的大项目哦这种安全门系统连接原理与电脑(控制盘)与电机连接不是制造厂家已经做好的么,楼主是研发这块的?
dongjinliu 工控电子
新人报到
新人报到新人报到:handshake新人回复0消灭.多多关照
东海扬尘 TI技术论坛
LM3S8962串口通讯问题
我想用LM3S8962和一个51单片机进行串口通讯,51单片机发出的是7个16进制的数,那到底怎样从LM3s8962上把这个16进制的数读取出来呢??LM3S8962串口通讯只能接受字符吗??LM3S8962串口通讯问题
我愿意漂泊 TI技术论坛
相位可调射频有源移相器设计
摘要:采用PIN管和射频运算放大器构成中心频率100MHz的二级一阶可调移相器.相位调节范围0-240度,输出信号幅度变化小于1dB.相位可调射频有源移相器设计
JasonYoo RF/无线
求个低频声音信号接收器(2KhZ 以下信号)
要求距离5米内接收到信号,还有那个电感怎么做?求救。。。。。。。求个低频声音信号接收器(2KhZ以下信号)话筒加放大,很简单的。至于“那个电感”,不知道你要什么电感。
zhuli_num1 RF/无线
请教前辈,光强经过AD转换通过串口输出到电脑的值,如何才能决定这些值的意义。
有一块电路板,主要功能是要将光敏探头的数据经过AD转换输出,板上有51单片机,AD16bit转换器等器件,通过串口连接电脑。目前板子已经制好,但单片机没写程序进去。通过串口调试助手发现,串口有数据输出。小弟需要实现一个软件,接收串口的数据,记录数据大小,画一个图。但是由于没有AD转换方面的经验,不知道出来的数据如何截取才是完整单元。所以不知如何通信帧需要包含哪些数据,导致整个程序不好下手。希望高手不吝赐教!请教前辈,光强经过AD转换通过串口输出到电脑的值,如何才能决定这些值的意义。简单协
karise 嵌入式系统
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved