实验二 数码管实验

  • 格式:doc
  • 大小:93.50 KB
  • 文档页数:2

实验二 数码管实验

一、 实验目的

掌握定时器T0、T1的方式选择和编程方法,了解中断服务程序的设计方法,学会实时程序的调试技巧。

二、 实验原理

MCS-51单片机内设置了两个可编程的16位定时器T0和T1,通过编程,可以设定为定时器和外部计数方式。T1还可以作为其串行口的波特率发生器。

定时器T0由特殊功能寄存器TL0和TH0构成,定时器T1由TH1和TL1构成,特殊功能寄存器TMOD控制定时器的工作方式,TCON控制其运行。定时器的中断由中断允许寄存器IE,中断优先权寄存器IP中的相应位进行控制。定时器T0的中断入口地址为000BH,T1的中断入口地址为001BH。

定时器的编程包括:

1) 置工作方式。

2) 置计数初值。

3) 中断设置。

4) 启动定时器。

定时器/计数器由四种工作方式,所用的计数位数不同,因此,定时计数常数也就不同。

在编写中断服务程序时,应该清楚中断响应过程:CPU执行中断服务程序之前,自动将程序计数器PC内容(即断点地址)压入堆栈保护(但不保护状态寄存器PSW,更不保护累加器A和其它寄存器内容),然后将对应的中断矢量装入程序计数器PC使程序转向该中断矢量地址单元中以执行中断服务程序。定时器T0和T1对应的中断矢量地址分别为000BH和001BH。

中断服务程序从矢量地址开始执行,一直到返回指令“RETI”为止。“RETI”指令的操作一方面告诉中断系统该中断服务程序已经执行完毕,另一方面把原来压入堆栈保护的断点地址从栈顶弹出,装入到程序计数器PC,使程序返回到被到中断的程序断点处,以便继续执行。

因此,我们在编写中断服务程序时注意。

1.在中断矢量地址单元放一条无条件转移指令,使中断服务程序可以灵活地安排在64K字节程序存储器的任何空间。

2.在中断服务程序中应特别注意用软件保护现场,以免中断返回后,丢失原寄存器、累加器的信息。

3.若要使执行的当前中断程序禁止更高优先级中断,可以先用软件关闭CPU中断,或禁止某中断源中断,在返回前再开放中断。

三、 实验内容

在实验板上完成如下功能:

 用定时器T0的方式1,实现发光二极管以200ms的间隔从上往下流动;

 用定时器T1的方式1,实现数码管前两位59s循环计时。

实验板数码管电路原理如图1所示。

计算初值公式

定时模式1 th0=(216-定时时间) / 256 tl0=(216-定时时间) mod 256

图1 LED数码管电路原理图

四、 实验步骤

1、 按实验要求在KeilC中创建项目,编辑、编译程序。

2、 将编译生成的目标码文件(后缀为.Hex)下载到实验板电路中。

3、 在实验板中运行程序,观察实验运行结果并记录。

五、 思考

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

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