实验 定时器实验
一.实验目的
1.学习8051内部定时器/计数器的使用和编程方法
2.进一步掌握中断处理程序的编写方法
二.实验说明
对内部定时/计数器的编程主要是定时常数的设置和有关控制寄存器的设置。本实验使用定时器功能产生1秒钟定时,程序运用定时中断方式,实现每一秒钟输出状态发生一次反转,即发光二极管每隔一秒钟点亮一次。
与定时器有关的寄存器有TMOD(工作方式寄存器)和控制寄存器(TCON)。TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON控制定时器的运行或停止,并在定时器溢出时设置相应的标志位,产生定时器中断。
单片机的定时器作定时功能时,是对机器周期计数。每个机器周期的长度是12个振荡周期。因为实验系统采用6MHz的晶振,如采用工作方式2(即8位自动重装载方式),定时器每隔100uS中断一次,定时常数可按以下方法计算:
机器周期=12/6MHz=2uS
因为(256-定时常数)×2uS=100uS,因此定时常数=206。
使用软件对100uS定时中断进行计数,每计数10000次,就是1秒钟。
若采用方式1(即16位定时器模式),定时时间与装载的定时常数有如下公式:
定时时间=(65536-定时常数)×机器周期
比如当定时常数设置为55536时,可得到20ms的定时中断,再用软件计数50次,同样可实现1秒定时。
在中断处理程序中,因为定时常数的设置对中断程序的运行起到关键作用,所以在设置前要先关闭对应的中断,置数完之后再打开相应的中断。
三.实验内容和步骤
1. 使用89C51单片机最小应用系统模块,P1.0接发光二极管。
2. 安装好仿真器,用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,插上仿真器电源插头。
3. 启动计算机,打开仿真软件,进入仿真环境。选择仿真器型号、仿真头型号、CPU类型;选择通信端口,测试串行口功能。
4. 对编写的源程序进行编译,下载到单片机中,全速运行程序,若程序无误,发光二极管隔一秒钟点亮一次。
四.程序流程图
五.思考题
影响定时准确度的因素有哪些?如何用单片机实现一个电子时钟,画出程序流出图说明,或给出C51源程序。
相关文章









