C51--定时器_c51单片机计数器应用,2024最新Linux运维面试真题解析

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注运维)
img

正文

一、定时器

1、概念
C51中的定时器和计数器是同一硬件电路支持的,通过寄存器配置不同,就可以当作定时器或者计数器使用。
定时器:用内部的震荡电路数数。每过一个机器周期,计数存储器的值就加 1 。
计数器:读取针脚的数据(每来一个负跳变信号就加1,完成计数)
信号输入的引脚:P3.4、P3.5
标准的C51有两个定时器/计数器:T0和T1,两个使用方法一致
C52相比于C51,多了一个T2

定时器和计数器,电路一样。
定时器或计数器的本质就是让单片机某个部件数数
当定时器用时,靠内部震荡电路数数
当计数器用时,数外面的信号,读取针脚的数据

2、定时器如何定时
本质原理:每过一个机器周期,就加一,在寄存器中加

2.1、晶振
晶振(晶体振荡器)又称数字电路的心脏
振荡电路由晶振提供。11.0592MHz波特率比较稳定
2.2、时钟周期
时钟周期也称为震荡周期,定义为时钟频率的倒数-------11.0592MHZ的倒数(1/11059200s)。
是计算机中最基本的、最小的时间单位。在一个时钟周期内,cpu仅完成一个最基本的动作。时钟周期是一个时间的量。更小的时钟周期就意味着更高的工作频率。
2.3、机器周期
机器周期也称为cpu周期,在计算机中,为方便管理常把一条指令的执行过程划分为若干个阶段(取值、译码、执行等),每一个阶段完 成一个基本操作。每完成一个基本操作所需要的时间称为机器周期。
一个机器周期由若干个时钟周期组成。
机器周期 = N个时钟周期 = N个晶振频率倒数
机器周期 = 12x时钟周期 = 12x(1/11059200s) = 12000000/11059200um = 1.085微秒

2.4、STC89C51RC/RD+系列有两种计数速率:
12T模式——每12个时钟加1,与传统8051单片机相同;
6T模式,每6个时钟加1,速度是传统8051单片机2倍;
可以在stc-isp中设置。

二、寄存器

1、寄存器
sfr是Special Function Register(特殊功能寄存器)的缩写。用来管理定时器。
是用来对片内各种功能模块进行管理、控制、监视、的控制寄存器和状态寄存器,是一个特殊功能的RAM区。
存储二进制代码0/1,暂存指令数据地址。
2、TCON
TCON为定时器 / 计数器T0、T1的控制寄存器,同时也锁存T0、T1溢出中断源和外部请求中断源等。

TR0:定时器T0运行控制位,B4,开始数数。
从TCON寄存器的B4(bit4)可以知道,通过编程让这个位TR0为 1 的时候,开始计时,相当于按下闹钟。TR0 = 1。
TF0:定时器T0溢出中断标志,B5,爆表
从TCON寄存器的B5(bit5)可以知道爆表,当爆表的时候,硬件会修改bit5位的数据为:1(置 1),TF0=1。
如果不用中断,TF0要手动清0。如果用中断,硬件会自动置零。
TR1:定时器T1运行控制位,B6
TF1:定时器T1溢出中断标志,B7

AUXR降低单片机对外界的电磁干扰,没影响可以不用配置。
TMOD定时器模式寄存器,选择工作方式1,TMOD的bit0、bit1配置成0,1——16位定时器功能。

两位寄存器,有4种模式(M1,M0(bit1,bit0))
00——13位定时器,TL0用低5位,TH0用8位
01——16位定时器,TL0、TH1全用
10——8位自动重装载定时器,溢出时TH0值自动装入TL0(用的少)
11——双8位定时器,TL0和TH0分别作为1个8位计时器。

TL0和TH0初始化配置(可用程序员计算器来计算出来)
TL0/TH0分别为8位(低8位+高8位),加起来为16位
TL1/TH1分别为8位,加起来为16位

2^8=256 次溢出爆表。
2^16=65536次溢出爆表。
65536*1.085=71107us=71ms爆表
如果要数20ms出来,需要从71-20=51ms开始数,51为初始值
(10ms,数一下用时1.085us,共数10ms/1.085us=9216下)
65536-9216=56320,从56320开始,不断+1,到65536

56320转换
HEX(十六进制):DC00
DEC(十进制):56320
OCT(八进制):156000
BIN(二进制):1101 1100 0000 0000

十六进制为:DC00,所以TL0 为:00 ;TH0为:DC

void Timer0Init(void) //10微秒@11.0592MHz
{		//0x十六进制
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x00; //设置定时初值
TH0 = 0xDC; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
}

/\*
1、配置一个定时器0工作模式16位计时:TMOD = 0x01;
2、给初值,定一个10ms : TL0 = 0x00; TH0 = 0xDC; 
3、开始计时 :TR0 = 1
4、爆表,累积到 1s 再操作LED
 爆表了,变量加一,加100次就是 1s,每隔 1s转换LED状态
 TF0 == 1
\*/


#include "reg52.h"

sbit led = P3^6;

void main()
{
	int cnt = 0;
	led = 1;
	
	TMOD = 0x01;		//配置
	TL0 = 0x00;		  //给初值
	TH0 = 0xDC;
	TR0 = 1;		    //开始计时
	TF0 = 0;
	
	while(1){
		if(TF0 == 1){		//当爆表的时候,硬件会修改bit5位的数据为:1(置 1),TF0=1。
			TF0 = 0;	    //如果不用中断,TF0要手动清0。如果用中断,硬件会自动置零。
			cnt++;				//统计报表的次数
			TL0 = 0x00;		//重新给初值
			TH0 = 0xDC;
			if(cnt == 100){ //爆表100次,经过1s
				cnt = 0;			//100次表示1s,重新计算cnt


为了做好运维面试路上的助攻手,特整理了上百道 **【运维技术栈面试题集锦】** ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,**小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。**

![](https://img-blog.csdnimg.cn/img_convert/08048094f599f7f90c198fd3c6efffe4.png)

本份面试集锦涵盖了

*   **174 道运维工程师面试题**
*   **128道k8s面试题**
*   **108道shell脚本面试题**
*   **200道Linux面试题**
*   **51道docker面试题**
*   **35道Jenkis面试题**
*   **78道MongoDB面试题**
*   **17道ansible面试题**
*   **60道dubbo面试题**
*   **53道kafka面试**
*   **18道mysql面试题**
*   **40道nginx面试题**
*   **77道redis面试题**
*   **28道zookeeper**

**总计 1000+ 道面试题, 内容 又全含金量又高**

*   **174道运维工程师面试题**

> 1、什么是运维?

> 2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

> 3、现在给你三百台服务器,你怎么对他们进行管理?

> 4、简述raid0 raid1raid5二种工作模式的工作原理及特点

> 5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

> 6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

> 7、Tomcat和Resin有什么区别,工作中你怎么选择?

> 8、什么是中间件?什么是jdk?

> 9、讲述一下Tomcat8005、8009、8080三个端口的含义?

> 10、什么叫CDN?

> 11、什么叫网站灰度发布?

> 12、简述DNS进行域名解析的过程?

> 13、RabbitMQ是什么东西?

> 14、讲一下Keepalived的工作原理?

> 15、讲述一下LVS三种模式的工作过程?

> 16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

> 17、如何重置mysql root密码?

**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)**
![img](https://img-blog.csdnimg.cn/img_convert/1036c21f0735e72867507de5c568c567.jpeg)

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)**
[外链图片转存中...(img-fhdCfxBi-1713304225387)]

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值