实验名称: 定时器/计数器应用实验 日期: 见自己实验数据 得分: 同组人: 不填 指导教师: 姓名 一、实验目的
1. 掌握51单片机定时器/计数器的基本结构、工作原理和工作方式。
2. 掌握定时器/计数器T0、T1工作在定时器和计数器两种状态下的编程方法。
3. 学习和掌握定时器/计数器工作在定时器和计数器两种状态下,分别采用中断和查询
方式控制的编程方法。
4. 熟练掌握利用软件扩展定时器/计数器量程的原理和编程技巧。 二、实验设备
PC机一台,单片机实验系统一套 三、实验内容
设定时器/计数器工作于定时方式,定时时间为100ms,每当100ms到申请中断。
每10秒种将A的内容循环左移一次,送P1口显示。 四、实验原理
51单片机有2个16位的定时器/计数器,分别是T0和T1。它们有两种工作状态,可以工作在定时方式和计数方式;定时是对内部的机器周期进行加法计数,计数是对外部输入的计数脉冲进行加法计数,T0的外部计数脉冲从P3.4引脚输入,T1的外部计数脉冲从P3.5引脚输入;计数满产生溢出,硬件使定时器/计数器T0、T1的中断请求标志TF0、TF1置位;如果定时器/计数器允许中断,则可以采用中断方式进行溢出处理,而如果定时器/计数器不允许中断,则可以采用查询方式进行溢出处理。
若定时器/计数器T0工作在定时状态,在实验系统的晶振频率fOSC=12MHZ时,T0工作在方式1,16位最大计数量程,最长的定时时间是65mS多,要想实现10S定时,必须对T0进行量程扩展。实验中采用R7进行软件扩展,即R7对T0定时50mS进行计数,计数200次就是定时10S。每10S对累加器A进行一次左移,然后送P1口显示。
实验电路连接图如图1所示。
P1.0 单 P1.1 P1.2 片 P1.3 P1.4 机 P1.5 P1.6 P1.7 D0 D1 发 D2 D3 光 D4 D5 管 D6 D7 图1 定时器/计数器应用实验接线图 根据此实验原理编写的实验源程序清单见附页。 五、实验步骤
1. 在E盘下为工程建立文件夹姓名3;
2. 新建工程项目文件姓名3.uv2,保存在文件夹姓名3中,并为工程选择目标器件为AT
公司的AT89S51;
3. 编辑源程序,建立源文件姓名3.ASM,保存在文件夹姓名3中; 4. 将源文件姓名3.ASM添加到工程项目组中;
5. 设置调试环境,选择调试模式为Proteus软件仿真;
6. 运行程序,根据设计的数据记录表格进行实验,观察发光管显示的状态,并记录实验
现象;
7. 实验数据经过实验指导教师检查正确后,实验结束。
实验现象记录见附页。 六、实验结果分析
(自己写)
七、心得体会
(自己写)
附录:
实验程序框图 流程图
开始 设置工作方式 开始计数 计数,输出计数值 计数器流程图
开始 置T 1中断工作方式 定时中断入
保护现场 设置定时常数 秒计数值减1 否 设置初始状态位 是否到一秒 是 设置秒计数值 重新设置秒计数值 中断允许 状态位取反 输出状态位 恢复现场 等待中断 主程序框图
中断返回
实验现象:发光二极管隔一秒点亮一次,点亮时间为一秒。 思考题
如何将定时器的状态间隔改为2秒,程序如何改写?
参考源程序 实验(一):计数器
ORG 0000H LJMP START ORG 0030H
START:MOV TMOD,﹟00000101B ;置T0计数器方式1 MOV TH0,﹟0 ;置T0初值 MOV TL0,﹟0
SETB TR0 ;T0运行
LOOP: MOV P1,TL0 ;记录P1口脉冲个数 LJMP LOOP ;返回
END
实验(二):定时器
Tick EQU 5000 ; 10000 x 100us = 1s
T100us EQU 156 ; 100us时间常数(12M) C100us EQU 5H ; 100us记数单元 LEDBuf BIT 00H LED BIT P1.0 ORG 0000H LJMP Start ORG 0030H ORG 000BH LJMP T0Int ORG 0100H T0Int: PUSH PSW MOV A, C100us+1 JNZ Goon DEC C100us Goon: DEC C100us+1 MOV A, C100us ORL A, C100us+1
JNZ Exit ; 100us 记数器不为0, 返回 MOV C100us, #HIGH(TICK) ;#high(Tick) MOV C100us+1, #LOW(TICK) ;#low(Tick) CPL LEDBuf ; 取反LED Exit: POP PSW RETI
Start: MOV TMOD, #02H ;方式2, 定时器 MOV TH0, #t100us MOV TL0, #t100us
MOV IE, #10000010B ; EA=1, IT0 = 1
SETB TR0 ; 开始定时 CLR LEDBuf CLR P1.0
MOV C100us, #high(Tick) MOV C100us+1, #low(Tick) Loop: MOV C, LEDBuf MOV P1.0, C LJMP Loop END
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库定时器计数器应用实验报告在线全文阅读。
相关推荐: