定时器实验

  • 格式:doc
  • 大小:253.50 KB
  • 文档页数:7

-1-
昆明理工大学信息工程与自动化学院学生实验报告
( 2013 — 2014 学年 第 2 学期 )
课程名称:单片机原理及接口技术 开课实验室 2014年5月6日
年级、专业、班 学号 姓名 成绩


实验项目名称 定时器实验(十进制计数器) 指导教师



语 该同学是否了解实验原理: A.了解□ B.基本了解□ C.不了解□ 该同学的实验能力: A.强 □ B.中等 □ C.差 □ 该同学的实验是否达到要求: A.达到□ B.基本达到□ C.未达到□ 实验报告是否规范: A.规范□ B.基本规范□ C.不规范□ 实验过程是否详细记录: A.详细□ B.一般 □ C.没有 □ 教师签名:
年 月 日
一、上机目的及内容
上机目的:掌握定时器T0、T1的方式选择和编程方法,了解中断服务程序的设计方法,学
会实时程序的调试技巧。
上机内容:在实验板上完成如下功能:

用定时器T0的方式1,实现第一个发光二极管以200ms的间隔闪烁;
用定时器T1的方式1,实现数码管前两位59s循环计时。

二、实验原理及本技术路线图(方框原理图或程序流程图)
实验板数码管电路原理如图1所示。
计算初值公式
定时模式1 th0=(216-定时时间) / 256
tl0=(216-定时时间) mod 256
-2-

三、所用仪器、材料(设备名称、型号、规格等或使用软件)
Pc机一台,keil软件,stc-isp

四、实验方法、步骤(或:程序代码或操作过程)
1、 按实验要求在KeilC中创建项目,编辑、编译程序。
2、 将编译生成的目标码文件(后缀为.Hex)下载到实验板电路中。
3、 在实验板中运行程序,观察实验运行结果并记录。

程序代码:
d1 bit p1.0

shi_w equ 30h
ge_w equ 31h
wei equ p2.7
duan equ p2.6
org 0000h
jmp main
org 000bh
jmp time0
org 001bh
jmp time1
-3-

org 0040h
main: mov dptr,#table
mov shi_w,#0
mov ge_w,#0
mov tmod,#11h
mov th0,#(65536-50000)/256
mov tl0,#(65536-50000) mod 256
mov th1,#(65536-50000)/256
mov tl1,#(65536-50000) mod 256
setb ea
setb et0
setb tr0
setb et1
setb tr1
m1: call display
jmp m1

delay: mov r5,#5
dd1: mov r6,#249
dd2: nop
nop
djnz r6,dd2
djnz r5,dd1
ret

display: mov a,shi_w
setb wei
-4-

mov p0,#0feh
clr wei
setb duan
movc a,@a+dptr
mov p0,a
clr duan
call delay

mov a,ge_w
setb wei
mov p0,#0fdh
clr wei
setb duan
movc a,@a+dptr
mov p0,a
clr duan
call delay

time0: mov th0,#(65536-50000)/256
mov tl0,#(65536-50000) mod 256
inc r2
cjne r2,#4,s1
mov r2,#0
cpl d1
s1: reti
-5-

time1: mov th1,#(65536-50000)/256
mov tl1,#(65536-50000) mod 256
inc r3
cjne r3,#20,i2
mov r3,#0
inc r4
cjne r4,#60,i1
mov r4,#0
i1: mov a,r4
mov b,#10
div ab
mov shi_w,a
mov ge_w,b
i2: reti

table: db 3fh,06h,5bh,4fh,66h
db 6dh,7dh,07h,7fh,6fh
db 77h,7ch,39h,5eh,79h

end
五、实验过程原始记录( 测试数据、图表、计算等)
-6-
-7-

六、实验结果、分析和结论(误差分析与数据处理、成果总结等。其中,绘制曲线图时必须用计算
纸或程序运行结果、改进、收获)
通过本次试验,使我对keilc环境下进行编程有了更深的理解,认识到89c51单片机的结
构和各个端口的功能。在这次试验中遇到过好些问题,但在老师和同学的帮助下解决了这
些问题,同时还进一步了解了单片机方面的有关知识。

七、思考
1.若用定时器1方式2,程序如何修改?

2.若显示从“99”开始递减,程序如何修改?