您的位置 首页 国产IC

单片机学习之十六:定时器使用3(形式3)

一、实验现象:在P0.0和p0.1分别输出一个周期是200us和400us的方波信号。二、实验目的掌握内部定时/计数器作定时功能(模式3)的应用三、实…

一、实验现象:

在P0.0和p0.1别离输出一个周期是200us和400us的方波信号。

二、实验意图

把握内部守时/计数器作守时功用(形式3)的运用

三、实验任务分析:

在这个实验里边,要一起发生两个方波信号。咱们能够选用和上面一个实验相似的办法,让T0、T1都作业于形式2,别离发生两个方波信号,可是这样要一起占用两个守时器的资源,比较糟蹋。

因为T0还有一种作业方法,便是能够分为两个8位的计数器tl0和th0,所以咱们就选用这个形式3来发生两个方波信号。(注:这种作业形式只适用于T0,假如把守时器T1界说为形式3的时分,T1是中止计数的。)

T0作业于形式3的逻辑图如下图所示:

从图上咱们能够看到,tl0运用T0的状况操控位:gate 、c/t、 tr0、tf0;而th0运用的是T1的状况操控位tr1和tf1,并占用T1的中止源。

所以,发动tl0应该是:setb tr0;而发动th0则是:setb tr1

别的,th0发生计数溢出的时分,是置位tf1,所以th0的溢出中止进口应该是T1的中止进口001bh。

咱们用tl0发生100us守时,计数初值是156;用th0发生200us守时,计数初值是56,该程序如下:

四、实验程序

org 0000h

ajmp main

org 000bh ;T0溢出中止进口地址

ajmp time0

org 001bh

ajmp time1 ;T1溢出中止进口地址

org 0020h

main: clr p1.5

mov sp,#70h ;设置仓库

mov tmod,#03h ;设置T0为守时方法,作业于形式3

mov tl0,#156 ;tl0置计数初值

mov th0,#56h ;th0置计数初值

setb et0 ;答应TL0溢出中止

setb et1 ;答应TH0溢出中止

setb ea ;cpu开中止

setb tr0 ;发动TL0计数

setb tr1 ;发动TH0计数

ajmp $ ;等候

time0:mov tl0,#156 ;tl0守时时刻到,从头装入计数初值

cpl p0.0 ;P0.0取反

reti

time1:mov th0,#56 ;th0守时时刻到,从头装入计数初值

cpl p0.1 ;P0.1取反

reti

end

五、几点阐明

1、当T0作业于形式3的时分,T1能够作业于形式0、形式1、形式2、串行口的波特率发生器、或许不需要中止的场合(因为这时T1的中止资源被TH0占用)。

2、我们假如用示波器看了上一个实验中周期为500us的波形,和这个实验的周期别离为200us和400us的波形,就会发现一个问题。在上一个实验中,发生的500us信号十分规范,可是这个实验里边200us的信号约有14us的差错,而400us的约有26us的差错,这是为什么呢?

因为上一个实验中进入中止后计数值是主动重装的,所以发生的守时十分规范。而在这个实验中,因为每次进入中止都要手动重装计数值,所以就会相应的发生差错。一起,因为400us刚好是200us的两倍,每进入两次tl0的中止才会进入一次th0的中止,所以th0的差错约为tl0的两倍。我们假如把两个信号的周期别离改为200us和300us,就会发现两者的差错根本共同拉。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/ic/266868.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部