51单片机——定时器

单片机——定时器

 

宗旨:技术的学习是有限的,分享的精神是无限的。

 

1、定时器和计数器

时钟周期:单片机时序中的最小单位,集体计算的放法就是时钟源分之一

机器周期:单片机完成一个操作的最短时间,=12个时钟周期

定时器:打开定时器后,定时器“存储寄存器”的值经过一个机器周期自动加1,也就是说,机器周期是定时器的计数周期。

 

2、定时器的寄存器

 

 

TMOD —— 工作模式选择寄存器——常用模式1和模式2.

TCON —— 控制寄存器(TRn定时器开关)

TH/TL —— 定时计数器

 

3、定时器应用

第一步:设置特殊功能寄存器 TMOD,配置好工作模式。
第二步:设置计数寄存器TH0TL0的初值。
第三步:设置TCON,通过TR0 1来让定时器开始计数。
第四步:判断TCON 寄存器的TF0 位,监测定时器溢出情况。

写程序之前,我们要先来学会计算如何用定时器定时时间。我们的晶振是 11.0592M,时钟周期就是 1/11059200,机器周期是12/11059200,时器定时值最大也就是 71ms 左右。

(65536-N)*12/11.0592M = time ---计算出N转换成十六进制

1ms的例子:

TMOD = 0X01;

TH0 = 0XFC;

TL0 = 0X67;

TR0 = 1; 

#include<reg52.h>typedef unsigned char uchar;sbit LED = P0^0;int  main(void)
{uchar cnt = 0;  //定义一个计数变量,记录T0溢出次数TMOD = 0x01;  //设置T0为模式1TH0 = 0xFC;  //为T0赋初值0xB800TL0 = 0x67;TR0 = 1;     //启动T0while (1){if (1 == TF0)        //判断T0是否溢出{TF0 = 0;         //T0溢出后,清零中断标志TH0 = 0xFC;      //并重新赋初值TL0 = 0x67;cnt++;           //计数值自加1if (cnt >= 1000)   //判断T0溢出是否达到50次{cnt = 0;     //达到50次后计数值清零LED = ~LED;  //LED取反:0-->1、1-->0}}}return 0;
}

 

4、数码管

 

共阴与共阳数码管 ——8个LED灯

位选——控制选择多个数码管中的哪一个

段选——选择数码管显示的值

 

// 秒定时器:
#include<reg52.h>typedef unsigned int uint;
typedef unsigned char uchar;uchar code count[] =
{0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
};int main(void)
{uchar cnt = 0;  //记录T0中断次数uchar sec = 0;  //记录经过的秒数TMOD = 0x01;  //设置T0为模式1TH0 = 0xFC;  //为T0赋初值0xB800TL0 = 0x67;TR0 = 1;     //启动T0while (1){if (TF0 == 1)        //判断T0是否溢出{TF0 = 0;         //T0溢出后,清零中断标志TH0 = 0xFC;      //并重新赋初值TL0 = 0x67;cnt++;           //计数值自加1if (cnt >= 1000)   //判断T0溢出是否达到1000次{cnt = 0;            //达到1000次后计数值清零P0 = count[sec];  //当前秒数对应的真值表中的值送到P0口sec++;              //秒数记录自加1if (sec >= 16)      //当秒数超过0x0F(15)后,重新从0开始{sec = 0;}}}}return 0;
}

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466982.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

当年要是这样搞,我的C++也不至于这样!

C一直被称作永不过时的开发语言&#xff0c;比如游戏、服务器、人工智能等领域都必须用到C&#xff01;虽然网上有很多教程和资料&#xff0c;但仍有很多人说C难学&#xff0c;究其原因是没有找到正确的学习方法&#xff01;GoogleTest框架一直广泛应用于C/C项目测试 &#xff…

ABP之创建实体

ABP框架是一个非常庞大的框架&#xff0c;里面的东西有很多&#xff0c;那么如果我需要使用ABP进行项目的开发&#xff0c;具体的使用流程是怎样的呢&#xff1f;接下来将以一个简单的电影票管理“系统”为例子具体的实现一下。 一. 实体的创建 实体是属于领域层的&#xff0c;…

三亚野生植物园

近来朋友外出旅游颇多,大家分享快乐和美景的同时&#xff0c;文字往来也丰富。我的三亚行也该落幕了&#xff0c;休整得差不多了&#xff0c;重整行装&#xff0c;再踏旅途……诸君逍遥游芙蓉叶残桂满岩&#xff0c;粤女梦起游天姥。白塔青湖鸣沙丘&#xff0c;渡海峨眉牵白鹿。…

10张图22段代码,万字长文带你搞懂虚拟内存模型和malloc内部原理

成功是急不来的。不计较眼前得失&#xff0c;将注意力真正着眼于正在做的事情本身&#xff0c;持续付出努力&#xff0c;才能一步步向前迈进&#xff0c;逐渐达到理想的目标。不着急&#xff0c;才能从容不迫&#xff0c;结果自会水到渠成。大家好&#xff0c;我是程序喵&#…

51单片机——中断

单片机——中断 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 1、中断&#xff1a;放下手中的事情去处理另一种事情。 2、定时器中断 定时器是单片机模块的一个资源&#xff0c;确确实实存在的一个模块&#xff0c;中断是单片机的一种运行机制。不是一…

转!!ftp的主动模式(port)与被动模式(PASV)

转自 http://www.phpweblog.net/killjin/archive/2008/01/06/2653.htmlftp中主动模式(port)与被动模式(PASV)目录 开场白 基础 主动FTP 主动FTP的例子 被动FTP 被动FTP的例子 总结 参考资料 附录 1: 配置常见FTP服务器 开场白 处理防火墙和其他网络连接问题时最常见的…

深入MTK平台bootloader启动分析笔记

bootloader到kernel启动总逻辑流程图ARM架构中&#xff0c;EL0/EL1是必须实现&#xff0c;EL2/EL3是选配&#xff0c;ELx跟层级对应关系&#xff1a;EL0 -- appEL1 -- Linux kernel 、lkEL2 -- hypervisor&#xff08;虚拟化&#xff09;EL3 -- ARM trust firmware 、pre-loade…

Android反翻译详解

这段时间在学Android应用开发&#xff0c;在想既然是用Java开发的应该很好反编译从而得到源代码吧&#xff0c;google了一下&#xff0c;确实很简单&#xff0c;以下是我的实践过程。 在此郑重声明&#xff0c;贴出来的目的不是为了去破解人家的软件&#xff0c;完全是一种学习…

51单片机——UART

单片机——UART串口通信 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 对于单片机来说&#xff0c;通信则与传感器、存储芯片、外围控制芯片等技术紧密结合&#xff0c;成为整个单片机系统的“神经中枢”。 1、初步认识 一位一位的发送出去的&#xf…

day 34 守护线程守护进程 互斥锁线程 信号量 生产者消费者

今日内容 1、守护进程vs 守护线程&#xff08;*&#xff09; 2、互斥锁&#xff08;**&#xff09; 3、信号量&#xff08;**&#xff09; 4、生产者消费者模型&#xff08;*****&#xff09; 5、GIL&#xff08;什么时候用进程&#xff0c;什么时候用线程&#xff09;&#xf…

20000W的电灯泡,真的是叼炸天

编排 | strongerHuang素材来源 | 电工电气学习1000W的灯泡有多亮&#xff1f; 20000W的灯泡呢&#xff1f;嵌入式专栏11000W灯泡一位手工帝名叫rctestflight&#xff0c;他认为普通白炽灯泡的能耗是LED灯8倍&#xff0c;他自己要做一盏最亮最亮的灯&#xff0c;就选择了LED灯泡…

以色列:新发明大幅提高太阳能发电效率

央视国际 [url]www.cctv.com[/url]  2007年08月22日太阳能发电是个老话题了&#xff0c;同时也有一个老问题&#xff0c;就是发电效率很低。最近&#xff0c;以色列科学家宣布&#xff0c;他们发明了一种新型的、高效太阳能发电系统&#xff0c;将促进太阳能在工业领域的广泛…

51单片机——I2C总线

单片机——I2C 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 UART 属于异步通信&#xff0c;比如电脑发送给单片机&#xff0c;电脑只负责把数据通过TXD 发送出来即可&#xff0c;接收数据是单片机自己的事情。而 I2C 属于同步通信&#xff0c; SCL 时…

物联网开发者被疯抢,华为做了什么?

5G时代到来&#xff0c;物联网技术的应用也离我们越来越近。智慧交通、智能家庭、智慧园区&#xff0c;越来越多的融入到我们的生活当中。所以&#xff0c;对于开发者而言&#xff0c;物联网将是未来发展的一大蓝海领域。但国内物联网人才短缺&#xff0c;每年人才缺口达百万之…

VMware 安装kali——linux

学习信息安全需要安装kali-linux,会遇到许多问题&#xff0c;如下&#xff1a; 1、版本问题 需要注意自己多用软件和电脑操作系统是否是一致版本&#xff0c;有些是可以安装但是不能运行。 2、安装过程选择错误的选项 我们创建新的虚拟机&#xff0c;这时&#xff0c;选择自定…

FreeRTOS及其应用,万字长文,基础入门

嵌入式系统不只是ARMLinux&#xff0c;不是只有安卓&#xff0c;凡是电子产品都可称为嵌入式系统。物联网行业的兴起&#xff0c;也提升了FreeRTOS市场占有率。本文就是介绍FreeRTOS基础及其应用&#xff0c;只是个人整理&#xff0c;可能存在问题&#xff0c;其目的只是简要介…

从中工毕业到年薪30万,我用了2年9个月

1夜色如潮水一般淹没了这座城市。我蹲在阳台&#xff0c;问我的死党&#xff0c;你说我的第一篇文章&#xff0c;起个什么样的标题才足够吸引人&#xff0c;让人想点开看看呢&#xff1f;死党从床上的帘子里探出头来说&#xff0c;UC震惊部啊&#xff0c;屡试不爽&#xff0c;况…

51单片机——LCD1602

单片机——1602液晶 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 1、1602液晶读写时序 &#xff08;1&#xff09;、读状态 RSL&#xff0c;R/WH&#xff0c;EH。(判断忙完毕后释放总线) &#xff08;2&#xff09;、读数据 RSH&#xff0c;R/WH&a…

recovery模式下支持ADB连接和串口操作

前言Android平台下我们有时候会进入recovery下做一些操作&#xff0c;不管是通过ADB连接还是通过串口操作&#xff0c;都需要你的平台支持&#xff0c;不支持的话可以按照我们这篇文章进行修改。正文ADB连接进入recovery后&#xff0c;我通过ADB连接会有如下报错exec "/sy…

Get busy living or get busy dying

好久不看大片了&#xff0c;今天花了一些时间仔细看了一遍《肖申克的救赎》&#xff0c;应该是很仔细的看了一遍&#xff0c;这个影片真的震撼心灵&#xff0c;“Get busy living or get busy dying.”&#xff08;忙着活&#xff0c;还是忙着死&#xff09;是安迪最重要的一句…