51单片机定时器使用与计算-----day3

news2025/1/13 2:46:28

51单片机定时器-----day3

8051单片机介绍:
集成 8位CPU、 4K字节ROM(掉电不丢失)、 128字节RAM(掉电丢失)、 4个8位并口、 1个全双工串行口、2个16位定时/计数器。 寻址范围64K, 并有控制功能较强的布尔处理器(带位操作)。
单片机结构内部框图:
在这里插入图片描述
机器周期和指令周期
( 1) 振荡周期: 也称时钟周期, 是指为单片机提供时钟脉冲信号的振荡源的周期, JY51-V1.0实验板上晶振为11.0592M。振荡周期: T=1/11059200
( 2) 状态周期: 每个状态周期为时钟周期的 2 倍, 是振荡周期经二分频后得到的。
( 3) 机器周期: 一个机器周期包含 6 个状态周期S1~S6, 也就是 12 个时钟周期。 在一个机器周期内, CPU可以完成一个独立的操作。 T=12*(1/11059200)
( 4) 指令周期: 它是指CPU完成一条操作所需的全部时间。每条指令执行时间都是有一个或几个机器周期组成。 MCS - 51系统中, 有单周期指令、 双周期指令和四周期指令。
时钟周期T是时序中最小的时间单位。 具体计算就是1/时钟源。 单片机使用的时钟周期= 1/11059200 s。
机器周期 CPU完成一个操作的最短时间。普通51一个机器周期是12个时钟周期。

在这里插入图片描述
注:不带括号的可以操作独立寄存器,带括号的只能整体使用不可单独位寻址

寄存器:在这里插入图片描述
工作方式:
13位计数器:0-2^13
16位计数器:0-2^16
模式1: 16位的计数器。 ( TH1,TL1)
模式2: 自动装载8位计数器。 主要应用在串口波特率发生器
模式0和模式3: 几乎不用。
TCON和TMOD复位后都会自动变成0x00。
★ C/T= 0, 设置为定时方式。
定时器计数 805l片内脉冲, 亦即对机器周期计数。
★ C/T= 1, 设置为计数方式,
计数器的输入是来自T0(P3. 4)或Tl(P3.5)端的外部脉冲
GATE= 0时, 只要用软件使TR0(或TRl)置1就启动了定时器,而不管INT0(或INT1)的电平是高还是低。
GATE= l时只有当INT0(或INT1)引脚为高电平且由软件使TR0(或TRl)置1时, 才能启动定时器工作
TMOD不能位寻址 , 只能用字节设置定时器工作方式;
低半字节设定T0高半字节设定T1
下图为重点:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
TCON各位的作用如下:
TF1: T1溢出标志位。 当T1溢出时由硬件自动使中断触发器TF1置1, 并向CPU申请中断。 当CPU响应进入中断服务程序后, TF1又被硬件自动清0。 TF1也可以用软件清0
TF0: T0溢出标志位**。 其功能和操作情况如TF1。
TR1: T1运行控制位。 可由软件置1或清0来启动或关闭T1。 指令(SETBTRl)使TR1位置1, 定时器T1便开始计数。
TR0: T0运行控制位。 其功能及操作情况同TRl。8051复位时, TCON的所有位被清0。
定时器操作步骤,不使用中断函数如下
第一: 设置特殊功能寄存器TMOD, 使之工作在需求的状态。
第二: 设置计数寄存器的初值, 精确设定好定时时间。
第三: 设置特殊功能寄存器TCON, 通过打开TR来让定时器进行工作。 (也可设置为中断模式)
定时时间计算方法:
定时器: 每经过一个机器周期, 寄存器加1。因此, 可以将机器周期看作为计数周期。===>12*(65536 – x) /11059200 = 需要定时的时间
定时器从设定的初值开始累加。
TH1 = 0xB8; TL1 = 0X00;
12*(65536 – x) /11059200 = 需要定时的时间
65536-X = (11059200/12 )T
65536-X= 921600
T; 设定时20ms
X=65536-921600*T
X=47104
T单位为S。
一次定时时间不能超过71ms。
程序如下:
LED灯每1S闪烁一次。

#include<reg52.h>

sbit HC595_SCK = P0^5;
sbit HC595_RCK = P0^6;
sbit HC595_DATA = P0^7;

code unsigned char Led8_One_Array[2] = {0x01,0x00};
code unsigned char Led8_Two_Array[2] = {0x00,0x00};

void Send_595_Data(unsigned char Led8_One,unsigned char Led8_Two)
{
   unsigned char i;

   HC595_RCK = 0;

   for(i=0;i < 8;i++)
   {
      HC595_SCK = 0;
   	  if(0 != (Led8_One & 0x80))
   	  {
      		HC595_DATA = 1;
	   }
	   else
	   {
	      HC595_DATA = 0;
	   }
	
	   Led8_One = Led8_One<<1;
	
	   HC595_SCK = 1;
   }

	for(i=0;i < 8;i++)
    {
	   HC595_SCK = 0;
   	   if(0 != (Led8_Two & 0x80))
   	   {
      		HC595_DATA = 1;
	   }
	   else
	   {
	      HC595_DATA = 0;
	   }
	
	   Led8_Two = Led8_Two<<1;
	
	   HC595_SCK = 1;
   }
   	  HC595_RCK = 1;

}

/*void Delay_1MS(unsigned int i)
{
   unsigned int j;
   for(;i > 0;i--)
   {
     for(j=0;j<110;j++);
   }
}
 */


void Time0_Init()
{
   TMOD = 0X01;
   TH0 = 0XB8;
   TL0 = 0X00;
   TR0 =1;   //设置成1后定时器开始计时。
}


void main()
{	
     unsigned char k,Counter = 0; 
     Time0_Init();
     while(1)
	 {	
	    if(1 == TF0)   //判断是否T0是否溢出是的话清0,未用中断所以需要手动清零
		{
		   TF0 = 0;
		   TH0 = 0XB8;   //重装初值
		   TL0 = 0X00;

		   Counter++;   //每20MS加1

		}  

		if(100 == Counter)  //2s中后进行翻转LED灯状态
		{
		    Counter = 0; 
		    k = !k;
		}
		 
	    Send_595_Data(Led8_One_Array[k],Led8_Two_Array[0]);  

	    /*Delay_1MS(1000);
		Send_595_Data(Led8_One_Array[1],Led8_Two_Array[0]); 
		Delay_1MS(1000); */
	 }
}

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

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

相关文章

MyBatis执行Sql的流程分析

目录 举例 openSession的过程 Executor 简单总结 获取Mapper的流程 Mapper方法的执行流程 doQuery方法 简单总结 举例 public class App {public static void main(String[] args) {String resource "mybatis-config.xml";Reader reader;try {//将XML配置文…

专享策略04 | 商品通用套利模型(二)

量化策略开发&#xff0c;高质量社群&#xff0c;交易思路分享等相关内容 『正文』 ˇ 大家好&#xff0c;去年我们推出了一款套利模型专享策略No.2 | 套利策略-自动换仓-出场加速. 截至到今天创出新高。 大家比较缺少套利&#xff0c;截面&#xff0c;盘口等类型的策略。因此…

「TCG 规范解读」PC 平台相关规范(1)

可信计算组织&#xff08;Ttrusted Computing Group,TCG&#xff09;是一个非盈利的工业标准组织&#xff0c;它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立&#xff0c;并采纳了由可信计算平台联盟&#xff08;the Trusted Computing Platform Alli…

SpringBoot集成Knife4j接口管理工具

SpringBoot集成Knife4j接口管理工具1、导入依赖包2、配置Knife4j3、放行Knife4j的请求4、使用Knife4j注解5、实现效果平时开发项目都用的是Swagger2或者Swagger3&#xff0c;但是这两个UI看起来不是很舒服&#xff0c;今天看到了Knife4j&#xff0c;它对Swagger进行了增强&…

华为OD机试题【和最大子矩阵】用 C++ 进行编码 (2023.Q1)

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明和最大…

3.ffmpeg命令行环境搭建、ffmpeg命令行初步了解

在上章,我们讲过: ffmpeg.exe: 主要用于转码或者剪切的应用程序, 也可以从url/现场音频/视频源抓取输入源ffplay.exe: 主要用于播放视频的应用程序,该应用程序源码是开源的,我们后面章节会去源码分析ffprobe.exe: 主要用于分析视频码流的应用程序, 可以获取媒体文件的详细信息,…

Jupyterlab 学习与测试笔记

前言本篇博客主要解决阿里云服务器上Jupyterlab配置方面的一些问题。1、安装完无法启动Jupyterlab首先声明&#xff0c;我在Anaconda3安装过程中已经设置了将安装相关的Python&#xff0c;ipython&#xff0c;Jupyter等添加到环境变量。但是一开始安装完&#xff0c;直接在命令…

从计费出账加速的设计谈周期性业务的优化思考

1号恐惧症 你有没有这样的做IT的朋友&#xff1f;年纪轻轻&#xff0c;就头发花白或者秃顶&#xff0c;然后每个月周期性的精神不振&#xff0c;一到月底&#xff0c;就有明显的焦虑。如果有&#xff0c;他可能就是运营商行业做计费运营的&#xff0c;请对他好点&#xff0c;特…

【LeetCode】剑指 Offer(12)

目录 题目&#xff1a;剑指 Offer 30. 包含min函数的栈 - 力扣&#xff08;Leetcode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 写在最后&#xff1a; 题目&#xff1a;剑指 Offer 30. 包含m…

【Node.js算法题】数组去重、数组删除元素、数组排序、字符串排序、字符串反向、字符串改大写 、数组改大写、字符替换

文章目录前言数组去重数组删除元素数组排序字符串排序字符串反向字符串改大写数组改大写字符替换字符替换运行结果&#xff1a; ![在这里插入图片描述](https://img-blog.csdnimg.cn/8ac1c15e6f0944cdb8ca50bcb844182a.png)总结前言 本期文章是js的一些算法题&#xff0c;包括…

FreeRTOS入门(07):流缓冲区 消息缓冲区

文章目录目的基础说明流缓冲区相关函数使用演示消息缓冲区相关函数使用演示总结目的 缓冲区是操作系统中常见的一种用于任务间数据传递的机制。这篇文章将对FreeRTOS中相关内容做个介绍。 本文代码测试环境见前面的文章&#xff1a;《FreeRTOS入门&#xff08;01&#xff09;…

Flink:The generic type parameters of ‘Collector‘ are missing 类型擦除

类型擦除问题处理报错日志描述问题描述报错解决其他方法方法一&#xff1a;TypeInformation方法二&#xff1a;TypeHint报错日志描述 报错日志&#xff1a; The generic type parameters of Collector are missing. In many cases lambda methods dont provide enough informa…

双边滤波和交叉双边滤波

什么是双边滤波 双边滤波是一种局部的、非线性的、非迭代的滤波技术&#xff0c;它将经典的低通滤波器与边缘停止函数相结合&#xff0c;当像素之间的强度差较大时&#xff0c;边缘停止函数会衰减滤波器的核心。由于同时考虑了相邻像素的灰度相似度和几何贴近度&#xff0c;滤…

使用开源httpworkshop执行http api测试与资源下载

平时我们在涉及HTTP开发时&#xff0c;会使用postman做api测试&#xff0c;优点是界面友好&#xff1b;平时我们写爬虫查找网络资源一般使用python编写脚本&#xff0c;优点是脚本支持的功能灵活&#xff1b;其实网络上做HTTP测试的工具和产品特别的多&#xff0c;但是都是做好…

锐捷(十六)mpls vxn option c 带RR场景

一 实验拓扑二 实验需求如图模拟R1在北京&#xff0c;R10在上海&#xff0c;要求二者之间用loopback口进行通信由于公司机密性质&#xff0c;要求二者需要使用mpls vxn 虚拟专线的方式进行通信本实验采取option c带RR的方式模拟通信左边AS100&#xff0c;右边AS200&#xff0c;…

19万字智慧城市总体规划与设计方案word

【版权声明】本资料来源网络&#xff0c;知识分享&#xff0c;仅供个人学习&#xff0c;请勿商用。【侵删致歉】如有侵权请联系小编&#xff0c;将在收到信息后第一时间删除&#xff01;完整资料领取见文末&#xff0c;部分资料内容&#xff1a; 1.1.1 感知基础设施 感知基础设…

数据库三大范式和个人看法

三大范式图解概括 第一范式(1NF) 确保数据库表字段的原子性 会存在数据冗余过大&#xff0c;插入异常&#xff0c;删除异常&#xff0c;修改异常的问题 举例&#xff1a; 某个字段name&#xff1a;‘西瓜 1566666‘ 依照第一范式就需要拆分成 name:‘西瓜’ ,phone:1566666’ …

房产营销、地产中介如何高效低成本获客?

数字化对企业而言&#xff0c;机遇和挑战并存。房产企业可借助数字化加强日益扩大的业务规模和业务领域管理&#xff0c;以提升管理效率&#xff0c;降低管理难度&#xff1b;基于数字化技术加强客户的服务体验&#xff0c;进而收集多业态客户和场景数据&#xff0c;拓展创新业…

计算机组成原理(2.1)--系统总线

目录 一、总线基本知识 1.总线 2.总线的信息传送 3.分散连接图 4.注 二、总线结构的计算机举例 1.面向 CPU 的双总线结构框图 2.单总线结构框图 3.以存储器为中心的双总线结构框图 三、总线的分类 1.片内总线 2.系统总线 &#xff08;板级总线或板间总线&#…

【leetcode】寻找重复数

题目链接&#xff1a;寻找重复数https://leetcode.cn/problems/find-the-duplicate-number/ 方法一&#xff1a;快慢指针 因为只有一个数字是重复的&#xff0c;且一个数字正好对应一个唯一的下标&#xff0c;所以可以将数组抽象为一个链表&#xff0c;假定数组为{1,2,3,4,5,…