包头师范学院信息科学与技术学院
实验报告
课程名称:单片机原理及接口技术实验项目:定时/计数器实验
指导老师:陈静老师实验室:物理楼四日期:2011,5,13
专业:电子信息科学与技术班级:08电子姓名:刘宁学号0814830007
一﹑实验目的及要求
1.学习80C51内部定时/计数器使用方法
2.学习计数器各种工作方式的用法
3.进一步掌握中断处理程序的编写方法
二﹑实验仪器及设备
THDPJ-1/2型单片机开发综合实验箱
THKL-C51型仿真器
ISP下载线
计算机一台
三﹑实验内容及原理
内容:定时器与计数器的使用。
四﹑实验步骤(或过程)
实验(一):计数器
1.用8P数据线连接80C51 MCU模块的P1口到八位逻辑电平显示模块的JD1E5口,用二号导线连接80C51 MCU模块的T0口到单次脉冲模块的任一输出端。
2.用串行数据通信线连接计算机与仿真器,把仿真器插到80C51 MCU模块的40P锁紧插座中,请注意仿真器的方向:缺口朝上。
3.将80C51 MCU模块的电源扭子开关S1C拨到上端。将直流稳压电源模块的直流控制开关S1G1打到ON,本实验所用到的相关模块的电源指示灯VCC亮。
4.打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加“TH4_计数器.ASM”源程序,进行编译,编译无误后,全速运行程序。
5.实验现象:连续按动单次脉冲的按键,8位发光二极管显示按键次数。
6.也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52芯片中运行(注意:芯片缺口朝上)。(ISP烧录器的使用查看附录二)
源程序如下:
实验(一):计数器
ORG 0000H
LJMP START
ORG 0030H
START:MOV TMOD, #01H ;置T0计数器方式1
MOV TH0,#00H ;置T0高八位、低八位均赋值初值为0 MOV TL0,#00H
SETB TR0;T0运行
LOOP: MOV P1,TL0 ;记录P1口脉冲个数
LJMP LOOP ;返回
END
流程图如下:
1.用二导线连接80C51 MCU模块的P1.0到八位逻辑电平显示模块的任一只发光二极管上。
2.用串行数据通信线连接计算机与仿真器,把仿真器插到80C51 MCU模块的40P锁紧插座中,请注意仿真器的方向:缺口朝上。
3.将80C51 MCU模块的电源扭子开关S1C拨到上端。将直流稳压电源模块的直流控制开关S1G1打到ON,本实验所用到的相关模块的电源指示灯VCC亮。
4.打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加“TH4_定时器.ASM”源程序,进行编译,编译无误后,全速运行程序。
5.实验现象:发光二极管隔一秒点亮一次,点亮时间为一秒。
6.也可以把源程序编译成可执行文件,把可执行文件用ISP烧录器烧录到89S52芯片中运行(注意:芯片缺口朝上)。(ISP烧录器的使用查看附录二)
实验(二)源程序:定时器
Tick EQU 5000 ; 10000 x 100us = 1s;
10000用于将100us的定时中断重复10000次即为1sec钟
T100us EQU 156 ; 100us时间常数(12M)
156这个定时常数用于定100us就定时器中断一次
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 ;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 ;LEDBUF清0
CLR P1.0 ;P1.0清零
MOV C100us, #high(Tick)
MOV C100us+1, #low(Tick)
Loop: MOV C, LEDBuf
MOV P1.0 , C
LJMP Loop
END
流程图如下:
定时器流程图
思考题1答:80C51单片机12M的晶振,最高可以测500KHZ。
2.答:只需要将本条语句Tick EQU 5000改写为Tick EQU 10000即可
3答:晶振改变后led等的闪烁间隔也会随之发生变化。通过重新激素定时常数可以调整回原来的闪烁间隔。
五、实验结果分析与总结:
通过本次实验,使我明白了计数器与定时器的工作原理及使用方法,且通过对程序的分析进一步掌握了用汇编语言进行位定义和如何编写中断程序。只是在对定时器的时间还没有深入的掌握。希望通过之后的实验进行进一步的学习。