单片机C语言编程(定时器计数器)
单片机实验报告

单片机实验报告学院:姓名:学号:指导老师:目录第一章实验内容、目的及要求 (2)一、内容 (2)二、目的及要求 (3)第二章实验 (3)实验一数字量输入输出实验 (3)实验二定时器/计数器实验 (4)实验三A/D、D/A转换实验 (11)实验四串行通信设计 (20)第三章实验体会 (28)第一章实验内容、目的及要求一、内容实验一数字量输入输出实验阅读、验证C语言程序功能。
使用汇编语言编程,完成实验指导书之“3.1 数字量输入输出实验”基本实验项目。
实验二定时器/计数器实验阅读、验证C语言程序功能。
使用汇编语言编程,完成实验指导书之“3.3 定时/计数器实验”基本实验项目。
提高部分:定时器控制LED灯由单片机内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1溢出中断一次。
P1口的P1.0-P1.7分别接八个发光二极管。
编写程序模拟时序控制装置。
开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个LED灯全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮……一直循环下去。
实验三A/D、D/A转换实验阅读、验证C语言程序功能。
使用汇编语言编程,完成实验指导书之“4.3 A/D转换实验”项目(P64)和“4.4 D/A转换实验”项目。
提高部分:(要求:Proteus环境下完成)小键盘给定(并显示工作状态),选择信号源输出波形类型(D/A 转换方式),经过A/D采样后,将采样数据用LED灯,显示当前模拟信号值大小及变化状态。
实验四串行通讯实验阅读、调试C语言程序功能。
使用汇编语言编程,完成实验指导书之“3.7 串口通讯实验”项目。
(要求:实验仪器上完成)提高部分:(要求:Proteus环境下完成)利用单片机实验系统,实现与PC机通讯。
功能要求:将从实验系统键盘上键入的数字,字母显示到PC机显示器上,将PC机键盘输入的字符(0-F)显示到单片机实验系统的数码管上。
认识单片机的定时器计数器

void main(void) { TMOD=0x01;
TH0=-25000/256; TL0=-25000%256; TR0=1; ET0=1; EA=1; while(1); } void timer0(void) interrupt 1 { TH0=-25000/256;
TL0=-25000%256; P10=~P10; }
根据定时时间T,及公式(1)、(2)分别可以求出初 值N为:
方式1: N=216-T×fosc/12
(3)
方式2、方式3 :N=28-T×fosc/12 (4)
如果fosc=12MHZ,以上公式可简化为
方式1: N=216-T
方式2、方式3 :N=28-T
例如:系统的时钟频率是12MHz,在方式1下,如果希望定时 器/计数器T0的定时时间T为10ms,则初值N =216-T=6553610000=55536
任务一、认识单片机的定时器/计数器
一、定时器/计数器及其应用 在单片机应用系统中,定时或计数是必不可少的。例如: 测量一个脉冲信号的频率、周期,或者统计一段时间里 电机转动了多少圈等。常用的定时方法有:
1、软件定时 软件定时是依靠执行一段程序来实现的,这段程序本身 没有具体的意义,通过选择恰当的指令及循环次数实现 所需的定时,由于执行每条指令都需一定的时间,执行 这段程序所需总的时间就是定时时间。 软件定时的特点是无需硬件电路,但定时期间CPU被占 用,增加了CPU的开销,因此定时时间不宜过长,而且 定时期间如果发生中断,定时时间就会出现误差。
led=_crol_(led,1); 满10次变量led左移1位送P0口
P0=led;
}
}
[案例3] 用定时器的计数方式实现外部中断。如图 所示,P0口控制8只发光管轮流点亮,发光管点 亮时间为500ms,单脉冲电路控制发光管的移动 方向,按下单脉冲按钮,发光管左移,再按下发 光管右移 。
C51单片机C语言编程基础和实例

基础知识:C51单片机编程基础单片机的外部结构:1.DIP40双列直插;2.P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平)3.电源VCC(PIN40)和地线GND(PIN20);4.高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位)5.内置振荡电路,外部只要接晶体至X1(PIN18)和X0(PIN19);(频率为主频的12倍)6.程序配置EA(PIN31)接高电平VCC;(运行单片机内部ROM中的程序)7.P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1单片机内部I/O部件:(所为学习单片机,实际上就是编程控制以下I/O部件,完成指定任务)1.四个8位通用I/O端口,对应引脚P0、P1、P2和P3;2.两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1)3.一个串行通信接口;(SCON,SBUF)4.一个中断控制器;(IE,IP)针对AT89C52单片机,头文件AT89x52.h给出了SFR特殊功能寄存器所有端口的定义。
C语言编程基础:1.十六进制表示字节0x5a:二进制为01011010B;0x6E为01101110。
2.如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位,而丢掉高8位。
3.++var表示对变量var先增一;var—表示对变量后减一。
4.x |= 0x0f;表示为x = x | 0x0f;5.TMOD = ( TMOD & 0xf0 ) | 0x05;表示给变量TMOD的低四位赋值0x5,而不改变TMOD的高四位。
6.While( 1 ); 表示无限执行该语句,即死循环。
语句后的分号表示空循环体,也就是{;}在某引脚输出高电平的编程方法:(比如P1.3(PIN4)引脚)代码1.#include //该头文档中有单片机内部资源的符号化定义,其中包含P1.32.void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口3.{4. P1_3 = 1; //给P1_3赋值1,引脚P1.3就能输出高电平VCC5. While( 1 ); //死循环,相当 LOOP: goto LOOP;6.}注意:P0的每个引脚要输出高电平时,必须外接上拉电阻(如4K7)至VCC电源。
51单片机C语言入门教程

51单片机C语言入门教程单片机是一种集成电路,可以完成各种功能。
C语言是一种高级编程语言,可以用来编写单片机的程序。
本文将介绍51单片机C语言的入门教程。
一、选择合适的开发环境选择合适的开发环境是学习51单片机C语言的第一步。
常用的开发环境有Keil C51、SDCC、IAR Embedded Workbench等。
这些开发环境都提供了开发工具和编译器,方便编写和调试代码。
二、了解51单片机的基本结构三、学习C语言的基本语法学习C语言的基本语法是学习51单片机C语言的基础。
C语言包括数据类型、变量、运算符、控制流语句等等。
学习C语言的基本语法可以参考相关的C语言教程。
四、掌握51单片机的特殊功能寄存器51单片机具有一些特殊功能寄存器,可以实现各种功能。
例如,P0是一个I/O口,可以用来控制外部设备的输入和输出;TMOD和TCON分别是定时器/计数器的模式和控制寄存器,可以实现定时和计数功能。
掌握这些特殊功能寄存器可以为后面的单片机编程做好准备。
五、编写第一个51单片机C语言程序编写第一个51单片机C语言程序可以帮助巩固前面学习的知识。
可以从简单的LED闪烁程序开始,逐步扩展到其他功能。
编写程序的过程中要注意语法的正确性和逻辑的合理性。
六、调试程序调试程序是保证程序正确运行的关键。
可以使用仿真器或者调试器对程序进行调试。
调试程序可以查看程序的运行状态、变量的值等等,帮助定位错误并进行修复。
七、深入学习更高级的C语言特性一旦掌握了基本的51单片机C语言编程,可以深入学习更高级的C语言特性。
例如,函数的使用、数组的应用、结构体和指针等等。
这些高级特性可以使程序更加模块化和灵活。
八、练习和实践练习和实践是巩固51单片机C语言编程知识的最好方法。
可以选择一些小项目或者例程进行练习,将理论知识应用于实际。
总结:通过以上的步骤,我们可以初步学习和掌握51单片机C语言的编程。
当然,这仅仅是入门级别的教程,还有很多更深入的知识需要进一步学习和探索。
AVR单片机C语言编程

高性能
AVR单片机的功耗较低,适用于电池供电的设备。
低功耗
AVR单片机可以通过C语言编程实现不同的功能。
可编程
AVR单片机的外设接口丰富,如ADC、DAC、UART、SPI等,便于实现各种通信和控制功能。
丰富的外设接口
AVR单片机的应用领域
AVR单片机可以通过外设接口实现与传感器的通信和控制,适用于智能仪表领域。
AVR Studio简介
AVR Studio可从Atmel官方网站下载安装,支持Windows、Linux和Mac等多种操作系统。
AVR Studio安装
AVR Studio简介及安装
AVR Studio的使用方法
使用AVR Studio进行单片机编程,需先创建一个工程,然后编写代码、编译、链接和下载程序到单片机中。
调试技巧
使用AVR Studio的调试功能,可以实时监控单片机内部寄存器和IO口状态,支持串口调试和JTAG调试等多种方式。
AVR Studio的使用方法及调试技巧
AVR单片机的开发流程
先确定单片机型号及所需外围器件,然后编写程序、编译、链接、下载并调试,最后进行系统测试。
注意事项
在进行AVR单片机开发时,要注意代码规范、注释明确、变量命名规则和模块化设计等基本问题,提高代码可读性和可维护性。同时,要避免使用未经Atmel认证的芯片和元器件,以确保系统稳定可靠。
01
02
03
01
总结词:熟练掌握
AVR单片机实现液晶显示控制
02
液晶显示控制程序:利用AVR单片机的串行通信接口,实现液晶显示的控制,同时采用C语言编写相应的程序。
03
程序逻辑:利用AVR单片机的USART串行通信接口,通过发送相应的指令控制液晶显示器的显示内容和显示位置,同时采用中断处理的方式对液晶显示器的状态进行实时监控,实现液晶显示的控制功能。
《单片机原理及应用》实验指导书(C语言)

《单片机原理及应用》实验指导书(C语言)《单片机原理及应用》实验指导书(C语言)某某大学物电学院微机教研室某某2022前言由于单片机具有高可靠性、超小型、低价格、容易产品化等特点,在仪器仪表智能化、实时工业控制、实时数据采集、智能终端、通信设备、导航系统、家用电器等控制应用领域,具有十分广泛的用途。
由于目前在国内单片机应用中,MCS-51系列单片机仍然是一种主流单片机,所以本实验指导书为学习MCS-51单片机的学生,配合《单片机原理及应用》课程的教学,结合本学院自制单片机教学实验板编写了这本实验指导书。
《单片机原理应用及》是一门实践性很强的课程,提高教学质量的一个重要环节是上机实习和训练,无论是学习汇编语言程序设计,还是学习接口电路和外设与计算机的连接,或者软硬兼施地研制单片机应用系统,不通过加强动手是不能获得预期效果的。
本实验指导书提供多个实验的指导性材料,有些实验还有一些有一定难度的选做项目,可以根据课时的安排和教学要求进行取舍。
为了达到某些实验的目的,书中提供的参考程序与实际应用中的程序会有些差别,所以不一定是最优的。
由于时间紧迫,需要赶课程进度与实验时间的同步,加上编者学识有限,如有不妥之处,欢迎读者批评指正。
实验须知1.实验前必须阅读教科书的有关部分和本实验指导书,了解实验目的、内容、步骤,做好实验前的准备,编写好实验中要求自编或修改的程序;完成实验前要求完成的准备工作后方可以上机实验,否则不得上机操作。
2.各种电源的电压和极性不能接错,严禁带电接线和接插元器件。
通电前须经过指导教师检查认可后方能通电。
3.不准随意拨弄各种与实验无关的旋钮和开关,凡与本次实验无关的任何设备都禁止动用和摸弄,注意安全。
4.严禁用手触摸实验系统印制电路板和元器件的引脚,防止静电击穿芯片。
5.实验中若损坏仪器或元器件,应及时向指导教师报告。
6.在实验室内保持安静和卫生,不得随意走动和喧哗,集中精力完成实验。
7.实验完成后,关掉电源,及时整理实验台桌面,保持环境整洁。
MCS-51 定时器/计数器

一、标题:MCS-51单片机定时器/计数器二、授课教材:《单片机原理及接口技术》胡健主编. 北京:机械工业出版社. 2008.1三、授课章节:第六章MCS-51单片机定时器/计数器第6.1节定时器的定时与计数功能第6.2节定时器的有关寄存器第6.3节定时器的4种工作方式四、教学目标:知识目标:理解51单片机定时器/计数器工作原理并能运用单片机汇编语言或Keil-C 语言编程定时器/计数器,达到灵活应用的目的。
能力目标:学生通过上机学习操作的过程循序渐进地掌握知识,完成教学任务。
从而培养学生动手实践能力。
情感目标:通过具体实例,让学生自我展示、自我激励,体验成功,形成积极主动学习的态度,在不断尝试中激发学生的求知欲,在不断摸索中陶冶情操。
五、重点、难点及解决办法重点: 1.单片机定时器/计数器结构功能2. 单片机定时器/计数器工作模式难点: 运用C或汇编编程定时器/计数器教学方法: 讲解原理,归纳,推理,实验六、学时:1学时七、教学步骤:1.导入新课:前面课题中提到单片机应用中可供选择的定时方法有多种,下面同学们思考两个问题:(1)什么是软件定时?软件定时是靠执行一个循环程序以进行时间延迟。
(教师补充:软件定时的特点是时间精确,且不需外加硬件电路。
但软件定时要占用CPU,增加CPU开销,因此软件定时的时间不宜太长。
此外软件定时方法在某些情况下无法使用。
)(2)什么是硬件定时?对于时间较长的定时,常使用硬件电路完成。
(教师补充:硬件定时方法的特点是定时功能全部由硬件电路完成,不占CPU时间。
但需通过改变电路中的元件参数来调节定时时间,在使用上不够灵活方便。
伴随演示电路。
)在单片机应用中,定时与计数的需求较多,为了使用方便并增加单片机的功能,就干脆把定时电路集成在芯片中,称之为定时器/计数器。
这即使本节课要学习的可编程定时器。
这种定时方法是通过对系统时钟脉冲的计数来实现的。
计数值通过程序设定,改变计数值,也就改变了定时时间,使用起来既灵活又方便。
51单片机C语言编程100例

51单片机C语言编程100例1. 引言51单片机是一款常用于嵌入式系统的微控制器,其强大的功能和广泛的应用使得掌握51单片机C语言编程成为许多电子工程师和学习者的首选。
本文将介绍并讲解51单片机C语言编程的100个例子,帮助读者逐步掌握编程技巧和开发经验。
2. 闪烁LED灯第一个例子是闪烁LED灯。
我们将通过C语言编写程序,控制51单片机上的一个LED灯以固定的频率闪烁,展示基本的输入输出操作。
通过学习这个例子,读者可以了解到C语言与单片机的交互方式。
3. 数码管计数器第二个例子是数码管计数器。
我们将使用C语言编写程序,通过按键操作控制数码管上的数字进行计数。
这个例子展示了如何使用中断和定时器来实现交互功能和多任务处理。
4. PWM波控制第三个例子是PWM波控制。
我们将使用C语言编程,通过调整占空比来控制51单片机上的PWM波输出。
这个例子展示了如何利用51单片机的定时器和中断模式来生成模拟信号。
5. 温度采集与显示第四个例子是温度采集与显示。
我们将利用51单片机内置的ADC模块,通过连接温度传感器来实现温度采集,并将采集到的数据在液晶屏上显示。
这个例子展示了如何使用模拟到数字转换和外部模块的接口技术。
6. 蓝牙通信控制第五个例子是蓝牙通信控制。
我们将利用51单片机的串口功能和蓝牙模块,实现与蓝牙设备之间的通信和控制。
通过学习这个例子,读者可以熟悉串口通信和外部设备的接口编程。
7. 距离测量与报警第六个例子是距离测量与报警。
我们将使用超声波传感器和蜂鸣器,通过C语言编程实现距离的测量和报警功能。
这个例子展示了如何使用外部传感器和控制器进行物理量的检测和反馈。
8. 数字音乐播放器第七个例子是数字音乐播放器。
我们将使用51单片机的PWM功能和SD卡模块,通过C语言编程实现音乐的播放和控制。
这个例子展示了如何使用定时器和外部存储设备进行数据的读取和解码。
9. 图形液晶显示第八个例子是图形液晶显示。
我们将利用51单片机的并行接口和图形液晶屏,通过C语言编程实现图形和字符的显示功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.2.1 模式0的逻辑结构及应用
C/T=1,计数方式。计数脉冲由P3.4引脚输 入。 C/T=0时,定时方式。
振荡器
12分频
C/T=0 C/T=1
T0(P3.4) TR0
TL0 (5位)
TH0 (8位)
TF0
中断
&
GATE P3.2
+
图6-5 模式0的逻辑结构图
6.2.2 模式1的逻辑结构及应用
12分频
C/T=0 TL 1 (8位) C/T=1 重新装入 TH 1 (8位) 串行口
T1(P3.5)
思考:T0工作在模式3,T1怎么进行方式设置?
6.2.4 模式3的逻辑结构及应用
1、定时器/计数器工作模式的选择方法
(1)首先计算计数值N (2)确定工作模式 原则是尽可能地选择模式2 若 N ≤ 256选择模式2,否则选择模式1 (3)如果需要增加一个定时器/计数器 选择模式3。
振荡器
12分频 C/T=0 TL1 TH1 (5位) (8位) 串行口
T1(P3.5)
C/T=1 (a)T1模式0
振荡器
12分频 C/T=0 TL1 TH1 (8位) (8位) 串行口
T1(P3.5)
C/T=1 (b)T1模式1
振荡器
图6-9 模式3下,T1的逻辑结构图
12分频 C/T=0 TL1
振荡器
主要内容
6.2.1 模式0的逻辑结构及应用 6.2.2 模式1的逻辑结构及应用 6.2.3 模式2的逻辑结构及应用 6.2.4 模式3的逻辑结构及应用
6.2.1 模式0的逻辑结构及应用
M1M0=00,选择模式0。逻辑结构如图6-5 所示。(以T0为例) T0的结构:13位定时器/计数器。 由TH0的8位、TL0的低5位构成(高3位未 用) 工作过程:TL0溢出后向TH0进位,TH0溢 出后将TF0置位,并向CPU申请中断。 定时时间=(213-定时初值)×机器周期 最大定时时间:213×机器周期
6.2.4 模式3的逻辑结构及应用
振荡器
12分频
C/T=0 C/T=1 TL0 (8位) TF0 中断
T0(P3.4) TR0
&
GATE P3.2 振荡器 TR1 12分频
+
TH0 (8位) TF1 中断
图6-8 模Leabharlann 3下T0的逻辑结构图6.2.4 模式3的逻辑结构及应用
2、T0模式3时T1的工作模式
6.2.4 模式3的逻辑结构及应用
1、T0模式3的结构特点
M1 M0 =11,选择模式3。逻辑结构如图 6-8和6-9所示: 结构: TL0、TH0分为两个独立的8位计数器 TL0: 8位定时器/计数器 使用T0所有的资源和控制位 TH0:8位定时器 使用T1所有的资源(中断向量、中断控制 ET1、PT1)和控制位(TR1、TF1)
T1可以模式0~模式2工作。 T1的结构如图6-9所示 由于TF1及中断矢量被TH0占用,所以T1 仅用作波特率发生器或其它不用中断的地方。 T1作波特率发生器,其计数溢出直接送 至串行口。设置好工作方式,串行口波特率 发生器开始自动运行。 TMOD中T1的M1M0=11,T1停止工作。
6.2.4 模式3的逻辑结构及应用
6.1.2 MCS-51单片机定时器/计数器的工作原理
③ C/T =1 ,为计数方式。
计数信号由Tx引脚(P3.4、P3.5和P1.0) 输入,每输入一有效信号,相应的计数 器中的内容进行加1。
④ 控制信号TRx=1时,定时器启动。 ⑤ 当定时器由全1加到全0时计满溢出,从0 开始继续计数,TFx=1 ,向CPU申请中 断。
6.1 MCS-51单片机定时器/计数器的结 构及原理
主要内容
6.1.1 MCS-51单片机定时器的结构 6.1.2 MCS-51单片机定时器的工作原理 6.1.3 定时器/计数器的控制寄存器
6.1.1 MCS-51单片机定时器的结构
MCS-51单片机定时器/计数器逻辑结构图:
T0(P3.4) 定时器 0 TH0 溢 出 控 制 TL 0 模 式 溢 出 定时器 1 TH1 控 制 TL 1 模 式 溢 出 RCAP 2H RCAP 2L T1(P3.5) T2EX(P1.1)
6.1.3 定时器/计数器的方式和控制寄存器
GATE=0,不使用外部门控制计数器 C/T——定时或计数方式选择位 。 C/T=0时,为定时器 C/T=1时,为计数器 采样过程:CPU在每机器周期S5P2期间, 输入信号进行采样。若前一机器周期采样值 为1,下一机器周期采样值为0,则计数器增 1,随后的机器周期S3P1期间,新的计数值 装入计数器。
定时器的初值为:TH0=0FEH,TL0=0CH
6.2.4 模式3的逻辑结构及应用
C语言程序: #include <reg52.h> sbit P1_0=P1^0; void main( ) { TMOD=0x01; TL0=0x0c; TH0=0xfe; ET0=1; EA=1; TR0=1; while(1); }
6.1.1 MCS-51单片机定时器的结构
⑤引脚P3.5、P3.4、P1.0,输入计数脉冲。 ⑥定时器T0、T1和T2是3个中断源,可以向 CPU 发出中断请求。 ⑦定时器/计数器T2增加了两个8位的寄存器: RCAP2H和RCAP2L。 ⑧特殊功能寄存器之间通过内部总线和控制 逻辑电路连接起来。
6.2.3 模式2的逻辑结构及应用
振荡器 T0(P3.4) TR0
12分频
C/T=0 C/T=1
TL0 (8位)
TF0
中断
& GATE P3.2
+
TH0 (8位)
图6-7 模式2的逻辑结构图
6.2.3 模式2的逻辑结构及应用
定时时间=(28 - 初值)×机器周期 最大定时时间=28 ×机器周期 优点:模式2能够进行自动重装载。模式0 和1计数溢出后,计数器为全0。循环定时或 计数时,需要重新设置初值。 说明:在模式2能够满足计数或定时要求时, 尽可能使用模式2。
例6-1 设单片机的振荡频率为12MHz,用 定时器/计数器0的模式1编程,在P1.0引脚产 生一个周期为1000µ s的方波,定时器T0采用 中断的处理方式。 定时器的分析过程。 工作方式选择 需要产生周期信号时,选择定时方式。定 时时间到了对输出端进行周期性的输出即可。 工作模式选择 根据定时时间长短选择工作模式。 首选模式2,可以省略重装初值操作。
6.2.4 模式3的逻辑结构及应用
定时时间计算:周期为1000µ s的方波要 求定时器的定时时间为500µ s,每次溢出时, 将P1.0引脚的输出取反,就可以在P1.0上产 生所需要的方波。 定时初值计算: 振荡频率为12MHz,则机器周期为1µs。 设定时初值为X,
(65536-X)×1µ s=500µ s X=65036=0FE0CH
//包含特殊功能寄存器库 //进行位定义
//T0做定时器,模式1
//设置定时器的初值 //允许T0中断 //允许CPU中断 //启动定时器 //等待中断
6.2.4 模式3的逻辑结构及应用
void time0_int(void) interrupt 1 { //中断服务程序 TL0=0x0c; TH0=0xfe; //定时器重赋初值 P1_0=~P1_0; //P1.0取反,输出方波 } 汇编语言程序: ORG 0000H SJMP MAIN ORG 000BH LJMP TIME0
6.1.3 定时器/计数器的方式和控制寄存器
M1、M0——工作模式选择位。 如下表所示:
表6-1 定时器/计数器的工作模式
M1 M0 工作模式 功 能 0 0 模式0 13位定时器/计数器 0 1 模式1 16位定时器/计数器 1 1 0 1 模式2 模式3 8位自动重置定时器/计数器 定时器0:TL0为8位定时器/计 数器,TH0为8位定时器。 定时器1:无此方式
6.1.3 定时器/计数器的方式和控制寄存器
1、T0、T1 工作模式寄存器TMOD
功能:确定定时器的工作模式。 其格式如图6-3所示:
D6 D5 D4 D3 D2 D1 D0 TMOD D7 (89H) GATE C/T M1 M0 GATE C/T M1 M0
图6-3 定时器方式寄存器TMOD
GATE——外部门控制位。 GATE=1,使用外部控制门。 TRx=1, P3.2(P3.3)=1时,启动定时器。
6.1.2 MCS-51单片机定时器的工作原理
定时器/计数器T0、T1、T2 的内部结构简 图如下图所示。
振荡器
12分频
C/T=0
TLx THx (8位) (8位)
Tx C/T=1 控制 TRx
TFx
中断请求
6.1.2 MCS-51单片机定时器/计数器的工作原理
从上图可以看出: ① 定时器的实质是一个加1计数器。 ② C/T =0 ,为定时器方式。 计数信号由片内振荡电路提供,振 荡脉冲12分频送给计数器,每个机器周期计 数器值增1。 例如:如果晶振频率为12MHz,则最高 计数频率为0.5MHz
T0(P3.4) TR0
&
GATE P3.2
+
工作过程:当TL0计满时,向TH0进1;当 TH0计满时,溢出使TF0=1,向CPU申请中断。 MCS-51单片机之所以设置几乎完全一 样 的方 式0和方式1,是出于与 MCS-48单片机兼容的。
6.2.3 模式2的逻辑结构及应用
M1 M0 =10时,选择模式2。逻辑结构 如图6-7所示。 T0的结构: TL0:8位的定时器/计数器; TH0:8位预置寄存器,用于保存初值。 工作过程:当TL0计满溢出时,TF0置1, 向CPU发出中断请求;同时引起重装操作 (TH0的计数初值送到TL0),进行新一轮 计数。