单片机定时器实验
【报告】单片机定时器计数器实验报告
【关键字】报告
单片机定时器计数器实验报告
篇一:单片机计数器实验报告
计数器实验报告
㈠实验目的
1. 学习单片机内部定时/计数器的使用和编程方法;
2. 进一步掌握中断处理程序的编程方法。
㈡实验器材
1. 2. 3. 4. 5.
G6W仿真器一台MCS—51实验板一台PC机一台电源一台信号发生器一台㈢实验内容及要求
8051内部定时计数器,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数,使用8051的T1作定时器,50ms中断一次,看T0内每50ms来了多少脉冲,将计数值送显(通过LED发光二极管8421码来表示),1秒后再次测试。
㈣实验说明
1. 本实验中内部计数器其计数器的作用,外部事件计数器脉冲由P3.4引入
定时器T0。单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变,这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样,同时这就决定了输入波形的频率不能超过机器周期频率。2. 计数脉冲由信号发生器输入(从T0端接入)。
3. 计数值通过发光二极管显示,要求:显示两位,十位用L4~L1的8421
码表示,个位用L8~L5的8421码表示
4. 将脉搏检查模块接入电路中,对脉搏进行计数,计算出每分钟脉搏跳动
次数并显示
㈤实验框图(见下页)
程序源代码ORG 00000H LJMP MAIN
ORG 001BH AJMP MAIN1 MAIN:
MOV SP,#60H
MOV TMOD,#15H MOV 20H,#14H MOV TL1,#0B0H MOV TH1,#3CHMOV TL0,#00H
单片机定时器实验原理
单片机定时器实验原理
一、概述
单片机定时器是单片机的重要组成部分,它能够实现定时控制、时间间隔生成等功能。通过单片机定时器实验,可以更好地了解单片机的内部结构和工作原理,为进一步开发单片机应用系统打下坚实的基础。
二、实验目的
1. 掌握单片机定时器的结构和原理。
2. 学会使用单片机定时器进行时间间隔控制。
3. 了解单片机定时器的应用范围和限制。
三、实验原理
1. 单片机定时器的结构
单片机定时器通常由一个计数器和一个控制逻辑组成。计数器负责记录脉冲数,控制逻辑负责控制计数器的计数和复位。单片机定时器通常采用可编程计数脉冲,可以实现任意时间间隔的生成。
2. 单片机定时器的原理
单片机定时器的工作原理是基于计数器的计数。当单片机接收到一个启动信号时,计数器开始计数,当计数达到预设的时间间隔时,单片机输出相应的信号或执行相应的操作。通过改变计数器的预设值,可以改变时间间隔的长短。
3. 单片机定时器的应用
单片机定时器在许多领域都有应用,如智能家居、工业控制、通信设备等。在智能家居中,可以通过单片机定时器控制家电设备的开启和关闭;在工业控制中,可以通过单片机定时器实现生产线的自动
化控制;在通信设备中,可以通过单片机定时器实现时间戳的生成和数据传输的时间控制。
四、实验步骤
1. 准备实验器材和软件环境,包括单片机、定时器芯片、编程器、开发板等。
2. 连接实验设备,并调试确保连接正常。
3. 编写实验程序,并上传到单片机中。
4. 观察并记录实验结果,分析误差原因。
5. 根据实验结果,调整程序参数,进行多次实验,直到达到满意的效果。
实验4定时器
EA=1;//打开中断允许总控制位
ET0=1;//打开定时器0溢出中断允许位
TL0=0x00;//定时器0的计数器赋初值
TH0=0xb8;
TR0=1;//启动定时器0
while(1);//等待中断
}
5.调试程序,烧写到单片机中。
六.思考题
1.如果用定时器1来实验的任务,该如何修改主程序和中断处理程序。
位7
位6
位5
位4
位3
位2
位1
位0
EA
ES
ET1
EX1
ET0
EX0
AFH
AEH
ADH
ACH
ABH
AAH
A9H
A8H
3.简易数字钟原理
时钟是能显示时、分、秒信号的装置。由于单片机的定时器是对高精度的系统时钟进行计数定时的,利用定时溢出信号,就可以形成一个简单的数字钟。数字钟的控制流程图如右图所示。用单片机的定时器0产生20ms中断,中断50次,就是1s。hour、minute、second分别为时分秒计数器。时分秒数据通过液晶屏显示出来。20ms的定时中断到达后,50进制的计数器count50加1,然后判断count50是否等于50。如果不等于50,退出中断函数。如果等于50,就表明1s时间到达了,将count50清零,秒计数器second加1。然后判断秒计数器是否计到60了,如果不等于60,则在液晶屏上更新显示的时分秒信息。如果刚好等于60,则将秒计数器second清零,同时分钟计数器minute加1。判断minute是不是等于60。不等于60,更新了液晶上显示的时间信息后退出中断程序。如果minute等于60,则清零minute计算器,同时时计数器hour加1。最好判断hour是不是为24。如果hour不等于,则更新显示的时间;如果刚好为24,则清hour后显示时间信息,再退出20ms定时中断函数。
定时器实验报告
定时器实验报告
一、实验目的
学习如何在单片机中使用定时器,进一步理解定时器的工作
原理和使用方法。
二、实验器材
单片机开发板、电脑、LED灯或蜂鸣器等外部设备。
三、实验原理
定时器是一种内部的计时设备,可以通过设置定时器的工作
方式、计时单位和计时周期来完成不同的定时任务。单片机上通常会有一个或多个定时器模块,我们可以通过配置和操作这些定时器模块来实现各种计时、延时、定时触发等功能。
四、实验步骤
1. 初始化定时器:设置定时器工作方式、计时单位和计时周期。
2. 启动定时器:开始计时。
3. 监测定时器中断:定时器计时完成后会触发中断。
4. 处理定时器中断:在中断服务程序中进行相应的操作,如
控制LED灯闪烁、发出蜂鸣器声音等。
5. 关闭定时器:计时完成后关闭定时器。
五、实验结果和分析
在实验中,我们可以通过设置不同的计时器工作方式、计时
单位和计时周期来实现不同的定时效果。例如,如果将定时器设置为周期性计时方式,计时单位为微秒,计时周期为1000,
那么定时器每隔1毫秒(1000微秒)就会触发一次中断,我
们可以在中断服务程序中控制LED灯或蜂鸣器进行响应操作。
六、实验心得
通过本次实验,我进一步了解了定时器的工作原理和使用方法。定时器是单片机中常用的功能模块,可以实现各种时间相关的功能。掌握了定时器的使用,有助于提高单片机系统的定时、延时、调度等能力,为后续的项目开发和应用打下良好的基础。
单片机实验三-定时计数器实验报告
南昌大学实验报告
学生姓名:学号:专业班级:
实验类型:□验证□综合■设计□创新实验日期:实验成绩:
实验三定时计数器实验
(一)实验目的
1. 熟练掌握STC型开发板的使用方法和注意事项;
2. 掌握应用USB_ISP烧录过程;
3. 掌握单片机中断原理;
4. 掌握定时器的初始化和定时模式编程。
(二)设计要求
采用定时器0/1做16位自动重装(方式0), 中断频率为1000HZ,中断函数从P1.7/ P1.6/ P4.7取反输出500HZ方波信号。如果由于频率问题实验现象无法观察,请在中断程序中想办法实现。(三)实验原理
1. 开发板部分电路示意图
2. 定时器的使用
在应用定时/计数器资源时,按照以下几个步骤进行:
(1)确定工作方式,对方式控制寄存器TMOD赋值
(2)根据要求计算初值并装入寄存器THx、TLx,实际定时时间Tc=(M-X)×Tp
(3)根据需要开放定时/计数器中断,即EA、ETx置1
(4)启动定时/计数器开始工作,即TRx位置1
(5)编写中断服务程序或查询处理方式程序
定时器/计数器T0的工作方式0:当M1,M0为00时,定时器/计数器被设置为工作方式0,此时为13位计数器,由TLx(x=0,1)的低5位和THx的高8位构成。TLx低5位溢出则向THx进位,THx计数溢出则把TCON中溢出标志位TFx置1。
3. 单片机中断系统
当中断请求源发出中断请求时,如果中断请求被允许的话,单片机暂时中止当前正在执行的主程序,转到中断处理程序处理中断服务请求。中断服务请求处理完后,再回到原来被中止的程序之处(断点),继续执行被中断的主程序。
单片机实验五_定时计数器应用
单片机实验五_定时计数器应用
实验五定时计数器应用
一、实验目的:
1、单片机系统中,可以用软件或硬件定时,当定时时间较长,定时准确率要求较高时,应采用硬件定时。
MCS—51系列单片机中有2个16位的可编程定时/计数器T0和T1,通过本实验要求掌握T0、T1的初始化编程和应用。
2、学会应用烧录软件XLISP和keil-uvision2集成调试软件进行实验。掌握实验的步骤并能得到正确的实验结果。
二、实验内容
1、定时计数器应用:
8只LED呈流水灯显示,用定时计数器定时,使流水灯的间隔时间为1S。
用定时计数器0实现定时1S,采用软硬件结合方式:T0方式0,定时50ms,循环程序20次。
2、数码管显示:
要求数码管显示0-9,间隔时间0.5S,采用定时计数器T1实现。
3、思考题:
用定时计数器T0和T1级联定时3S。
三、实验步骤
1、硬件连接
(1)使用USB线(电源)和串口线(通信),将XL2000综合仿真仪与微型
计算机连接起来; CPU选用AT89S51,采用程序直接写入方式;将JP17的开关(编程仿真模式)置为弹起状态,选择编程模式;
(2)定时计数器应用:使用8P的连接线将CPU的P0口与JP32(8个发光二极管)相连。
(3)数码管显示:P1口接数码管(JP19)。
2、软件设计
(1) Kiel软件操作同实验一:建立工程并存储、选择芯片89C51、新建文件输入程序并保存,将文件加入到工程中。
(2)修改属性:如右图,点击工程下拉菜单中的”目标’目标1’属性”; 单击”目标”,输入仿真器的频率12(MHz);
实验五定时器实验
实验五定时器实验
一.实验要求
由8051内部定时器1,按方式1工作,在P0口的P0.0引脚产生一个方波信号,使用示波器观察波形,并将获得的波形与定时器设定的时间相比较。
二.实验目的
1.学习8051内部计数器的使用和编程方法。
2.进一步掌握中断处理程序的编程方法。
三.实验电路及连线
P0.0接LED,分出一条线接虚拟示波器。
四.实验说明
1.关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。内部计数器在单片机中主要有定时器和计数器两个功能。本实验用的是定时器,有关计数器的说明请查阅实验七。
2.内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振荡器周期。因为实验系统的晶振是11.0592MHz,所以定时常数的设置可按以下方法计算:
机器周期=12÷11.0592MHz=1.0857μS
(65536-定时常数)*1.0857μS=50mS
定时常数=4C00H
3.定时器的有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置定时器/计数器的工作方式0~3,并确定用于定时还是用于计数。TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。
4.在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到
关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。
五.实验框图
程序框图:
N
查Y
显
T1LED.ASM主程序框图
五、实验步骤
1.观察电路原理图,确定51定时器的工作方式为方式1,计算计时器的初值,编程实现工作方式的设置,中断初始化设置。
单片机实验4-定时器实验
五、实验步骤: 实验步骤:
1. 实验连线:用导线连接 区的 实验连线:用导线连接A2区的 区的P1.5口和 口和D1 口和 区的LED1。 区的 。 2. 打开 打开keil c51软件,把预先编好的程序输入 软件, 软件 机中。 到PC机中。 机中 3. 编译程序,在编译无错的情况下再进行硬件 编译程序, 调试。 调试。 4. 观察实验结果:LED1灯显示状态为亮 灭 观察实验结果: 灯显示状态为亮4S灭 灯显示状态为亮 1S,循环显示。如有误,则退出调试状态, ,循环显示。如有误,则退出调试状态, 修改源程序,直至出现正确的结果。 修改源程序,直至出现正确的结果。
二. 实验设备及器件 1. PC机 机 2. DP-51PROC单片机综合仿真实验仪 单片机综合仿真实验仪
实验原理图: 三. 实验原理图:
+5V P1.5
LED1
MCU
四、实验内容: 实验内容: 编写一程序,利用定时器 定时器T0(T1)在P1.5口 编写一程序,利用定时器 在 口 输出占空比为1/5的如下矩形波 的如下矩形波: 输出占空比为 的如下矩形波:
六.实验参考程序: 实验参考程序: 实验参考程序 ORG 0000H CLR P1.0 LJMP MAIN MOV TL0,#0FDH ORG 000BH MOV TH0,#4BH LJMP SERVE SETB EA ORG 0030H SETB ET0 MAIN: MOV R0,#14H SETB TR0 MOV R1,#50H HERE: LJMP HERE MOV R3,#01H MOV R2,#00H MOV TMOD,#01H
单片机-实验二-定时器计数器实验
实验二定时器/计数器实验
一、实验目的
1、掌握数码管动态驱动方式的工作原理;
2、掌握单片机定时器中断服务程序的编写方法;
3、掌握基于单片机定时器中断调度方式的数码管动态显示驱动程序的编写方法。
二、实验内容及要求
单片机通过P1 端口连接独立数码管,INT0 引脚(P3.2)和T0 引脚(P3.4)各连接一个独立按键。通过按键向T0 引脚输入负脉冲,单片机对其进行计数,并将计数值显示在独立数码管上。
观察门控位(GATE)对计数过程的影响。
三、实验设备
硬件:PC 机,nKDE-51 单片机实验教学系统;
软件:Keil C51 集成开发环境,FlashMagic 单片机程序烧写软件。
四、实验原理及步骤
MCS-51 定时器/计数器的结构、功能及设置方法,请参考教材相关内容。
步骤如下:
1、创建新项目:Project—New Project—命名、存储—CPU类型(philips P89C52X2)
2、创建新程序:编译程序—完成后保存为“.c”格式
3、添加程序:Target1—Source Group—add……(程序)
4、检测程序:Project—Build Target
5、选择烧录程序的方式(右键点target1--opption):output—Creat Execulate:Dubug Information Browse、Creat Hex
Debug 右侧选择use “Keil Monitor-51 Driver”
6、选择程序执行点:在Debug程序烧路后,在开始执行的程序断点上鼠标右键—Set Program Counter
单片机实验-定时器控制继电器
实验18 定时器控制继电器
一、实验目的
1、了解继电器的原理和作用;
2、掌握定时器中断的编程方法;
3、学习利用定时器中断控制继电器的基本方法。
二、实验原理
继电器是电气测量和控制电路中常见的执行元件。利用单片机控制继电器操作的电路原理如图3.4.1所示。
ULN2003为继电器驱动元件,每路输出端可驱动500mA电流,继电器线圈的工作电流约为10mA。图3.4.1中左侧的大虚线框内为ULN2003的内部电路,在输出引脚和电源之间带有一个续流二极管。
图3.4.1右侧小虚线框内为继电器内部电路。将继电器的线圈一端连接到电源VCC,另一端连接到ULN2003的输出端。
单片机的P1.7接到ULN2003的输入端,利用单片机的P1.7控制继电器动作。当P1.7输出高电平时,ULN2003的输出端为低电平,从而继电器线圈得电,输出开关被电磁力吸合。当P1.7输出低电平时,ULN2003的输出为高电平,继电器线圈没有电流流过,输出开关被弹簧弹开。
P1.7
VCC
图3.4.1 单片机控制继电器电路
继电器输出开关,工作电压和电流依继电器的型号不同而各异,一般都为交流220V/5A 以上,可用于控制操作各种电器设备。实验箱上继电器的线圈与电源、ULN2003之间的连接电路,在印刷电路板内部已经连接好,见于图1.3.11所示。
实验时继电器用于控制一个LED指示灯,图3.4.1中的LED指示灯电路部分,需自行连接。
定时器T1中断用于定时控制继电器,每隔20s改变一次继电器状态。LED数码管显示器以秒为单位显示时间。
单片机 实验三中断及定时器实验
实验三:中断及定时器实验
一、实验目的:
1、弄清中断的概念、基本原理,掌握中断技术的应用
2、了解中断初始化的方法,中断向量安装和中断服务子程序的
设计方法。
3、了解定时/计数器的工作原理及MCS51单片机的定时器内
部结构
4、掌握时间常数计算方法
5、掌握定时器初始化方法和定时中断程序设计方法
二、实验内容:定时器实验
1、这个是一个电子钟走时程序,利用定时器T0产生50ms中
断,中断计数器中断20次为1秒,利用秒信号进行电子钟
计时。先读懂下面程序段,然后编辑、编译程序,并在伟福
仿真器上模拟调试该程序。
程序清单如下:
COUNT EQU 7FH
COUNT1 EQU 7EH
S_MEM EQU 73H
M_MEM EQU 72H
H_MEM EQU 71H
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP INT_T0 ;“*1”
MAIN: MOV SP,#2FH
MOV TMOD,#B
MOV TH0,#03CH ;50毫秒中断时间常数
MOV TL0,#0BH
MOV IE,#B ;开放T0
MOV IP,#0
MOV S_MEM,#0
MOV M_MEM,#0
MOV H_MEM,#0
MOV COUNT,#20
SETB TR0
;______________________________________________________ W AIT:NOP
SJMP W AIT
INT_T0: MOV TL0,#0BH
MOV TH0,#3CH
DJNZ COUNT,EXT_T0
MOV COUNT,#20 ;恢复中断计数器
实验二 单片机定时器和计数器编程
仲恺农业工程学院实验报告纸
信息科学与技术学院(院、系)电子信息工程专业161 班单片机原理及接口技术课
实验二单片机定时器/计数器编程
一、实验目的
1、掌握单片机定时器/计数器的工作方式;
2、掌握单片机定时器/计数器的编程方法。
二、实验内容
1、学习单片机定时器/计数器的工作方式、初始化以及应用等;
2、利用单片机定时器/计数器编写程序驱动开发板上的LED灯按一定规律工作。
基本要求:
单号:利用定时器0控制LEDB闪烁,闪烁频率为1Hz。
双号:利用定时器1控制LEDG闪烁,闪烁频率为2Hz。
三、实验设备
1、STC单片机开发板;
2、PC机以及串口线。
四、实验分析及关键代码
#include
sbit LEDB=P2^4;
unsigned char counter;
main()
{
TMOD=0x01; //T0为方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;//初值
EA=1; //允许中断
ET0=1;
TR0=1; //启动定时
while(1);
}
timer0() interrupt 1 using 1 {
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;//重置初值counter++;
if(counter==10)
{
counter =0;
LEDB=!LEDB;
}
}
主程序TMOD定义定时器种类、THO和TLO定义定时器计数初值、EA=1为CPU允许中断、ETO=1为定时器允许中断------以上为定时器的初始化。TRO=1为定时开始。
定时计数器实验报告
实验3.3.1 定时/计数器实验
一、实验目的
1、了解MCS-51单片机定时/计数器的工作原理与工作方式;
2、掌握定时/计数器T0和T1在定时器和计数器两中方式下的编程;
3、学习定时/计数器T2的可编程时钟输出功能;
4、掌握使用Proteus进行单片机系统仿真的方法。
二、实验内容
1、使用定时器T0与定时器T1进行定时,在P1.0和P1.1引脚上输出方波信号,通过示波器观察波形输出,测量并记录方波周期。
2、将定时/计数器1设定为计数方式,每次计数到10在P1.0引脚上取反一次,观察发光二极管的状态变化。
3、定时器2可以作为时钟发生器使用,并在P1.0引脚上输出占空比为50%的方波。编程定时器2,使用示波器测量输出时钟,测量时钟周期。
三、实验环境
PC机一台,Proteus仿真软件、KEIL uVision2软件一套
四、硬件电路接线图
说明:SW1打到上边触点时用于实验内容1和内容3,SW1打到下边触点时与KK1一起用于实验内容2。
内容1
内容2 内容3
内容1:
#include"sst89x5x4.h" sbit wave1=P1^0; sbit wave2=P1^1; void main()
{
TMOD=0x11;
TH0=0x0F8;
TL0=0x00;
TH1=0x0F8;
TL1=0;
TR0=1;
TR1=1;
while(1)
{
if(TF0==1)
{
TH0=0x0F8;
TL0=0x00;
wave1=~wave1;
TF0=0;
}
else if(TF1==1) {
TH1=0x0F8;
TL1=0;
wave2=~wave2;
单片机实验-定时器计数器应用实验二
定时器/计数器应用实验二
一、实验目的和要求
1、掌握定时器/计数器计数功能的使用方法。
2、掌握定时器/计数器的中断、查询使用方法。
3、掌握Proteus软件与Keil软件的使用方法。
4、掌握单片机系统的硬件和软件设计方法。
二、实验内容或原理
1、利用单片机的定时器/计数器以查询方式计数外
部连续周期性矩形波并在单片机口线上产生某一
频率的连续周期性矩形波。
2、利用单片机的定时器/计数器以中断方式计数外
部连续周期性矩形波并在单片机口线上产生某一
频率的连续周期性矩形波。
三、设计要求
1、用Proteus软件画出电路原理图,单片机的定时
器/计数器以查询方式工作,设定计数功能,对
外部连续周期性脉冲信号进行计数,每计满100
个脉冲,则取反P1.0口线状态,在P 1.0口线上
接示波器观察波形。
2、用Proteus软件画出电路原理图,单片机的定时
器/计数器以中断方式工作,设定计数功能,对
外部连续周期性脉冲信号进行计数,每计满200
个脉冲,则取反P1.0口线状态,在P 1.0口线上
接示波器观察波形。
四、实验报告要求
1、实验目的和要求。
2、设计要求。
3、电路原理图。
4、实验程序流程框图和程序清单。
5、实验结果(波形图)。
6、实验总结。
7、思考题。
五、思考题
1、利用定时器0,在P1.0口线上产生周期
为200微秒的连续
方波,利用定时器1,对 P1.0口线上波形进
行计数,满
50个,则取反P1.1口线状态,在P 1.1口线
上接示波器
观察波形。
原理图:
程序清单:
/*功能:用计数器1以工作方式2实现计数(查询方式)
每计满100个脉冲,则取反P1.0口线状态*/ ORG 0000H
单片机实验二 定时器实验程序
{
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
P1M1=0x00;
P1M0=0xff;
while(1)
{
keynum=keyscan();
display();
set();
}
}
void timer0() interrupt 1
H1=1;
H2=0;
if(L1==0)
return 4;
else if(L2==0)
return 5;
else if(L3==0)
return 6;
H2=1;
return 0;
}
unsigned char keyscan()
{
static unsigned int ct=0;
static unsigned char lastkey=0;
sbit L2=P0^6;
sbit L3=P0^7;
unsigned char keynum;
unsigned int lasttime=100;
bit bset=0;
unsigned char keyscan();
void display();
单片机定时器实验
实验三单片机内部定时器应用
实验目的
1、理解单片机内部定时器的工作原理及使用方法
2、了解单片机定时中断程序的编写和调试方法
3、掌握定时器的基本使用方法
实验仪器
单片机开发板、万利仿真机、稳压电源、计算机
实验原理
1、单片机定时器的工原理
MCS-51 单片机内部有两个16 位可编程的定时器/计数器T0 和T1。它们即可用作定时器方式,又可用作计数器方式。其中T0 由TH0 和TL0 计数器构成;T1 由TH1 和TL1 计数器构成。
工作于定时器方式时,通过对机器周期(新型51单片机可以对振荡周期计数)的计数,即每一个机器周期定时器加1,来实现定时。故系统晶振频率直接影响定时时间。如果晶振频率为12MHZ,则定时器每隔(1/12MHZ)×12=1us 加1。
工作于计数器方式时,对P3.4 或P3.5 管脚的负跳变(1→0)计数。它在每个机器周期的S5P2 时采样外部输入,当采样值在这个机器周期为高,在下一个机器周期为低时,计数器加1。因此需要两个机器周期来识别一个有效跳变,故最高计数频率为晶振频率的1/24。
特殊功能寄存器TMOD 用于定时器/计数器的方式控制。高4 位用于设置T1,低4 位用于设置T0。如图4-7所示。
图4-7 定时器模式控制字格式
TCON 寄存器用于定时器的计数控制和中断标志。如图4-8所示。
图4-8 定时控制寄存器数据格式
编写程序控制这两个寄存器就可以控制定时器的运行方式。
单片机内部定时器/计数器的使用,简而概之:(1)如需用中断,则将EA和相关中断控制位置1;(2)根据需要设置工作方式,即对TMOD设置;(3)然后启动计数,即对TR0或TR1置1。(4)如使用中断,则计数溢出后硬件会自动转入中断入口地址;如使用查询,则必须对溢出中断标志位TF0或TF1进行判断。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机定时器实验
实验三单片机内部定时器应用
实验目的
1、理解单片机内部定时器的工作原理及使用方法
2、了解单片机定时中断程序的编写和调试方法
3、掌握定时器的基本使用方法
实验仪器
单片机开发板、万利仿真机、稳压电源、计算机
实验原理
1、单片机定时器的工原理
MCS-51 单片机内部有两个16 位可编程的定时器/计数器T0 和T1。它们即可用作定时器方式,又可用作计数器方式。其中T0 由TH0 和TL0 计数器构成;T1 由TH1 和TL1 计数器构成。
工作于定时器方式时,通过对机器周期(新型51单片机可以对振荡周期计数)的计数,即每一个机器周期定时器加1,来实现定时。故系统晶振频率直接影响定时时间。如果晶振频率为
图4-8 定时控制寄存器数据格式编写程序控制这两个寄存器就可以控制定时器的运行方式。
单片机内部定时器/计数器的使用,简而概之:(1)如需用中断,则将EA和相关中断控制位置1;(2)根据需要设置工作方式,即对TMOD设置;(3)然后启动计数,即对TR0或TR1置1。(4)如使用中断,则计数溢出后硬件会自动转入中断入口地址;如使用查询,则必须对溢出中断标志位TF0或TF1进行判断。
2、用定时器编写一个秒计时器
假设系统使用的晶振频率为12MH Z,即每个机器周期为1us。如使用方式1,则定时时间最长是216×1us=65536us=65.536ms,小于1s。故必须设置一个软件计数单元,即假设定时器定时中断时间为50ms,则必须定时中断20次才达到1s并对秒计时单元加1,20即为软件计数次数。最后再把秒计时单元的值转成显示数码送显示缓冲区。
图4-9 定时器应用程序流程图
实验内容
1、单片机定时器秒计时器
LEDCLK BIT P3.4;
LEDDIN BIT P2.3;
LEDDATA DATA P0; 定时器中断中断保护现场 恢复现场 软件计秒计时器加Y N
主程初始化中断
控制器,定
启动定时器
调用显示程
DSEG AT 30H
dispbuf: ds 8;显示缓冲区
timetick: ds 1
second: ds 1
minute: ds 1
hour: ds 1
TIMECOUNT EQU 50000
CSEG at 0000H
SJMP MAIN
ORG 000BH
LJMP P_T0
ORG 0030;中断服务程序
P_T0:
PUSH PSW
PUSH ACC
PUSH DPH
PUSH DPL
MOV TH0,#(65535-TIMECOUNT)/256 MOV TL0,#(65535-TIMECOUNT)MOD 256 SETB RS0;后面所使用的R0~r7
DJNZ timetick,P_T02
MOV timetick,#20 INC second
; cjne second,#60,P_T01 ; MOV SECOND,#0
; inc minute;
P_T01: M OV A,second MOV B,#100
DIV AB
MOV R0,#dispbuf+2 MOV @R0,A
DEC R0
MOV A,B
MOV B,#10
DIV AB
MOV @R0,A
DEC R0
MOV @R0,B
P_T02: C LR RS0
POP DPL
POP DPH
POP ACC
POP PSW
RETI
MAIN:
mov sp,#60h
MOV dispbuf,#0
MOV dispbuf+1,#0
MOV dispbuf+2,#0
MOV dispbuf+3,#0
MOV dispbuf+4,#0
MOV dispbuf+5,#0
MOV dispbuf+6,#0
MOV dispbuf+7,#0
MOV
TH0,#(65535-TIMECOUNT)/256;3CAF
MOV TL0,#(65535-TIMECOUNT)MOD 256; MOV TMOD,#01H;设定定时器的工作方式SETB ET0;允许T0溢出中断
SETB TR0;启动t0
SETB EA;开启总中断
MAIN1:
ACALL DISP
SJMP MAIN1
DISP:
MOV R6,#8
MOV R0,#dispbuf CLR LEDCLK
CLR LEDDIN
NOP
DISP1: S ETB LEDCLK MOV A,@R0
MOV DPTR,#LEDTAB MOVC A,@A+DPTR MOV LEDDATA,A; MOV R7,#5
ACALL DelayNms INC R0
SETB LEDDIN
CLR LEDCLK
DJNZ R6,DISP1 RET; 大延时DelayNms:
D1: ACALL Delay1ms DJNZ R7,D1
RET; 延时子程序Delay1ms:
push 07
mov R7,#250
delay1:
NOP
NOP
DJNZ R7,delay1
POP 07
RET
LEDTAB:DB 03H,9FH,25H,0DH;0,1,2,3
DB 99H,49H,41H,1FH;4,5,6,7
DB 01H,09H,11H,0C1H;8,9,A,B
DB 63H,85H,61H,71H;C,D,E,F
END
2、修改上面的程序,设计一个N秒倒计时器(N 为学号后两位)。倒计时时间到后,重新开始计时。
LEDCLK BIT P3.4;
LEDDIN BIT P2.3;
LEDDATA DATA P0;
DSEG AT 30H
dispbuf: ds 8;显示缓冲区