定时器实验实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

定时器实验实验报告

0930******* 通信工程姚章瑞

一、实验目的

1、了解定时器的原理和四种工作方式的使用方法。

2、学习定时器的相关应用,包括产生信号和计数等。

二、实验原理

1、定时器结构和原理

上图为定时器T0、T1的结构,其中振荡器经12分频后作为定时器的时钟脉冲,T为外部计数脉冲输入端,通过开关K1选择。反相器,或门,与门共同构成启/停控制信号。TH和TL为加1计数器,TF为中断标志。每接收到一个脉冲,加1计数器自动加1,当计数器中的数被加为0时产生溢出标志,TF将被置1。计数器工作方式的选择和功能的实现需要配置相应的寄存器TMOD和TCON。

2、定时器工作方式

定时器共有四种工作方式分别为方式0~方式3。

方式0为13位计数器,最大计数值为213个脉冲。

方式1为16位计数器,最大计数值为216个脉冲。

方式2是8位自动重装计数器。该方式下,TL进行计数工作,TH用于存放计数初值,当产生溢出中断请求时会自动将TH中的初值重新装入TL,以使计数器继续工作。

方式3仅限于T0计数器,在方式3下,T0计数器被分成两个独立的8为计数器TL0和TH0。

三、实验内容

1、通过查询定时器状态,在P1.0产生近似10kHz的方波

2、利用定时中断,在中断处理程序中每秒通过P1.0切换一次逻辑笔的电平。

3、利用计数器测量信号发生器产生的不同频率的方波周期,并在寄存器中显示结果。

四、电原理图(无修改)

实验内容1、3无需接线

实验2原理图:

五、程序流程图

附手绘流程图

六、代码及注释(无修改)

1、ORG8000H

LJMP MAIN

ORG8100H

MAIN:

SETB P1.0;设置P1.0的初值

MOV TMOD, #01H;T0工作于方式1

MOV TH0, #0FFH

MOV TL0, #0D2H;定时46个脉冲翻转一次(10kHz)SETB TR0

BACK:

JBC TF0,BACK1;查询TF0

SJMP BACK

BACK1:

MOV TH0, #0FFH;重新设置定时器

MOV TL0, #0D2H

CPL P1.0;方波翻转

SJMP BACK

2、ORG8000H

LJMP MAIN

ORG800BH

LJMP INTT0

ORG801BH

LJMP IMTT1

ORG8100H

MAIN:

SETB P1.0;设置P1.0的初值

SETB P1.3;设置P1.3的初值

MOV TMOD, #61H;T0工作于方式1,T1工作于方式2,T1使用P1.3

;作为时钟

MOV TH1, #9CH

MOV TL1, #9CH;定时100个脉冲翻转一次P1.0

MOV TH0, #0EEH

MOV TL0, #00H;定时4608个脉冲翻转一次P1.3

SETB TR0

SETB TR1

MOV IP, #02H;设置中断优先级

MOV IE, #8AH;允许中断

SJMP$

INTT0:

MOV TH0, #0EEH

MOV TL0, #00H

CPL P1.3

RETI

INTT1:

CPL P1.0

RETI

3、RUTL EQU70H

RUTH EQU71H

CONT EQU72H

ORG8000H

LJMP MAIN

ORG801BH

LJMP IMTT1

ORG8100H

MAIN:

MOV TMOD, #15H;T0、T1工作于方式1,T0对外部信号计数MOV TH0, #00H

MOV TL0, #00H;T0计数清零

MOV TH1, #4CH

MOV TL1, #00H;定时46080个脉冲(50ms)

MOV CONT, #14H;中断20次(20*50ms=1s)

SETB TR0

SETB TR1

MOV IE, #88H;允许中断

SJMP$

INTT1:

MOV TH1, #4CH

MOV TL1, #00H;重新定时50ms

DEC CONT;中断次数减1

MOV A, CONT

JNZ EXIT

CLR TR0;完成20次中断,停止计数

MOV RUTH, TH0

MOV RUTL, TL0;存结果

EXIT:

RETI

七、实验结果和分析

1、实验一测得产生的方波与标准10kHz方波的频率之间仍有一些误差,通过调整计数初值可得产生的相应频率如下表所示:

可以看出连续4个计数初值产生的方波频率相同,原因在于代码采用的查询TF0的方式来完成方波的翻转,而每次查询需要两句代码

JBC TF0, BACK1

SJMP BACK

即四个机器周期才能完成一次查询。但是计数器的计数是对机器周期进行计数,因此即使改变了计数初值,由于查询的精度限制,计数的最小时间单位被固定为4个机器周期,即

1

×12×4=4.34us

11.0592MHz

实验数据中相邻两个频率之间的周期间隔分别为1/9.82kHz-1/10.25kHz=4.27us和

1/10.25kHz-1/10.73kHz=4.36us,基本符合上面的分析结果。

2、为了增加产生的方波的精度,可以用中断方式代替查询方式来控制方波的翻转。中断允许时,CPU通过查询中断位来判断是否计数溢出,此时的计数最小时间单位为一个机器周期,即1.08us。此时产生的10kHz方波频率误差应该不大于0.54us/100us=0.54%

3、实验2中使用了中断方式产生周期2s的方波信号,实际用示波器cursor测得周期为2.002s,由于周期较大,因此误差明显减小。

4、实验3对信号发生器产生的TTL信号进行频率测量,测量结果如下表所示:

相关文档
最新文档