定时器实验实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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信号进行频率测量,测量结果如下表所示: