单片机实训教案 下载本文

DJNZ R3,FLASH1

MOV A,#09H ;南北红灯,东西黄灯 MOVX @DPTR,A

MOV R2,#10 ;延时1秒 LCALL DELAY NOP RET

DELAY: ;延时子程序 PUSH 2 PUSH 1 PUSH 0

DELAY1: MOV 1,#00H DELAY2: MOV 0,#0B2H DJNZ 0,$

DJNZ 1,DELAY2 ;延时 100 mS DJNZ 2,DELAY1 POP 0 POP 1 POP 2 RET

8.试训报告要求:

要求设计与撰写试训总结报告:对系统方案设计与论证,理论计算与分析,对系统作实际测试与数据记录,分析测试结果,对存在问题提出实际解决方案。

实验四 定时器/计数器控制实验

一.预习内容

1.定时器/计数器的功能

定时:对内部机器周期脉冲计数,每过一个机器周期计数器加1。计数值乘以单片机机器周期的时间就是定时时间。

计数:对外部引脚T0、T1输入脉冲计数,当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1。

2.定时器工作方式寄存器TMOD

定时器工作方式寄存器TMOD用于选择定时器的工作方式,它的高4位控制定时器T1,低4位控制定时器T0。TMOD中各位的定义如表4.1所示。

表4.1 定时器工作方式寄存器TMOD

位地址 D7H D6H D5H D4H D3H D2H D1H D0H

位定义名 GATE C/T M1 M0 GATE M1 M0 C/T

功能选择位,当C/ =1时,为计数方式;当C/ =0时,为定时方式。 C/:T/C

M1、M0:T/C工作方式定义位。

GATE:门控制位,用于控制定时器的启动是否受外部中断源信号的影响。当GATE=0时,与外部中断无关,由TCON寄存器中的TRx位控制启动;当GATE=1时,由控制位TRx和引脚 共同控制启动,只有在没有外部中断请求信号的情况下(即外部中断引脚 =1时),才允许定时器启动。 3.定时器控制寄存器TCON

定时器控制寄存器TCON用于定时器的启动和外部中断的设置,它的高4位控制定时器,TR0和TR1控制定时器的启动,低4位控制外部中断。TCON控制寄存器各位的定义如表4.2所示。

表4.2 定时器控制寄存器TCON

位地址 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H

位定义名 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

TF0(TF1):T0(T1)定时器溢出中断标志位。当T0(T1)计数溢出时,由硬件置位,并在允许中断的情况下,发出中断请求信号。当CPU响应中断转向中断服务程序时,由硬件自动将该位清0。

TR0(TR1):T0(T1)运行控制位。当TR0(TR1)=1时,启动T0(T1);当TR0(TR1)=0时,关闭T0(T1)。该位由软件进行设置。

4.定时器工作方式 1) 方式0

组成:13位定时/计数器。

定时时间的计算:t=(213-t0)×Tm,其中,t0为定时初值,Tm为机器周期(晶振频率为12 MHz,机器周期为1 μs)。

最大定时时间:8192 μs (晶振频率为12 MHz)。

计数个数的计算:C=213-X0,其中,X0为计数初值。

最大计数个数:8192个。

2) 方式1

组成:16位定时/计数器。

定时时间的计算:t=(216-t0)×Tm,其中,t0为定时初值,Tm为机器周期(晶振频率为12 MHz,机器周期为1 μs)。

最大定时时间:65 536 μs (晶振频率为12 MHz)。 计数个数的计算:C=216-X0,其中,X0为计数初值。 最大计数个数:65 536个。 3) 方式2

组成:能自动重置初值的8位定时/计数器。

定时时间的计算:t=(28-t0)×Tm,其中,t0为定时初值,Tm为机器周期(晶振频率为12 MHz,机器周期为1 μs)。

最大定时时间:256 μs (晶振频率为12 MHz)。

计数个数的计算:C=28-X0,其中,X0为计数初值。 最大计数个数:256个。 4) 方式3

组成:两个8位定时/计数器。

定时时间的计算:t =(28-X0)×Tm,其中,X0为定时初值,Tm为机器周期(晶振频率为12 MHz,机器周期为1 μs)。

最大定时时间:256 μs (晶振频率为12 MHz)。 计数个数的计算:C=28-X0,其中X0为计数初值。 最大计数个数:256个。 5.定时/计数器编程步骤

(1) 设置控制字TOMD。 (2) 计算出定时的初值。

(3) 启动定时/计数器(软件或外部信号)。 (4) 开中断,允许执行中断。 6.编程注意的问题

(1) 关于内部定时器/计数器的编程主要是时间常数的设置和有关控制寄存器的设置。内部定时器/计数器在单片机中主要有定时和计数两种功能,本实验使用的是定时功能。

(2) 与定时器有关的寄存器包括工作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置定时器/计数器的工作方式0~3,并确定用于定时还是用于计数。TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。

(3) 当内部计数器用作定时器时,是对机器周期计数。如果最大值达不到定时时间要求,就要设定循环次数来增加延时。

(4) 在设置时间常数前要先关闭对应的中断,设置完时间常数之后再打开相应的中断。

二、实验练习

(一) 定时器应用

1.实验要求

由8031内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1溢出中断一次。P1口的P1.0-P1.7分别接八个发光二极管。要求编写程序模拟一时序控制装置。开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮......一直循环下去。

2.实验目的

(1) 学习8031内部计数器的使用和编程方法。 (2) 进一步掌握中断处理程序的编程方法。 3.实验电路及连线

4.实验说明

(1) 关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。内部计数器在单片机中主要有定时器和计数器两个功能。本实验用的是定时器,有关计数器的说明请查阅实验七。

(2) 内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振荡器周期。因为实验系统的晶振是11.0592MHz,所以定时常数的设置可按以下方法计算: 机器周期=12÷11.0592MHz=1.0857μS (65536-定时常数)*1.0857μS=50mS 定时常数=4C00H

(3) 定时器的有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置定时器/计数器的工作方式0~3,并确定用于定时还是用于计数。TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。

(4) 在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。

5.实验仪器和设备

AEDK5196ET单片机实验箱一台,PC机一台,LCA51ET单片机开发环境。 6.实验框图

INT T1入口开始保护现场置T1的寄存器置定时常数置初始常数N判是否到1秒开中断Y

查表等待显示数据T1LED.ASM主程序框图调整表格指针恢复现场中断返回

INT_T1中断子程序框图