51单片机(十八)—— 定时器0实例测试

2023-05-16

        在本文中,我们对51单片机的定时器0进行测试。用定时器0来定时,并用来控制LED闪烁。定时器0的初始化代码如下所示。

void init_T0(void)
{
	TMOD|= 0x01;	  //使用方式1,16位定时器		     
	TH0=0x00;	      //给TH0和TL0赋初值,计数器由0开始计数,到65535溢出
	TL0=0x00;
	EA=1;            //总中断打开
	ET0=1;           //定时器中断打开
	TR0=1;           //定时器开关打开
}

        在这个实验中,采用定时器0的方式1进行定时。方式1为16位定时器方式。TH0和TL0的初始值都设置为0x00,则定时器0的计数为由0计数到65535之后溢出,及需要65536个机器周期溢出。采用12MHz的外部晶振,机器周期为1us。则定时器0的溢出周期为65.536ms。每两个周期LED灯闪一次,因此,LED的闪烁频率为1/(2*65.536ms)≈7.6Hz。

        在程序中,TMOD|= 0x01;这个语句对TMOD寄存器进行赋值。TMOD|= 0x01;这一句是TMOD= TMOD| 0x01;的简写。“|”为按位或的运算。0x01的二进制值为00000001,它与TMOD进行按位或的运算结果为TMOD的bit0位强制置为1,其它位保持不变。

       EA=1;          

       ET0=1;         

       TR0=1;

这三句分别对IE寄存器的EA位和ET0位以及TCON寄存器的TR0位进行赋值。可以看出对TMOD和IE、TCON的赋值方式是不一样的。原因在于TMOD这个寄存器不能进行位寻址,赋值时必须对整个寄存器进行赋值。而IE和TCON这两个寄存器是可以进行位寻址的,编程时可以对其中的位直接进行赋值。

        在这个程序中,以中断方式处理定时器0的溢出事件,中断处理代码如下所示。在中断处理函数中将LED的状态改变。

void T0_ISR(void) interrupt 1 using 1
{
	TH0=0x00;		  //给TH0和TL0重新赋值
	TL0=0x00;
	LED=~LED;        //LED的值取反,改变灯的状态。
}

        中断服务程序的标准格式为:

    void 函数名() interrupt 中断号 using 工作组

         中断函数不能返回任何值,所以最前面用void;后边紧跟着函数名,名字可以由用户自己决定,但不要违反C语言的标准;中断函数不带任何参数,所以函数名后边的括号内为空或者写void;中断号是指中断源的编号,这个编号是编译器识别不同中断的唯一标识,因此在写中断服务程序时务必要写正确;“using 工作组”是指这个中断函数使用单片机内存中4组工作寄存器中的哪一组,编译器在编译程序时会自动分配工作组,因此最后这句通常可以省略不写,比如源程序可以写成:void T0_ISR(void) interrupt 1。

        将程序烧写到单片机中,并运行,可以看到LED连续闪烁。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

51单片机(十八)—— 定时器0实例测试 的相关文章

  • (综合)xorg-xserver相关完全解析

    本文主要是从以下几个方面介绍xorg xserver 相关的知识 1 linux系统图形界面框架 2 xserver 和x client启动过程 3 图形2d xff0c 3d加速原理简介 4 xserver主分支代码解析 5 xserve
  • 小新 Pro 13‘ 2020 macOS 安装教程

    小新 Pro 13 2020 macOS 安装教程 电脑配置 CPU xff1a Intel Core i5 10210U CPU 64 1 60GHz 4C8T RAM xff1a 板载 16 GB 2666 MHz DDR4 硬盘 xf
  • IDEA社区版创建spring boot项目的安装插件

    由于最近idea的官方查的有点严 xff0c pojie的企业版idea总失效 xff0c 现在给大家说一下社区版idea创建spring项目的一个方法 xff01 xff01 xff01 在项目实战中了解到的IDEA创建springboo
  • 软件工程论述题:衡量模块独立性的两个标准是什么?各表示什么含义?

    8 衡量模块独立性的两个标准是什么 各表示什么含义 内聚和耦合 内聚 又称为块内联系 指模块内部各成分之间相互关联的程度 以高内聚为设计目标 耦合 也称块间联系 模块之间相互联系程度的度量 联系越紧密 耦合性越强 独立性越差 以低耦合为设计
  • linux如何查看wifi信号强弱

    在linux中观察wifi信号强弱 xff0c 可以通过dBm数值来判断 现在来看这个所谓的dBm xff0c 数值范围在 XX 0之间 这个数越大 xff0c 信号强度越高 50dBm 0dBm范围内 xff0c 恭喜你 xff0c 你的
  • Edge浏览器的书签(收藏夹)文件夹地址在哪?

    最近因为工作电脑经常重装系统 xff0c 所以每次重装系统之前都要备份一些数据 xff0c Edge浏览器这两年突然香了起来 xff0c 插件yyds xff01 所以平时生活还是使用Edge会多一点 xff0c 但是收藏夹备份却吃了大亏
  • CCS5.4+Proteus8的F28027实践课二、定时器0控制LED流水灯

    刚游泳回来 xff0c 看到昨晚那篇博客访问量比较高 xff0c 对我是莫大的鼓励 xff0c 所以马不停蹄的去找了相关的手册准备我们今天的课程 今天我们要说的是用定时器0产生的定时中断让LED闪烁 大家都是大部分都是工科出身 xff0c
  • dns2tcp搭建DNS隧道绕过校园网

    1 问题场景 在学校是如果校园网没钱了 xff0c 难道就不能上网了 xff1f xff1f xff1f xff1f 对于从事技术的人来说尤其是学计算机出身的人来说这是不能容忍的 我们看下面场景 xff1a 当我们校园网没有认证时 xff0
  • 关闭浏览器的跨域

    无损关闭浏览器的跨域 关闭浏览器的安全模式 注意 xff01 这样会导致一些网站无法访问 xff0c 比如谷歌无法登录等 所以建议使用一个非主要的浏览器开启 编辑桌面的chrome 或者 edge 浏览器快捷方式 右键快捷方式 xff0c
  • CentOS安装MySQL(YUM源安装)

    安装mysql主要分为两种方式 xff0c 本次简单介绍使用YUM源进行安装mysql xff0c 如果不是使用docker xff0c 可以跳过步骤1 2 1 docker环境准备 在安装mysql之前 xff0c 请先确认使用的cent
  • 将门禁卡写入到手机、手环,加密卡也能写

    前言 准备材料 IC卡操作 读取IC卡数据 xff08 必看 xff09 写入到小米手环 写入到带有NFC的手机 复制IC卡 ID卡操作 读取ID卡数据 复制ID卡 前言 门禁卡大多以IC卡 ID卡为主IC卡又分为UID CUID等等只有I
  • Ubuntu中开启ssh服务的方法

    我们可以在网上看到很多关于Ubuntu开启SSH服务的文章 xff0c 但是介绍的有很多方法都是不够理想的 xff0c 这些方法都无法实现远程登录到Ubuntu上 xff0c 那么下面就让小编为大家分享Ubuntu中开启ssh服务的方法 s
  • fedora 的kde桌面无法输入中文问题

    简单三步 xff1a xff08 1 xff09 xff1a sudo yum y install ibus 安装ibus拼音库 xff08 2 xff09 xff1a sudo yum y install im chooser 安装拼音切
  • go切片常见错误

    x1f447 下面代码会输出什么 xff1f slices span class token operator 61 span span class token function make span span class token pun
  • OpenVINO的部署和使用

    现在几乎每家硬件或互联网公司都推出了自家的机器学习框架 xff0c 小米的mace 谷歌的TensorFlow Facebook的Torch等等 今天要介绍的是Inter公司出品的OpenVINO OpenVINO主要分为Model Opt
  • Mybatis-Plus分页插件

    引言 xff1a MyBatis Plus自带分页插件 xff0c 只要简单的配置即可实现分页功能 1 添加Configuration配置类 64 Configuration 64 MapperScan 34 com atguigu myb
  • 关于manjaro命令行界面方块乱码

    通常情况下这些方块乱码是中文 xff0c 其实这篇文档讲的很清楚 xff0c 如果 etc locale conf中有设置LANG 61 zh CN UTF 8就会导致tty乱码 解决办法也如文档所说有两个 xff1a 首先是修改 etc
  • 如何安装arm交叉工具链及问题解决

    在进行基于arm的嵌入式linux开发时 xff0c 首先要安装交叉工具链 要按照交叉工具链首先要获得交叉工具链的压缩包 xff0c 我这里用的是开发板上自带的压缩包 xff1a arm linux gcc 4 5 1 v6 vfp tgz
  • 04)go语言使用优化 启动时不打开CMD控制台,后台运行

    一 生成没有cmd窗口的exe程序 1 目前go语言生成exe我是在goland运行时设置了输出路径 xff0c 运行时就会产生exe可执行文件 2 默认是执行的go bulid指令 xff0c 生成的ext双击打开是有CMD窗口的 xff
  • C#使用RDP远程桌面

    由于本人是做数据库维护经常使用到远程桌面 xff0c 但是windows自带的远程桌面难以区分很不方便 xff0c 所以我自己写了一个RDP RDP一共修改了两次 第一种思路就是使用windows自带的RDP xff0c 保存成RDP文件

随机推荐