C8051f020之定时器实验

2023-12-28 15:10
文章标签 实验 定时器 c8051f020

本文主要是介绍C8051f020之定时器实验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

相信大家经过点灯实验和中断实验,对c8051系列单片机有了一定的了解,目前我们用到的延时函数还不够准确,那么怎么样才能自己手动配置一个准确时间的延时延时函数呢?

我们来看一下定时器的几种工作方式,本次实验我们用的是定时器0

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATk1hcnNoYWw=,size_20,color_FFFFFF,t_70,g_se,x_16

那么这几种工作方式如何设置呢,下面我们来看一下TMOD寄存器第0-1位

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATk1hcnNoYWw=,size_20,color_FFFFFF,t_70,g_se,x_16

下面我们来仔细看一下T0的方式0的原理图,方式0与方式1的原理框图一样,那么这张图我们可以看出SYSCLK(系统时钟)可以选择不分频,和可以12分频,通过第一个二选一多路选择器(红色下标1)来选择分频不分频,然后通过第二个多路选择器(红色下标2)来选择采用计数工作模式和定时工作模式,通过控制TMOD寄存器来选择TR0作为允许T0计数的允许位。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATk1hcnNoYWw=,size_20,color_FFFFFF,t_70,g_se,x_16

然后我们在通过配置TL0和TH0来配置初始值,例如采用16定时器当达到0xffff 时TF0置1,这时候我们可以根据计算,来算出我们初始值的大小,来实现精准定时。

我们用的晶振频率是2MHZ,经过12分频,则计一个数需要的时间T=12/2MHZ,那样我们需要计数多久的话,直接T*计数个数=定时时间,

计数个数=最大值(65535)-初值(装入TH0和TL0的值)

定时最长时间=T*65535

下面我们来看一下配置过程

1.配置分频方式T0M

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATk1hcnNoYWw=,size_20,color_FFFFFF,t_70,g_se,x_16

 2.配置计数方式

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATk1hcnNoYWw=,size_20,color_FFFFFF,t_70,g_se,x_16

 3.给定时器装初值

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATk1hcnNoYWw=,size_20,color_FFFFFF,t_70,g_se,x_16

 4.开启定时器控制TR0

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATk1hcnNoYWw=,size_20,color_FFFFFF,t_70,g_se,x_16

 下面看一下代码

 

 现在大家肯定有疑问为什么我延时20ms,TH0和TL0设置成        TH0=0xF2; TL0=0xFB;

下面我来带大家一起计算一下,

 下面大家肯定还有疑问为什么我要用

        while(!TF0);
        TF0=0;
        TR0=0;

如果我不加这条while等待语句你可能看到,不管怎么设定初值都会看不到定时20ms的效果,我这个作用就是一直等待计数到达0(65536在来一个时钟)然后TF被置1,然后跳出循环。清除TF0,清楚TR0的目的是为了下次不设定完初值就立马跑,导致出现错误。

这次随堂练习自己写一个定时器中断,每隔30ms触发一次,然后中断服务函数中实现点亮一次led灯

定时器2实验

      1.选择定时器计数方式  

 

 

 2.选择时钟分频

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBATk1hcnNoYWw=,size_20,color_FFFFFF,t_70,g_se,x_16

3.装入初值 

 

这篇关于C8051f020之定时器实验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/546378

相关文章

STM32(十一):ADC数模转换器实验

AD单通道: 1.RCC开启GPIO和ADC时钟。配置ADCCLK分频器。 2.配置GPIO,把GPIO配置成模拟输入的模式。 3.配置多路开关,把左面通道接入到右面规则组列表里。 4.配置ADC转换器, 包括AD转换器和AD数据寄存器。单次转换,连续转换;扫描、非扫描;有几个通道,触发源是什么,数据对齐是左对齐还是右对齐。 5.ADC_CMD 开启ADC。 void RCC_AD

HNU-2023电路与电子学-实验3

写在前面: 一、实验目的 1.了解简易模型机的内部结构和工作原理。 2.分析模型机的功能,设计 8 重 3-1 多路复用器。 3.分析模型机的功能,设计 8 重 2-1 多路复用器。 4.分析模型机的工作原理,设计模型机控制信号产生逻辑。 二、实验内容 1.用 VERILOG 语言设计模型机的 8 重 3-1 多路复用器; 2.用 VERILOG 语言设计模型机的 8 重 2-1 多

【Qt】定时器事件

定时器事件 在之前学习QTimer中实现了定时器的功能,而在QTimer背后是QTimerEvent定时器事件进行支撑的。在QObject中提供了一个timeEvent这个函数。 startTimer启动定时器killTimer关闭定时器 Qt 中在进⾏窗⼝程序的处理过程中,经常要周期性的执⾏某些操作,或者制作⼀些动画效果,使⽤定 时器就可以实现。所谓定时器就是在间隔⼀定时间后,去执⾏某⼀

独立按键单击检测(延时消抖+定时器扫描)

目录 独立按键简介 按键抖动 模块接线 延时消抖 Key.h Key.c 定时器扫描按键代码 Key.h Key.c main.c 思考  MultiButton按键驱动 独立按键简介 ​ 轻触按键相当于一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通与断开。  ​ 按键抖动 由于按键内部使用的是机

61.以太网数据回环实验(4)以太网数据收发器发送模块

(1)状态转移图: (2)IP数据包格式: (3)UDP数据包格式: (4)以太网发送模块代码: module udp_tx(input wire gmii_txc ,input wire reset_n ,input wire tx_start_en , //以太网开始发送信

LTspice模拟CCM和DCM模式的BUCK电路实验及参数计算

关于BUCK电路的原理可以参考硬件工程师炼成之路写的《 手撕Buck!Buck公式推导过程》.实验内容是将12V~5V的Buck电路仿真,要求纹波电压小于15mv. CCM和DCM的区别: CCM:在一个开关周期内,电感电流从不会到0. DCM:在开关周期内,电感电流总会到0. CCM模式Buck电路仿真: 在用LTspice模拟CCM电路时,MOS管驱动信号频率为100Khz,负载为10R(可自

【JavaScript】在循环体中了解定时器工作机制

for (var i = 0; i < 5; i++) {setTimeout(function() {console.log(i);}, 1000);}console.log(i);   如果我们约定,用箭头表示其前后的两次输出之间有 1 秒的时间间隔,而逗号表示其前后的两次输出之间的时间间隔可以忽略,代码实际运行的结果该如何描述?会有下面两种答案: A. :5 -> 5 -> 5 ->

HCIA--实验十:路由的递归特性

递归路由的理解 一、实验内容 1.需求/要求: 使用4台路由器,在AR1和AR4上分别配置一个LOOPBACK接口,根据路由的递归特性,写一系列的静态路由实现让1.1.1.1和4.4.4.4的双向通信。 二、实验过程 1.拓扑图: 2.步骤: (下列命令行可以直接复制在ensp) 1.如拓扑图所示,配置各路由器的基本信息: 各接口的ip地址及子网掩码,给AR1和AR4分别配置

WebAPI (一)DOM树、DOM对象,操作元素样式(style className,classList)。表单元素属性。自定义属性。间歇函数定时器

文章目录 Web API基本认知一、 变量声明二、 DOM1. DOM 树2. DOM对象3. 获取DOM对象(1)、选择匹配的第一个元素(2)、选择匹配多个元素 三、 操作元素1. 操作元素内容2. 操作元素属性(1)、常用属性(href之类的)(2)、通过style属性操作CSS(3)、通过类名(className)操作CSS(4)、通过classList操作控制CSS(5)、操作表单

OpenGL/GLUT实践:流体模拟——数值解法求解Navier-Stokes方程模拟二维流体(电子科技大学信软图形与动画Ⅱ实验)

源码见GitHub:A-UESTCer-s-Code 文章目录 1 实现效果2 实现过程2.1 流体模拟实现2.1.1 网格结构2.1.2 数据结构2.1.3 程序结构1) 更新速度场2) 更新密度值 2.1.4 实现效果 2.2 颜色设置2.2.1 颜色绘制2.2.2 颜色交互2.2.3 实现效果 2.3 障碍设置2.3.1 障碍定义2.3.2 障碍边界条件判定2.3.3 障碍实现2.3.