平凡单片机教学 第十九讲 定时/计数器实验2

发布者:Serendipity22最新更新时间:2016-03-25 来源: eefocus关键字:平凡单片机  定时  计数器 手机看文章 扫描二维码
随时随地手机看文章
前面我们做了定时器的实验,现在来看一看计数实验,在工作中计数通常会有两种要求:第一、将计数的值显示出来,第二、计数值到一定程度即中断报警。第一种如各种计数器、里程表,第二种如前面例中讲到的生产线上的计数。先看第一种吧。我们的硬件中是这样连线的:324构成的振荡器连到定时/计数器1的外部引脚T1上面,我们就利用这个来做一个计数实验,要将计数的值显示出来,当然最好用数码管了,可我们还没讲到这一部份,为了避免把问题复杂化,我们用P1口的8个LED来显示计到的数据。

程序如下:

 

ORG 0000H

AJMP START

 

ORG 30H

 

START:

 

MOV SP,#5FH

 

MOV TMOD,#01000000B ;定时/计数器1作计数用,0不用全置0

 

SETB TR1 ;启动计数器1开始运行.

 

LOOP: MOV A,TL0

 

MOV P1,A

 

AJMP LOOP

 

END

 

在硬件上用线将324的输出与T1连通(印板上有焊盘)运行这种程序,注意将板按正确的位置放置(LM324放在左手边,LED排列是按从高位到低们排列)看到什么?随着324后接的LED的闪烁,单片机的8只LED也在不断变化,注意观察,是不是按二进制:

00000000

00000001

 

00000010

 

00000011

 

 

 

 

这样的顺序在变呢?这就对了,这就是TL0中的数据。

 

 

程序二:

ORG 0000H

 

AJMP START

 

ORG 001BH

 

AJMP TIMER1 ;定时器1的中断处理

 

ORG 30H

 

START: MOV SP,#5FH

 

MOV TMOD,#01010000B ;定时/计数器1作计数用,模式1,0不用全置0

 

MOV TH1,#0FFH

 

MOV TL1,#0FAH ;预置值,要求每计到6个脉冲即为一个事件

 

SETB EA

 

SETB ET1 ;开总中断和定时器1中断允许

 

SETB TR1 ;启动计数器1开始运行.

 

AJMP $

 

TIMER1:

 

PUSH ACC

 

PUSH PSW

 

CPL P1.0 ;计数值到,即取反P1.0

 

MOV TH1,#0FFH

 

MOV TL1,#0FAH ;重置计数初值

 

POP PSW

 

POP ACC

 

RETI

 

END

 

 

上面这个程序完成的工作很简单,就是在每6个脉冲到来后取反一次P1。0,因此实验的结果应当是:LM324后接的LED亮、灭6次,则P1。0口所接LED亮或灭一次。这实际就是我们上面讲的计数器的第二种应用。

程序三:外部中断实验

 

ORG 0000H

AJMP START

 

ORG 0003H ;外部中断地直入口

 

AJMP INT0

 

ORG 30H

 

START: MOV SP,#5FH

 

MOV P1,#0FFH ;灯全灭

 

MOV P3,#0FFH ;P3口置高电平

 

SETB EA

 

SETB EX0

 

AJMP $

 

INT0:

 

PUSH ACC

 

PUSH PSW

 

CPL P1.0

 

POP PSW

 

POP ACC

 

RETI

 

END

 

本程序的功能很简单,按一次按键1(接在12引脚上的)就引发一次中断0,取反一次P1。0,因此理论上按一下灯亮,按一下灯灭,但在实际做实验时,可能会发觉有时不“灵”,按了它没反应,但在大部份时候是对的,这是怎么回事呢?我们在讲解键盘时再作解释,这个程序本身是没有问题的。

关键字:平凡单片机  定时  计数器 引用地址:平凡单片机教学 第十九讲 定时/计数器实验2

上一篇:平凡单片机教学 第十八讲 定时、中断练习一
下一篇:平凡单片机教学 第二十讲 串行接口

推荐阅读最新更新时间:2024-03-16 14:48

STC89c51单片机定时器T2
定时器T2的功能比T1、T0都强大,但描述它的资料不多,可能是使用得比较少的缘故吧。它是一个16位的具有自动重装和捕获能力的定时/计数器,它的计数时钟源可以是内部的机器周期,也可以是P1.0输入的外部时钟脉冲。T2的控制寄存器的功能描述如下: TCON2(T2的控制寄存器),字节地址0C8H: 位地址 0CFH 0CEH 0CDH 0CCH 0CBH 0CAH 0C9H 0C8H 符号 TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RT2 各位的定义如下: TF2:定时/计数器2溢出标志,T2溢出时置位,并申请中断。只能用软件清除,但T2作为波特率发生器使用的时候,(即RCLK=1或
[单片机]
基于STM32的软件定时器设计
1 什么是软件定时器 软件定时器是用程序模拟出来的定时器,可以由一个硬件定时器模拟出成千上万个软件定时器,这样程序在需要使用较多定时器的时候就不会受限于硬件资源的不足,这是软件定时器的一个优点,即数量不受限制。 但由于软件定时器是通过程序实现的,其运行和维护都需要耗费一定的CPU资源,同时精度也相对硬件定时器要差一些。 2 软件定时器的实现原理 在Linux,uC/OS,FreeRTOS等操作系统中,都带有软件定时器,原理大同小异。典型的实现方法是:通过一个硬件定时器产生固定的时钟节拍,每次硬件定时器中断到,就对一个全局的时间标记加一,每个软件定时器都保存着到期时间。 程序需要定期扫描所有运行中的软件定时器,将各个到期时间
[单片机]
基于STM32的软件<font color='red'>定时</font>器设计
单片机C语言程序设计:定时器控制交通指示灯
/* 名称:定时器控制交通指示灯 说明:东西向绿灯亮 5s 后,黄灯闪烁,闪烁 5 次亮红灯, 红灯亮后,南北向由红灯变成绿灯,5s 后南北向黄灯闪烁, 闪烁 5 次后亮红灯,东西向绿灯亮,如此往复。 */ #include reg51.h #define uchar unsigned char #define uint unsigned int sbit RED_A=P0^0; //东西向指示灯 sbit YELLOW_A=P0^1; sbit GREEN_A=P0^2; sbit RED_B=P0^3; //南北向指示灯 sbit YELLOW_B=P0^4; sbit
[单片机]
<font color='red'>单片机</font>C语言程序设计:<font color='red'>定时</font>器控制交通指示灯
00-99计数器
1. 实验任务 利用 AT89S51 单片机来制作一个手动计数器,在 AT89S51 单片机的 P3.7 管脚接一个轻触开关,作为手动计数的按钮,用单片机的 P2.0 - P2.7 接一个共阴数码管,作为 00 - 99 计数的个位数显示,用单片机的 P0.0 - P0.7 接一个共阴数码管,作为 00 - 99 计数的十位数显示;硬件电路图如图 19 所示。 2. 电路原理图 图 4.10.1 3. 系统板上硬件连线 (1. 把“单片机系统”区域中的 P0.0/AD0 - P0.7/AD7 端口用 8 芯排线连接到“四路静态数码显示模块”区域中的任一个
[单片机]
00-99<font color='red'>计数器</font>
【STM32】HAL库 STM32CubeMX教程八---定时器输入捕获
前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1、芯片: STM32F407ZET6/ STM32F103ZET6 2、STM32CubeMx软件 3、IDE: MDK-Keil软件 4、STM32F1xx/STM32F4xxHAL库 知识概括: 通过本篇博客您将学到: PWM工作原理 STM32CubeMX创建PWM例程 HAL库定时器PWM函数库 PWM创建呼吸灯 什么是PWM 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非
[单片机]
【STM32】HAL库 STM32CubeMX教程八---<font color='red'>定时</font>器输入捕获
STM32的定时器(含中断)配置样例
1. 系统时钟配置 void RCC_Configuration(void) { ErrorStatus HSEStartUpStatus; RCC_DeInit(); RCC_HSEConfig(RCC_HSE_ON); HSEStartUpStatus = RCC_WaitForHSEStartUp(); if (HSEStartUpStatus == SUCCESS) { RCC_HCLKConfig(RCC_SYSCLK_Div1); //设置AHB(HCLK)时钟为系统时钟 RCC_PCLK2Config(RCC_HCLK_Div1); //设置高速AHB时钟(APB2)为HCLK
[单片机]
24c02开机计数器程序
LED 1 EQU 08H LED2 EQU 09H LED3 EQU 0AH LED4 EQU 0BH LedT0 EQU 0CH ;0-3 轮流点亮4个数据管 SDA EQU P2.0 SCL EQU P2.1 Address EQU 0EH I2CData EQU 0FH ;================================================= ORG 0000H LJMP START;转入主程序 ;================================================= ORG 000BH ;定时器
[单片机]
stm32定时器优先级
什么是优先级   优先级是具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。   当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。 stm32定时器优先级   STM32 可以支持的 68 个外部中断通道,已经固定的分配给相应的外部设备。每个中断通道都具备自己
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved