0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机学习心得1:89c51单片机定时器应用!

锂电联盟会长 来源:聂磊 作者:电子发烧友 2019-03-04 13:36 次阅读

定时器的应用涉及到中断方面的知识,可以先了解中断的概念再来看定时器

如,一个16位的定时器,它所能计数的范围是0~65535,如果单片机采用的是12M的晶振,那么定时器单次最长的时间为65535((1/12)12),因为一个一个机器周期等于12个振荡周期,那么定时器加一所用的时间是1/12M*12是1us,也就是一个12MHz晶振的51单片机单次最长时间约为65ms.

定时器的控制

89c51的定时器由两个寄存器控制,分别是工作模式寄存器TMOD和控制寄存器TCON

工作模式寄存器TMOD是用于控制定时器0/1的工作模式,通过对TMOD进行赋值,则可以改变定时器的工作模式

具体各位的定义如下

当我们使用定时器功能时,就只用设置D0、D1、D4、D5的的值就可以了,其余位置0即可

我们在使用定时器时基本使用的是模式1和模式2,模式0与模式3基本不用,我就不进行描述了。

模式1

当TMOD的D5位置0,D4位置1时,即为定时器T1的模式一,该模式对应的是一个16位的定时器,寄存器TH1和TL1即为T1初值的高8位和低8位,定时时间为:(65536-T1的初值)振荡周期12

模式二

当TMOD的D5位置1,D4位置0时,即为定时器T1的模式二,该模式对应的是一个可以自动装载的8位定时器,当定时器计数满了(计数溢出时),会自动把TH1中的内容重新装载到TL1中,那么模式二计数的最长时间即为(257-T1的初值)振荡周期12

定时器的控制寄存器TCON

TCON的各位定义如下

TF1:T1的溢出标志位,当T1溢出时,由硬件自动使TF1位置1,并向CPU申请中断。当CPU响应中断进入中断服务子程序后,TF1又被硬件自动清0,也可以用软件清0.

TF0:T0溢出标志位。其功能和操作情况同TF1

TR1:T1的运行控制位,当该位置1时,即启动定时器1当该位置0时,即关闭

TR0:T0的运行控制位,其功能及操作情况同TR1。

接下来我将用定时器来结合数码管制作一个0-9计时器

具体操作如下(定时器的初始化在程序最下面)

include //引用了51单片机的官方库文件 void T0INI() ; //定时器0初始化函数声明 unsigned int temp = 0,i = 0; //中间变量 unsigned char leddata[]={ //定义一个字符型数组用来存放共阳极数码管数字显示 0xC0, //"0" 0xF9, //"1" 0xA4, //"2" 0xB0, //"3" 0x99, //"4" 0x92, //"5" 0x82, //"6" 0xF8, //"7" 0x80, //"8" 0x90, //"9" 0x88, //"A" 0x83, //"B" 0xC6, //"C" 0xA1, //"D" 0x86, //"E" 0x8E, //"F" 0x89, //"H" 0xC7, //"L" 0xC8, //"n" 0xC1, //"u" 0x8C, //"P" 0xA3, //"o" 0xBF, //"-" 0xFF, //熄灭 0xFF //自定义 }; void main() { T0INI(); while(1) { P2 = 0x0e; //位选段P20置0 P0 = leddata[i]; //数码管显示 if(TF0 == 1) //当定时器计数溢出时 { TH0 = 0X3c; TL0 = 0xb0; //给定时器高8位和低8位重新赋值 temp++; //50ms加1 } if(temp == 20) //计数到20次也就是一秒 i++; //数码管显示值加一 if(i == 10) i = 0; } } void T0INI() //定时器T0初始化 { IE = 0x82; //cpu开总中断 ,定时器T0溢出中断允许 TCON = 0x10; //打开定时器T0 TMOD = 0x01; //设置T0为工作模式1,16位定时计数器 TH0 = 0X3c; TL0 = 0xb0; //12Mhz定时50ms }

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    5992

    文章

    43910

    浏览量

    619656

原文标题:【人物】静下心来,读一段特斯拉掌门人埃隆·马斯克的自述!

文章出处:【微信号:Recycle-Li-Battery,微信公众号:锂电联盟会长】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    MCS51单片机和8051、8031、89C51等的关系

    MCS51单片机和8051、8031、89C51等的关系我们寻常总是讲8051,又有什么8031,现在又有89C51,89s51它们之间毕竟是什么关系? MCS
    发表于 04-12 14:52

    体积特小的单片机 89C51

    `89C51单片机有八脚且体积小的吗?有附图。非常感谢!`
    发表于 09-16 17:25

    有没有基于单片机控制的图像采集的电路图?单片机89c51

    有没有基于单片机控制的图像采集的电路图?单片机89c51
    发表于 10-21 11:13

    请问89c51单片机可以用cc2540通信吗?

    我想做一个心率仪,单片机89c51单片机,可以用cc2540通信吗?CC2540是单片机吗?怎么使用和89C51构成完整的通信系统?蓝牙模
    发表于 10-09 04:17

    51单片机C语言怎样实现红黄绿灯交替亮呢?

    ,红黄绿灯交替亮,怎样实现呢?其实就是根据单片机定时器及倒计时的程序修改。源程序如下:/*1、程序目的:使用定时器学习 倒计时 红绿灯原理
    发表于 07-15 09:49

    基于89C51单片机的软件与硬件设计

    单片机系列一--基于89C51单片机的软件与硬件设计 此次我将对单片机一些简单的理解及应用写下是为了以后自己复习的时候有据可循,,同时简单回忆一下
    发表于 07-20 06:17

    89c51单片机的引脚及功能有哪些

    89c51/s51单片机芯片内包括哪些?89c51单片机的引脚及功能有哪些?
    发表于 09-24 09:30

    89C51单片机的主要特性

    第2章89C51单片机的结构与原理2.189C51单片机的主要特性89C51具有如下特性:(1
    发表于 11-18 06:49

    单片机学习心得分享

    单片机学习心得3今日目标:继续学习串口通信完成度:看完了串口通信原理视频,但是单片机运行不成功(串口名已被占用,运行错误)在实验室的一上午,通过学习
    发表于 02-28 06:11

    80C51单片机89C51单片机具体有什么不同?

    80C51单片机89C51单片机具体有什么不同
    发表于 11-01 08:01

    基于89c51单片机的时钟可调定时器设计

    基于89c51单片机的时钟可调定时器设计
    发表于 08-31 10:05 52次下载

    基于89C51单片机定时器0源程序

    基于89C51单片机定时器0源程序
    发表于 05-16 09:17 0次下载

    基于89C51单片机定时器源程序

    基于89C51单片机定时器1源程序
    发表于 05-12 17:29 3次下载

    基于89C51单片机定时器2源程序

    基于89C51单片机定时器2源程序
    发表于 05-16 09:17 0次下载

    基于89C51单片机定时器扫描数码管(不闪烁)源程序

    基于89C51单片机定时器扫描数码管(不闪烁)源程序
    发表于 05-12 17:16 1次下载