🚀write in front🚀
🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝💬本系列哔哩哔哩江科大51单片机的视频为主以及自己的总结梳理📚
前言:
本文是根据哔哩哔哩网站上“江协科技51单片机”视频的学习笔记,在这里会记录下江协科技51单片机开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技51单片机教学视频和链接中的内容。
引用:
51单片机入门教程-2020版 程序全程纯手打 从零开始入门_哔哩哔哩_bilibili
c51语言变量语句意思,C51中循环语句-CSDN博客
定时器引用:
51单片机学习笔记_c51.h-CSDN博客
正文:
0. 🌿概述
在淘宝上购买了江协科技51单片机开发板套件(普中科技STC51单片机A2型号),就上在上一篇博文里说的自己计划学习下江协科技51单片机开发教程,通过STC51单片机这种MCU这种贴近于裸机的开发来增加对于系统硬件层面知识的了解和掌握。
1. 🚀C51单片机定时器
🐳定时器是51单片机的内部资源,其电路的连接和运转均在单片机内部完成。
🐳定时器的作用
- 💘用于计时系统,可实现软件计时,或者使程序每隔一固定时间完成一项操作。
- 💘代替长时间的Delay,提高CPU的运行效率和处理速度。
- STC89C52系列单片机内部设置的两个16位定时器/计数器T0和T1,都具有计数和定时两种重做方式。
- 对于每个定时器/计数器(T0/T1),在特殊功能计数器TMOD中都有一控制位- C/T 来选择T0或T1为定时器还是计数器。
- 定时器/计数器0 有4中工作方式
💘 模式0 (13位定时器/计数器)
💘 模式1 (16位定时器/计数器)
💘 模式2 (8位自动装载模式)
💘 模式3 (两个8为定时器/计数器)- 定时器/计数器1除模式3外,其它工作模式与定时器0相同,T1在模式3无效,停止计数。
💖 定时器的个数是和单片机的型号联系在一起的,不同型号的单片机定时器的个数可能不同,但一般来说T0和T1的操作方式和所有51单片机所共有的和传统的51单片机兼容。
STC52RC单片机有3个定时器 T0, T1, T2,T0和T1与传统的51单片机兼容,T2是此型号单片机增加的资源。
2. 🚀C51单片机定时器中断
定时器就像一个小闹钟,一样根据时钟输出信号,每隔“几个脉冲”,计时器单元的值就增加1,当计数器单元数值增加到“设定的闹钟提醒时间”时,计数器就会向中断系统发出中断申请,产生“响铃提醒”,是程序跳转到中断服务函数中执行😊。
😛 中断也是一种单片机资源,查看STC89C52的数据手册。
- 中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的😘。
- 当CPU正在处理某事件的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完成以后,在回到被中断的地方,继续原来的工作,这样的过程称为中断😘。实现这种功能的部件称为中断系统,请示CPU中断的请求源称为中断源。
- 微型机的中断系统一般允许多个中断源,当几个中断源同时向CPU请求中断,要求为它服务的时候,这就存在CPU优先响应哪一个中断请求源的问题。通常是根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求源,即规定每一个中断源有一个优先级别。CPU总是优先响应最级别最高的中断请求。🤗
🔍️ 当CPU正在处理一个中断源的时候(执行相应的中断服务程序),发生了另外一个中断优先级比他还高的中断源请求。如果CPU能够暂停对原来中断源的服务程序,转而去处理优先级更高的中断请求源,处理完成后,在回到原低优先级中断服务程序,这样的过程称为中断嵌套。这样的中断系统称为多级中断系统📘,没有中断嵌套功能的中断系统称为单级中断系统📙。
STC89C52系列单片机提供了 8个中断请求源 , 它们分别是:
- 🔖外部中断0 (INT0)
- 🔖定时器0中断
- 🔖外部中断1 (INT1)
- 🔖定时器1中断
- 🔖串口中断(UART)
- 🔖定时器2中断
- 🔖外部中断2(INT2)
- 🔖外部中断3(INT3)
🔍️所有的中断都具有 4个优先级 。
- 🔍️用户可以用关中断允许位(EA/IE.7)或相应中断的允许位来屏蔽所有的中断请求,也可以打开相应的中断允许为来使PCU响应相应的中断申请;
- 🔍️每一个中断源可以用软件独立的控制为开中断或者关中断状态;
- 🔍️每一个中断的优先级别均可以用软件设置。
- 🔍️高优先级的中断可以打断低优先级的中断,反之,低优先级的中断请求不可以打断高优先级的中断。
- 🔍️当两个相同优先级的中断同时产生时,将由查询次序来决定先响应哪个中断。
STC89C52系列单片机的各个中断查询次序如下表所示:
51单片机的计时器T0/T1 模式1 (16为定时器/计数器)功能框图如下,主要分为3部分,时钟部分,计数器部分,中断部分。
定时器计数部分:
- 🦜TL0 16为位计数器的低8位,TLH0 16位计数器的高8位,最大可以存数值为65535。
- 🦜C/T 选择T0/T1计数器/定时器是工作在定时器模式,还是工作在计数器模式。T 字符上面的横线表示‘低电平’有效选择定时器,C 表示‘高电平’有效选择计数器。
定时器时钟部分:
- 🦜定时器时钟部分来自于系统时钟 SYSclk 或者 T0Pin (选择T0Pin时外部每输入一个脉冲,计数器加1)。
- 🦜本实验我使用的普中科技C51单片机开发板的晶振是 11.0952Mhz,即系统时钟 SYSclk 是 11.0952MHz
定时器的系统使用 SYSclk 通过 12或者6 分频,进入定时器,我使用的普中单片机开发板上面的晶振是 11.0952Mhz/12=921,600Hz,也就是说计时器每加1 时间经过了 1/921,600 s