定时器实验报告
- 格式:docx
- 大小:942.69 KB
- 文档页数:12
一、实验目的1. 理解单片机定时器的工作原理和功能。
2. 掌握单片机定时器的编程方法,包括初始化、设置定时时间、启动定时器等。
3. 学会使用定时器实现定时功能,并通过实验验证其效果。
二、实验器材1. 单片机实验板2. 连接线3. 51单片机4. 计时器5. 示波器6. 电脑7. Keil软件三、实验原理定时器是单片机的一种重要外设,用于实现定时功能。
51单片机内部有两个定时器,分别为定时器0和定时器1。
定时器的工作原理是通过定时器计数器对机器周期进行计数,当计数器达到设定值时,定时器溢出,并产生中断请求。
定时器0和定时器1都具有四种工作模式,分别为:1. 模式0:13位定时器/计数器2. 模式1:16位定时器/计数器3. 模式2:8位自动重装模式4. 模式3:两个8位计数器本实验采用定时器0工作在模式1,实现50ms的定时功能。
四、实验步骤1. 将单片机实验板连接到电脑,并启动Keil软件。
2. 创建一个新的项目,并添加51单片机头文件(reg51.h)。
3. 编写定时器初始化函数,设置定时器0工作在模式1,并设置定时时间为50ms。
4. 编写定时器中断服务函数,用于处理定时器溢出事件。
5. 编写主函数,设置定时器中断,并启动定时器。
6. 编译并下载程序到单片机实验板。
7. 使用示波器观察定时器0的溢出信号。
五、实验代码```c#include <reg51.h>#define TIMER0_MODE1 0x01// 定时器0初始化函数void Timer0_Init() {TMOD &= 0xF0; // 清除定时器0模式位TMOD |= TIMER0_MODE1; // 设置定时器0工作在模式1TH0 = 0xFC; // 设置定时器0高8位初值TL0 = 0x18; // 设置定时器0低8位初值ET0 = 1; // 开启定时器0中断EA = 1; // 开启总中断TR0 = 1; // 启动定时器0}// 定时器0中断服务函数void Timer0_ISR() interrupt 1 {TH0 = 0xFC; // 重新加载定时器0高8位初值TL0 = 0x18; // 重新加载定时器0低8位初值// ... (其他处理)}void main() {Timer0_Init(); // 初始化定时器0while(1) {// ... (其他处理)}}```六、实验结果与分析1. 编译并下载程序到单片机实验板,使用示波器观察定时器0的溢出信号,可以看到定时器0每隔50ms产生一个溢出信号。
555定时器实验报告555定时器实验报告引言:555定时器是一种常用的集成电路,具有广泛的应用领域。
本实验旨在通过对555定时器的实验研究,探索其工作原理和特性,并进一步了解其在电子电路中的应用。
一、实验目的本实验的主要目的是:1. 了解555定时器的基本结构和工作原理;2. 掌握555定时器的基本参数和特性;3. 学习使用555定时器设计和实现简单的定时器电路。
二、实验原理555定时器是一种集成电路,由比较器、RS触发器和输出驱动器组成。
它可以工作在单稳态、多稳态和振荡器模式下,具有广泛的应用。
555定时器的主要参数有供电电压、触发电平、输出电流等。
三、实验步骤1. 实验前准备:准备好实验所需的555定时器芯片、电源、电阻、电容等器件。
2. 搭建电路:按照实验指导书上的电路图搭建555定时器电路。
3. 调试电路:根据实验指导书上的调试步骤,逐步调整电路参数,确保电路正常工作。
4. 测量参数:使用万用表等仪器,测量电路中的电压、电流等参数,并记录下来。
5. 分析结果:根据实验数据,分析555定时器的工作特性和参数变化规律。
6. 总结实验:总结实验过程中遇到的问题和解决方法,总结实验结果和心得体会。
四、实验结果与分析在实验过程中,我们观察到555定时器在不同电路条件下的稳定工作。
通过调整电路参数,我们成功实现了定时器电路的设计和实现。
根据测量数据和分析结果,我们得出以下结论:1. 555定时器的稳定工作与供电电压、触发电平等参数密切相关;2. 555定时器的输出电流能力有一定限制,需要根据具体应用场景选择合适的驱动电路;3. 555定时器可以通过改变电阻和电容值来调整输出波形的频率和占空比。
五、实验应用555定时器具有广泛的应用领域,常见的应用包括:1. 交通信号灯控制:通过555定时器实现交通信号灯的定时控制,实现交通流畅和安全;2. 脉冲发生器:利用555定时器的振荡特性,设计和实现各种脉冲发生器电路;3. 声音发生器:通过555定时器产生不同频率的方波,实现声音发生器电路;4. 脉宽调制:利用555定时器的占空比可调特性,实现脉宽调制电路。
一、实验目的1. 理解单片机定时器的原理及工作方式。
2. 掌握单片机定时器的编程方法,实现定时功能。
3. 学习使用定时器中断,处理定时器事件。
二、实验环境1. 硬件设备:MCS-51单片机实验板、示波器、电源等。
2. 软件环境:Keil C51、Proteus仿真软件。
三、实验原理1. 定时器概述定时器是单片机的一个重要组成部分,用于产生定时信号或测量时间。
MCS-51单片机内部有两个定时器,即定时器0和定时器1。
2. 定时器工作原理定时器通过内部计数器进行计数,当计数达到设定值时,产生一个定时中断,执行中断服务程序。
定时器的工作方式分为四种:方式0、方式1、方式2和方式3。
3. 定时器编程定时器编程主要包括以下几个步骤:(1)设置定时器工作模式:通过向定时器模式寄存器(TMOD)写入相应的值来设置定时器工作模式。
(2)设置定时器初值:通过向定时器寄存器(THx、TLx)写入相应的值来设置定时器初值。
(3)启动定时器:通过设置定时器控制寄存器(TCON)的相应位来启动定时器。
(4)编写定时器中断服务程序:当定时器溢出时,执行中断服务程序,实现相应的功能。
四、实验内容1. 实验一:定时器0定时50ms(1)硬件连接:将P1.0口连接到蜂鸣器。
(2)软件设计:- 设置定时器0工作在方式1,定时50ms。
- 开启定时器0中断。
- 编写定时器0中断服务程序,使蜂鸣器响50ms。
2. 实验二:定时器1计数脉冲(1)硬件连接:将P3.4口连接到信号发生器。
(2)软件设计:- 设置定时器1工作在方式2,计数P3.4口的脉冲信号。
- 开启定时器1中断。
- 编写定时器1中断服务程序,记录计数器计数值,并通过数码管显示。
3. 实验三:定时器0定时1s(1)硬件连接:将P1.0口连接到蜂鸣器。
(2)软件设计:- 设置定时器0工作在方式1,定时1s。
- 开启定时器0中断。
- 编写定时器0中断服务程序,使蜂鸣器响1s。
五、实验步骤1. 编写实验一程序,并使用Proteus进行仿真测试,验证程序功能。
定时器的设计实验报告1. 引言定时器是一种常见的计时装置,广泛应用于各个领域,如电子设备、工业自动化、交通运输等。
本实验通过设计一个基于脉冲计数的定时器电路,旨在研究其工作原理,探索其在实际应用中的可行性和性能表现。
2. 原理及设计2.1 工作原理脉冲计数定时器是一种通过计数器累加输入脉冲信号的数量来实现计时的装置。
其基本原理是利用脉冲信号的频率和计数器的计数速度之间的关系,通过计数器的累加值计算时间间隔。
2.2 设计步骤1. 确定定时器的时间基准。
时间基准可以选择外部脉冲输入或者由稳定的晶振产生。
2. 设计计数器的位数。
根据计时的范围确定计数器的位数,以保证计数范围的覆盖。
3. 计算计数器的计数速度。
根据计时的最大时间间隔和计数器的位数,计算所需的输入脉冲频率。
4. 根据计数器的位数和计数速度,选择合适的计数器芯片。
5. 配置计数器芯片的工作模式和输入脉冲的触发方式。
6. 连接电路并验证设计是否符合要求。
2.3 接线图_______________input > Counter > output________ Display_________3. 实验结果及分析3.1 实验设置- 输入脉冲频率:1kHz- 计数器位数:4位- 计数器芯片:74HC163- 时间基准:晶振(频率为10MHz)3.2 实验结果在实验过程中,我们通过将输入脉冲接到74HC163计数器芯片的CP 输入端,将74HC163的输出接到数码显示器,观察并记录实时的计数结果。
在实验进行中,我们发现计数器芯片的最大计数范围是15(4位二进制),对应的时间间隔为15ms(1kHz输入脉冲时)。
3.3 实验分析通过实验结果可以看出,该定时器电路能够准确计时,实际测量的时间结果与理论计算非常接近。
由于74HC163计数器芯片的高稳定性和高精度,使得定时器的性能表现较好。
然而,该设计存在一个缺点,即计数器位数的限制。
由于计数器位数的限制,导致定时的最大时间间隔受到了限制。
单片机定时器实验报告篇一:单片机实验报告——定时器实验四定时器实验自动化121班 36 张礼一.实验目的掌握定时器的工作原理及四种工作方式,掌握定时器计数初始值的计算,掌握如何对定时器进行初始化,以及程序中如何使用定时器进行定时。
二.实验仪器单片机开发板一套,计算机一台。
三.实验任务编写程序,使用单片机开发板上8位共阴极数码管的其中一位来显示0~9这九个字符,先从“0”开始显示,数字依次递增,当显示完“9”这个字符后,又从“0”开始显示,循环往复,每1秒钟变换一个字符,1秒钟的定时时间必须由定时器T0(或T1)提供。
开发板上的8位共阴极数码管与单片机的输入输出端口P1的硬件接线如图4-1所示,单片机P1口的8条数据线通过J3端子同时连接到 2片74HC573D锁存器的输入端,数码管的各个同名端分别连接后再与锁存器U2的8个输出端相连,每一位数码管的位选端分别与锁存器U3的8个输出端相连。
两片锁存器的输出使能端OE都恒接地,使得锁存器的内部数据保持器输出端与锁存器的输出端保持接通。
而U2的锁存使能端LE由P2.1控制,所以P2.1是段锁存;U3的锁存使能端LE由P2.0控制,所以P2.0是位锁存。
当锁存使能端为“1”时,则锁存器输入端的数据传送到输出端;当锁存使能端为“0”时,锁存器输入端的数据则不能传送到输出端;因此段码和位码通过锁存器分时输出。
汇编语言程序流程如图4-2:四.实验步骤:1.数码管的0~9的字型码表如下:2.参考图4-2所给的程序流程图编写实验程序。
(注:以下程序为两位60秒计数程序)#include sbit wei=P2^0; sbit duan=P2^1;char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};int i,j,k,num,shi,ge; void delay(int a) {for(i=0;i void display(int shi,int ge){wei=1;P1=0xfe;wei=0;duan=1;P1=table[shi];duan=0;wei=1; delay(5);P1=0xfd;wei=0; duan=1;P1=table[ge];duan=0; }void main() {TMOD=0x01;TH0=(65536-45872)/256; TL0=(65536-45872)%256; EA=1; ET0=1; TR0=1; num=0; while(1) {delay(5);display(shi,ge); } }void T0_time() interrupt 1 {TH0=(65536-45872)/256; TL0=(65536-45872)%256; k++; if(k==20) { k=0; num++;if(num==60)num=0; shi=num/10; ge=num%10; } }3.实验接线,如图4-1。
最新PLC实验三:定时器实验报告实验目的:1. 理解PLC定时器的工作原理及其在自动化控制中的应用。
2. 学习如何编程和配置PLC中的定时器。
3. 掌握使用不同类型的定时器(如TON, TOF, RET)进行时间控制的技巧。
实验设备和材料:1. 西门子S7-1200 PLC2. TIA Portal编程软件3. HMI触摸屏(可选)4. 电源线和接线工具5. 定时器实验指导书实验步骤:1. 打开TIA Portal编程软件,创建一个新的项目。
2. 在项目中添加S7-1200 PLC,并进行硬件配置。
3. 根据实验指导书的要求,编写PLC程序,包括设置定时器的预设时间和动作。
4. 使用TON(接通延时)定时器,实现当输入信号激活后,输出信号在设定的时间后激活。
5. 使用TOF(断开延时)定时器,实现当输入信号断开后,输出信号保持激活一段时间然后断开。
6. 使用RET(循环重置)定时器,创建一个周期性的任务,如每隔一定时间激活一次输出信号。
7. 将编写的程序下载到PLC中。
8. 连接电源,启动PLC,并监控程序运行情况。
9. 观察HMI触摸屏(如果使用)上的定时器状态和输出信号的变化。
10. 记录实验数据和观察结果,验证定时器的工作效果。
实验结果分析:1. 描述定时器在实验中的具体应用和表现。
2. 分析定时器参数设置对实验结果的影响。
3. 讨论在实际工业控制中定时器的重要性和应用场景。
实验结论:总结本次实验中学习到的定时器编程知识,以及定时器在自动化控制中的作用和意义。
指出实验中遇到的问题和解决方案,以及可能的改进方向。
注意事项:1. 在进行接线和设备操作时,务必遵守安全规程。
2. 确保PLC程序正确无误后再下载到控制器中。
3. 在实验过程中,应仔细观察并记录定时器的行为,以便于后续分析。
以上是定时器实验报告的基本内容,具体细节和数据应根据实验过程中的实际情况进行填充和调整。
一、实验目的1. 理解定时器的基本原理和工作方式。
2. 掌握定时器的配置和使用方法。
3. 通过编程实现定时器的定时功能。
4. 学习定时器中断的应用。
二、实验环境1. 实验设备:单片机实验板、电源、连接线等。
2. 实验软件:Keil uVision 4、IAR EWARM等C语言开发环境。
三、实验原理定时器是一种用于实现时间延迟的硬件模块,它能够在预定的时间内产生中断或完成特定的操作。
定时器通常由计数器、控制寄存器、时钟源等组成。
定时器的工作原理是利用时钟源产生的时钟信号对计数器进行计数,当计数器达到预设值时,触发中断或完成特定操作。
四、实验内容1. 定时器基本配置(1)设置定时器模式:根据实验需求,选择定时器的工作模式(如模式0、模式1等)。
(2)设置定时器时钟源:选择定时器时钟源(如系统时钟、外部时钟等)。
(3)设置定时器计数初值:根据实验需求,设置定时器计数初值。
2. 定时器定时功能实现(1)编写程序初始化定时器:配置定时器模式、时钟源、计数初值等。
(2)编写定时器中断服务程序:在中断服务程序中实现定时功能,如控制LED闪烁、读取传感器数据等。
3. 定时器中断应用(1)配置定时器中断:设置定时器中断优先级、中断使能等。
(2)编写定时器中断服务程序:在中断服务程序中实现所需功能,如采集数据、发送数据等。
五、实验步骤1. 编写程序初始化定时器:设置定时器模式、时钟源、计数初值等。
2. 编写定时器中断服务程序:实现定时功能,如控制LED闪烁。
3. 编写定时器中断配置程序:设置定时器中断优先级、中断使能等。
4. 编译、下载程序:将编写好的程序编译生成HEX文件,通过编程器下载到实验板上。
5. 运行实验:观察实验现象,如LED闪烁频率、数据采集等。
六、实验结果与分析1. 定时器定时功能实现实验结果显示,定时器能够按照设定的定时时间产生中断,中断服务程序能够正确执行。
例如,LED闪烁频率与定时时间一致。
定时器实验报告
一、实验目的
学习如何在单片机中使用定时器,进一步理解定时器的工作
原理和使用方法。
二、实验器材
单片机开发板、电脑、LED灯或蜂鸣器等外部设备。
三、实验原理
定时器是一种内部的计时设备,可以通过设置定时器的工作
方式、计时单位和计时周期来完成不同的定时任务。
单片机上通常会有一个或多个定时器模块,我们可以通过配置和操作这些定时器模块来实现各种计时、延时、定时触发等功能。
四、实验步骤
1. 初始化定时器:设置定时器工作方式、计时单位和计时周期。
2. 启动定时器:开始计时。
3. 监测定时器中断:定时器计时完成后会触发中断。
4. 处理定时器中断:在中断服务程序中进行相应的操作,如
控制LED灯闪烁、发出蜂鸣器声音等。
5. 关闭定时器:计时完成后关闭定时器。
五、实验结果和分析
在实验中,我们可以通过设置不同的计时器工作方式、计时
单位和计时周期来实现不同的定时效果。
例如,如果将定时器设置为周期性计时方式,计时单位为微秒,计时周期为1000,
那么定时器每隔1毫秒(1000微秒)就会触发一次中断,我
们可以在中断服务程序中控制LED灯或蜂鸣器进行响应操作。
六、实验心得
通过本次实验,我进一步了解了定时器的工作原理和使用方法。
定时器是单片机中常用的功能模块,可以实现各种时间相关的功能。
掌握了定时器的使用,有助于提高单片机系统的定时、延时、调度等能力,为后续的项目开发和应用打下良好的基础。
实验六定时器 / 计数器一、实验目的 :⒈学会8253芯片和微机接口的原理和方法。
⒉掌握8253定时器/计数器的工作方式和编程原理。
二、实验内容 :用8253的0通道工作在方式3,产生方波。
三、实验接线图 :四、编程指南:⒈8253芯片介绍8253是一种可编程定时/计数器,有三个十六位计数器,其计数频率范围为0-2MHz,用+5V单电源供电。
8253的功能用途:⑴延时中断⑸实时时钟⑵可编程频率发生器⑹数字单稳⑶事件计数器⑺复杂的电机控制器⑷二进制倍频器8253的六种工作方式:⑴方式0:计数结束中断⑷方式3:方波频率发生器⑵方式l:可编程频率发生⑸方式4:软件触发的选通信号⑶方式2:频率发生器⑹方式5:硬件触发的选通信号五、实验程序框图:六、实验步骤:⒈按图连好实验线路:⑴8253的GATE0接+5V。
⑵8253的CLK0插孔接分频器74LS393(左下方)的T2插孔,分频器的频率源为8.0MHZ,(3) T→8.0MHZ。
⒉运行实验程序:在系统处于提示符“P.”状态下,按SCAL键,输入1290,按EXEC键。
⒊用示波器测量8253的OUT0输出插孔有方波产生。
七、实验结果:八、实验程序清单:CODE SEGMENT ;H8253.ASMASSUME CS:CODEORG 1290HSTART:JMP TCONTTCONTRO EQU 0043H ;控制口地址TCON0 EQU 0040H ;定时器0地址TCONT: MOV DX,TCONTRO ;取控制口地址MOV AL,36H ;设控制字OUT DX,AL ;输出控制字MOV DX,TCON0 ;取定时器0地址MOV AL,00HOUT DX,AL ;初值0送定时器0MOV AL,04HOUT DX,AL ;初值04送定时器0MOV DX,TCONTRO ;取控制口地址MOV AL,36H ;取控制字OUT DX,AL ;输出控制字MOV DX,TCON0 ;取定时器0地址MOV AL,00HOUT DX,AL ;初值0送定时器0MOV AL,02HOUT DX,AL ;初值02送定时器0JMP $ ;CPUT踏步,定时器自动工作CODE ENDSEND START说明:系统提供用户使用的空间为00000H-0FFFFH,用于存放、调试实验程序。
定时器的实验报告1. 实验目的本实验旨在通过使用定时器,了解定时器的基本原理和应用。
2. 实验原理定时器是一种重要的计时工具,其基本原理是通过一个稳定的时钟信号,计算经过的时间并进行相应的操作。
定时器通常由一个计数器和一个时钟源组成。
定时器的计数器可以根据预设的值不断自增,当计数器达到设定值时,就会触发相应的中断或输出信号。
时钟源为定时器提供稳定的时钟脉冲,可以通过外部晶振、振荡器等方式提供。
3. 实验材料•单片机开发板•电脑•USB 数据线4. 实验步骤步骤1:准备工作连接开发板和电脑,确保开发板正常工作,并具备编程的能力。
步骤2:编写代码使用编程软件打开官方提供的开发工具,创建一个新项目。
在代码文件中添加定时器相关的代码,设置计数器的初始值和触发中断的条件。
步骤3:编译和烧录编译代码,并将生成的目标文件烧录到开发板中。
确保烧录成功,无误后进行下一步。
步骤4:实验测试将开发板连接到示波器或其他外设,观察定时器中断或输出信号的波形和频率。
根据需要,可以调整定时器的计数器初始值、触发条件等参数,观察不同的实验结果。
5. 实验结果与分析经过实验测试,可以观察到定时器正常工作,并且在达到预设值时触发中断或输出信号。
根据预先设定的参数,可以得到不同的定时器工作效果。
通过观察波形和频率,可以验证定时器的准确性和稳定性。
6. 实验总结本实验通过使用定时器,掌握了定时器的基本原理和应用。
定时器在嵌入式系统和计时器等领域具有重要的作用。
掌握定时器的使用,可以为后续的实验和项目开发提供参考和基础。
在实验过程中,需要注意定时器参数的设置和调整,以达到预期的结果。
定时器的使用还需要考虑中断优先级、占用资源等相关因素,并根据实际需求进行适当的优化。
7. 参考资料•数据手册,XX单片机系列。
•XX单片机开发手册。
以上是关于定时器的实验报告的基本结构,根据实际情况和实验过程,可以进行合理的扩展和修改。
在实验报告中,需要包含相关材料、步骤、结果和分析,以便于他人理解和参考。
定时器实验报告学生:何绍金学号:************专业班级:自动化1202 指导老师:***2014年12月一、实验目的1、掌握定时器的工作原理。
2、学习单片机定时器的应用设计和调试。
二、实验设备统一电子开发平台。
三、实验要求连接电路并编写程序,使单片机定时器在一定工作模式下,完成9999.99s 倒计时。
四、实验原理系统8051中有三个16 位定时器/计数器:定时器0、定时器1 和定时器2。
每一个包含两个8 位寄存器,THx和TLx(这里,x=0、1 或2)。
所有这些操作既可配置为定时器或事件记数器。
定时器功能,TLx 寄存器每12 个时钟周期或1 个周期加1,通过软件来选择。
因此可认为为计数器时钟周期。
每记12 个时钟周期,计数速率达1/12 的晶振频率。
计数器功能,下降沿时寄存器加1,根据外部输入引脚T0、T1 或T2。
在这些功能中,每个时钟周期对外部输入信号(T0 引脚和T1 引脚)进行采样,每12 个时钟周期对T2 引脚采样。
当采样信号出现一个高电平接着一个低电平,计数加1。
当检测到跳变时新计数值出现在寄存器中。
对定时器0 和定时器1 来说,需要用两个时钟周期来识别下降沿跳变,最大的计数速率为1/2 的晶振频率;对于定时器2,需要用24 个时钟周期来识别下降沿跳变,最大计数速率为1/24的晶振频率。
外部输入信号没有严格的周期限制,但是要确保在电平改变前至少有一次采样,对定时器0 和定时器1来说信号应该至少保持一个时钟,定时器2 需要12 个时钟周期。
对定时器0 和定时器2 来说,除了标准8051 定时器的功能之外,添加了一些新的特征。
下面的子章节将详细描述这些定时器/计数器。
1.定时器0 和定时器1定时器或计数器功能通过专用寄存器TMOD 的控制位C/T 来选择,如下所示。
这两个定时器/计数器有四种工作模式,通过TMOD 的位对(M1,M0)来选择。
这两个定时器/计数器的模式0、1 和模式2 是相同的,模式3 是不同的。
除了TMOD 之外,其它专用寄存器TCON 和AUXR2 包含几个控制位和状态位与这两个定时也相关,也如下所示。
TMOD (地址=89H,定时器/计数器模式控制位, 复位值=0000,0000B)GATE:当门控位置位时,只有在/INT0 或/INT1 引脚是高电平且TR0 或TR1 控制位置位时,定时器/计数器0 或1 使能。
当门控制位清零时,只要TR0 或TR1 置1 定时器0 或1 使能。
C/T:定时器或计数器选择器。
清零为定时器功能(从内部系统时钟输入)。
置位为计数器功能(从T0 或T1 引脚输入)。
M0 M1 工作模式0 0 8 位定时器/计数器。
THx 与TLx 作为5 位预分频器0 1 16 位定时器/计数器。
THx 与TLx 串联;没有分步频器1 0 8 位自动重载定时器/计数器。
THx 保持一个值,并在每次溢出时加载到TLx 1 1 (定时器0)TL0 是一个8 位定时器/计数器并通过标准定时器0 的控制位控制。
TH0仅仅是一个8 位定时器通过定时器1 的控制位控制1 1 (定时器1)定时器/计数器停止TCON (地址=88H,定时器/计数器控制位,复位值=0000,0000B)TF1:定时器1 溢出标志位。
定时器/计数器溢出时由硬件置位。
处理器进入中断向量程序由硬件清零。
TR1:定时器1 运行控制位。
通过软件置位/清零开启或关闭定时器/计数器1。
TF0:定时器0 溢出标志位。
定时器/计数器溢出时由硬件置位。
处理器进入中断向量程序由硬件清零。
TR0:定时器0 运行控制位。
通过软件置位/清零开启或关闭定时器/计数器0。
AUXR2 (地址=A6H,辅助寄存器2,复位值=0000,0000B)T0X12:当C/T=0 时,定时器0 的时钟源选择。
置位选择Fosc 作为系统时钟源,清零选择Fosc/12 作为时钟源。
T1X12:当C/T=0 时,定时器1 的时钟源选择。
置位选择Fosc 作为系统时钟源,清零选择Fosc/12 作为时钟源。
T0CKOE:置位/清零来使能/禁止从P3.4 输出定时器0 时钟。
四种工作模式在以下的文本中描述。
2.定时器2定时器2 是一个16 位定时器/计数器,既可作为一个定时器也可以作为一个事件计数器,通过专用寄存器T2CON的C/T2 位来选择。
定时器2 有四种工作模式:捕获、自动加载(向上或向下计数)、波特率发生器和可编程时钟输出,通过专用寄存器T2CON 和T2MOD 来选择,如下所示。
T2CON (地址=C8H, 定时器/计数器2控制寄存器,复位值=0000,0000B)TF2:定时器2 溢出标志位,定时器2 溢出置位且必须通过软件清零。
当RCLK=1 或TCLK=1 时,TF2 不会被置位。
EXF2:定时器2 外部标志位,在EXEN2=1 时,且在T2EX 上有负跳变时加载或捕获将引起置位。
当定时器2 中断使能时,EXF2=1 时将引起CPU 进入定时器2 中断向量程序。
EXF2 必须通过软件清零。
EXF2 在向上/向下计数器模式不会产生中断。
RCLK:接收时钟控制位。
置位时,串行口使用定时器2 溢出脉冲来接收,在模式1 和模式3 时。
RCLK=0 使用定时器1 溢出脉冲来产生接收时钟。
TCLK:传送时钟控制位。
置位时,串行口使用定时器2 溢出脉冲来发送,在模式1 和模式3 时。
TCLK=0 使用定时器1 溢出脉冲来产生发送时钟。
EXEN2:定时器2 外部使能位。
置位时,如果定时器2 没有用作串行口时钟,在T2EX 的负跳变时捕获或加载并作为结果TR2:定时器2 的启始和停止位。
逻辑1 时启动定时器。
C/T2:定时器或计数器选择。
清零时,选择内部定时器。
置位时,选择外部事件计数器(下降沿触发)。
CP/RL2:捕获/加载控制位。
置位时,如果EXEN2=1,在T2EX 的负跳变时将产生捕获。
清零时,如果EXEN2=1,定时器2 溢出或T2EX 上有负跳变时将产生自动加载。
当RCLK=1 或TCLK=1 时,这一位被忽略并强制加载在定时器2溢出时。
T2MOD (地址=C9H,定时器/计数器2 控制寄存器,复位值=xxxx,xx00B)T2OE:定时器2 时钟输出使能位,置位使能清零禁止。
DCEN:定时器2 向下计数使能位,置位使能清零禁止。
表1. 定时器2 运行模式3.波特率发生器模式T2CON 寄存器的RCLK 和或RCLK 位允许串行口发送和接收波特率既可源自定时器1 或定时器2。
当TCLK=0时,定时器1 作为串行口传送波特率发生器。
当TCLK=1,定时器2 作为串行口传送波特率发生器。
RCLK 对串行口接收波特率有相同的功能。
有了这两位,串行口可能有不同的接收和发送波特率,一个通过定时器1 来产生,另一个通过定时器2 来产生。
图9 示定时器2 在波特率发生器模式。
波特率发生器模式像自动加载模式,翻转时将把寄存器RCAP2H 和RCAP2L 的值加载到定时器2 的寄存RCAP2H 和RCAP2L 的值由软件预置。
模式1 和3 的波特率由定时器2 的溢出速率决定定时器既可配置为“定时器”或“计数器”工作方式。
在许多应用场合,配置成“定时器”工作方式(C/T2=0)。
当定时器2 作为波特率发生器时定时器操作是不同的。
通常,作为一个定时器将在1/12 的系统时钟频率加1。
作为一个波特率发生器,系统时钟频率的1/2 加1。
波特率计算公式如下:定时器 2 作为一个波特率发生器模式如图9 所示,只有在T2CON 寄存器的位RCLK 和/或TCLK=1 为1 时有效。
注意TH2 翻转不会置位TF2,也不会产生中断。
因而,当定进器2 在波特率发生器模式时定时器中断不需要禁止。
如果EXEN2(T2 外部中断使能位)置位,T2EX(定时器/计数器2 触发输入)的负跳变将置位EXF2(T2 外部标志位),但是不会引起从(RCAP2H,RCAP2L)到(TH2,TL2 的)重载。
因此,当定时器2 作为波特率发生器时,如果需要的话,T2EX也可以作为传统的外部中断。
当定时器2 在波特率发生器模式时,不能试着去读TH2 和TL2。
作为一个波特率发生器,定时器2 在1/2 的系统时钟频率或从T2 引脚的异步时增1;在这些条件下,读写操作将会不正确。
寄存器RCAP2 可以读,但是不可以写,因为写和重载重叠并引起写和/或加载错误。
在进入定时器2 或RCAP2 寄存器时定时器不可以关闭(清零TR2)。
4.实验系统的原理图如下图 1 单片机原理图五、程序流程图程序流程图如下所示:六、实验思考题1、对8051 单片机的可编程计数器/定时器的工作原理进行说明。
答:每个时钟周期对外部输入信号(T0 引脚和T1 引脚)进行采样,每12 个时钟周期对T2 引脚采样。
当采样信号出现一个高电平接着一个低电平,计数加1。
当检测到跳变时新计数值出现在寄存器中。
对定时器0 和定时器1 来说,需要用两个时钟周期来识别下降沿跳变,最大的计数速率为1/2 的晶振频率;对于定时器2,需要用24 个时钟周期来识别下降沿跳变,最大计数速率为1/24的晶振频率。
外部输入信号没有严格的周期限制,但是要确保在电平改变前至少有一次采样,对定时器0 和定时器1来说信号应该至少保持一个时钟,定时器2 需要12 个时钟周期。
2、请说明在本实验中T0 计数器是怎样工作的?答:将30H~35H 内改值,使每进入一次定时中断,30H~35H 内数字组成的6 位数减1附:实验源代码:1.倒计时程序:;********************ASM汇编实验*******************; 工程:; 晶振: 11.0592M;*************************************************//#include "REG_MPC82G516.INC" /* 如果用到MPC82G516的特殊寄存器请包含这个头文件*/ORG 0000HSJMP MAINORG 0030H ;将数码管所要显示的数据保存在30H~35H 之中SJMP T0_INTMAIN: ;以下编写程序完成注释要求的步骤:MOV TMOD,#01H ;T0 定时方式1MOV TH0,#0DCH;定时***************MOV TL0,#00H ; TL0 赋值SETB TR0 ;启动T0MOV IE,#82H;开中断MOV DPTR,#TABLOOP1:; 将30H~35H 地址内的值均赋为9 ;注意:只有R0、R1 可以间接赋值MOV R1,#30HLOOP2: MOV @R1,#09HINC R1CJNE R1,#36H,LOOP2START: MOV R2,#00HMOV R1,#30HLED_123: ;控制前3 个数码管的显示MOV A,@R1MOVC A,@A+DPTRCALL CONTROL_164CALL CONTROL_138CALL DELAYINC R2 ;间接通过R2 的值控制数码管显示的次序INC R2 ;INC R1CJNE R1,#33H,LED_123LED_4: ;控制第4 个数码管的显示(带小数点)MOV A,@R1MOVC A,@A+DPTRADD A,#80HCALL CONTROL_164CALL CONTROL_138CALL DELAYINC R1LED_56: ;控制第5、6 个数码管的显示INC R2INC R2MOV A,@R1MOVC A,@A+DPTRCALL CONTROL_164CALL CONTROL_138CALL DELAYINC R1CJNE R1,#36H,LED_56JMP STARTCONTROL_164:MOV R3,#08HLOOP_0: CLR P2.0MOV R4,AANL A,#080HCJNE A,#080H,LOOP_1SETB P2.7JMP LOOP_2LOOP_1: CLR P2.7LOOP_2: SETB P2.0MOV A,R4RL ADJNZ R3,LOOP_0RETCONTROL_138:MOV A,#0F0H ; 0XF0=11110000(二进制)ADD A,R2 ; 需直接通过P21、P22、P23 的值控制数码管显示的次序MOV P2,A ; 将A 的值赋给P2 端口,则,R2 需每次加2 才能使P21 发生一次改变RETT0_INT: ;定时中断;以下请仿照中断INT0 编写程序完成如下步骤:PUSH PSW;1、保存PSW、ACC 寄存器;PUSH ACCCLR EAMOV TH0,#0DCHMOV TL0,#00H;3、对TH0,TL0 赋值,定时***************;将30H~35H 内改值,使每进入一次定时中断,30H~35H 内数字组成的6 位数减1MOV R0,#35HT0_LOOP0: CJNE @R0,#0H,T0_ENDMOV @R0,#9HDEC R0JMP T0_LOOP0T0_END: DEC @R0SETB EA ;开启全局中断;以下编写程序完成注释要求的步骤:POP ACCPOP PSW ;恢复保存寄存器数据。