您的位置 首页 国产IC

单片机学习之十七:计数器的使用

一、实验现象每次按下k0按键2次后,在P0.0输出一个周期是100ms的方波信号。二、实验目的掌握内部定时/计数器作计数功能的应用三、实验任务…

一、试验现象

每次按下k0按键2次后,在P0.0输出一个周期是100ms的方波信号。

二、试验意图

把握内部守时/计数器作计数功用的使用

三、试验任务分析

在前面的3个试验里边,咱们都是让T0作业于守时办法,然后产生一段固定的时刻。可是T0和T1除了能够用于守时外,还能够用于对外部输入的脉冲进行计数。在这个试验里边,咱们学习T0作业于计数办法时的编程办法。

在本试验中,咱们用T0对外部按键的动作进行计数。看一下守时/计数器的逻辑图如下图所示:

咱们发现当C/T=1的时分,守时/计数器T0可对T0(P3.4)端计数,每逢T0端产生一个负跳变的时分,计数器履行一次加1的运算。为了让k0按键按下的时分,在p3.4端产生一个负跳变,咱们首先要做的是把p1.1和p3.4用导线短路,如下图13-2所示,这样才干满意试验要求。

这个试验的思路如下:让T0在计数2次时,产生溢出中止,在T0的中止服务程序咱们发动T1开端计数,然后在T1的溢出中止里边把P0.0取反,这样就能够产生契合咱们试验要求的信号

为了让k0按下2次后T0产生溢出中止,咱们能够让T0作业于计数办法,并挑选可从头置入计数初值的8位计数器形式2;为了产生100ms的方波信号,咱们让T1作业于守时办法,挑选16位计数器形式。所以tmod的初值应该是:0001 0110,即16h。

四、试验程序

org 0000h

ajmp main

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

ajmp time0

org 001bh

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

org 0020h

main: clr p1.5

setb p0.0

mov sp,#70h ;设置仓库

mov tmod,#16h ;T0、T1初始化,T0作业在计数办法,T1作业在守时办法

mov tl0,#0feh ;T0置计数初值,计数2次后产生溢出中止

mov th0,#0feh ;计数初值置入常数缓冲区

mov th1,#3ch ;T1置入计数初值,产生50ms守时

mov tl1,#0b0h

setb et0 ;答应T0溢出中止

setb et1 ;答应T1溢出中止

setb tr0 ;发动T0计数

setb ea cpu开中止

ajmp $

time0: setb tr1 ;发动T1计数

reti

time1: mov th1,#3ch ;T1重装计数初值

mov tl1,#0b0h

cpl p0.0 ;P0.0取反

reti

end

五、几点阐明

在运转该程序时,有时可能会发现并不是按键按下两次后产生信号,这是由于手动按键的时分可能会产生颤动状况,导致计数器计数的原因。

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部