定时器计数器常用编程方法

合集下载

PLC定时器与计数器的应用

PLC定时器与计数器的应用
定时器的工作原理是,当输入信号启动定时器 时,定时器开始计时,直到达到设定的时间值, 然后输出信号触发相应的操作。
定时器的计时精度决定了其控制精度,是PLC 实现精确控制的重要元件之一。
PLC计数器介绍
计数器是PLC中用于对输入脉冲进行计数的元件。
计数器可以用于各种应用,如控制步进电机、检 测生产线上的产品数量等。
紧急情况处理
在遇到交通事故或其他紧急情况 时,PLC定时器和计数器能够快速 响应,调整信号灯的控制逻辑, 保障救援车辆的优先通行权。
THANKS FOR WATCHING
感谢您的观看
计数器通常有预置值,当计数值达到预置值时, 计数器会触发相应的输出信号。
PLC定时器与பைடு நூலகம்数器的关系
定时器和计数器都是PLC中的 控制元件,但它们的应用场景
和功能不同。
定时器主要用于时间控制, 而计数器主要用于计数控制。
在某些应用中,可以将计数器 的计数值作为定时器的设定值, 从而实现基于计数的定时控制。
创建定时器和计数器
在编程软件中创建定时器和计数器, 并为其分配相应的输入和输出信号。
编写定时器和计数器程序
根据实际需求编写定时器和计数器的 程序,包括设置时间参数、计数逻辑 等。
调试与测试
对编写的程序进行调试和测试,确保 定时器和计数器能够按照预期工作。
定时器与计数器的编程实例
定时器实例
实现一个周期性自动启动的设备,如 每隔10秒启动一次的泵。
02
PLC定时器的应用
定时器类型与原理
01
02
03
接通延时型
在输入信号作用下,定时 器输出信号开始接通,直 到达到设定时间后,输出 信号才断开。

STN32--定时器计数器(向上计数模式基本配置)

STN32--定时器计数器(向上计数模式基本配置)

实验一:TIMER-1:定时器上溢,查询溢出后取反LED.故频率计算:f=(72M/(TIM_Prescaler+1)*(1+TIM_Period)) ;定时器的基本设置:1、设置预分频数,得到CK_CNT,TIM_TimeBaseStructure.TIM_Prescaler = 7199;CK_CNT 的计数频率=72M/(7199+1)=10K ;2、设置自动重装载寄存器,当计数值达到这个寄存器锁存数值时,溢出产生事件TIM_TimeBaseStructure.TIM_Period = 9999;10K/(9999+1)=1HZ ,也就是1S 溢出一次;3、设置计数模式TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;从0计数到ARR 产生溢出事件;4、 设置时间分割值TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;5、 初始化定时器2TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);6、清楚标志TIM_ClearFlag(TIM2, TIM_FLAG_Update);7、打开定时器TIM_Cmd(TIM2, ENABLE);8、在主函数中查询TIM_FLAG_Update 标志置位了就清除标志:if(TIM_GetFlagStatus (TIM2,TIM_FLAG_Update )!=RESET){TIM_ClearFlag (TIM2,TIM_FLAG_Update);if( GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_8)==0)GPIO_WriteBit(GPIOA,GPIO_Pin_8,Bit_SET);elseGPIO_WriteBit(GPIOA,GPIO_Pin_8,Bit_RESET);}时钟预分频 CK_PSC 加减计数器 CK_CNT 达到ARR 的值产生事件实验二、TIMER-1:定时器上溢,中断溢出后取反LED.利用中断的方法:步骤一:定时器的配置1、设置预分频数,得到CK_CNT,TIM_TimeBaseStructure.TIM_Prescaler = 7199;CK_CNT的计数频率=72M/(7199+1)=10K;2、设置自动重装载寄存器,当计数值达到这个寄存器锁存数值时,溢出产生事件TIM_TimeBaseStructure.TIM_Period = 9999;10K/(9999+1)=1HZ ,也就是1S溢出一次;3、设置计数模式TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;从0计数到ARR产生溢出事件;4、设置时间分割值TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;5、初始化定时器2TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);6、打开中断溢出中断TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);7、打开定时器TIM_Cmd(TIM2, ENABLE);步骤二:编写中断配置void NVIC_Configuration(void){NVIC_InitTypeDef NVIC_InitStructure;#ifdef VECT_TAB_RAM/* Set the Vector Table base location at 0x20000000 */NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);#else /* VECT_TAB_FLASH *//* Set the Vector Table base location at 0x08000000 */NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);#endifNVIC_PriorityGroupConfig(NVIC_PriorityGroup_1) ;NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);}注意:加黑的部分,如果你在RAM中编程就要定义VECT_TAB_RAM ,如果在FLASH 编程,则需要NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);如果没有这条预编译语句的话,则很可能会存在进不去中断的错误。

定时计数器

定时计数器
) (8位)
T1端 TR1 GATE l
≥l
TF1
中断
C/T=1 &
控制
INT1端
2.工作方式1 ( M1M0=01 ,16位定时器/计数器) 由TH1和TL1构成16位加1计数器,其他特性与工作 方式0相同。
振荡器 ÷12 C/T=0 TL1 (8位) T1端 TR1 GATE INT1端 l ≥l TH1 (8位)
第6章
定时/计数器
P132
定时/计数器的结构及工作原理 定时/计数器的工作方式 定时/计数器方式和控制寄存器 定时/计数器的编程举例
6.1 概述
在测量控制系统中,常需要有实时时钟和计数器,以实现 定时(或延时)控制以及对外界事件进行计数。 一、常用的定时(或延时)方法: 软件延时:利用执行一个循环程序进行时间延迟。其特点是 定时时间精确,不需外加硬件电路,但占用CPU时间。因此软 件定时的时间不宜过长。 硬件定时:利用硬件电路实现定时。其特点是不占用CPU时 间,通过改变电路元器件参数来调节定时,但使用不够灵活方 便。对于时间较长的定时,常用硬件电路来实现。 可编程定时器/计数器(硬件+软件):通过专用的定时器/ 计数器芯片实现。其特点是通过对系统时钟脉冲进行计数实 现定时,定时时间可通过程序设定的方法改变,使用灵活方 便。也可实现对外部脉冲的计数功能。
TL0,#83H P1.0 TH0,#06H P1.1
;送方式字 ;送时间常数 ;送时间常数 ;送控制宇 ;送中断控制字
;等待中断
;重装时间常数 ;控制方波倒相 ;重装时间常数 ;控制方波倒相
RETI DONE2: MOV CPL RETI
【*例3】试用T1方式2编制程序,在P1.0引脚输出周 期为400S的脉冲方波,已知fosc=12MHZ。

定时-计数器编程实例

定时-计数器编程实例
#include "reg51.h" sbit P1_0=P1^0; unsigned char i; void main (void) { TMOD=0x01;
void TIMER0_ISR (void) interrupt 1
{ TH0=(65536-250)/256; TL0=(65536- 250)%256; i++; if(i < = 3) { P1_0=1; } if(I = = 4) { P1_0=0; i=0; }
定时/计数器编程实例
数码管显示实验 “实现数值0~65535的变化显 示” 问题:如何使数值变化的速 度减慢?(如每隔1秒数值 加1)
方法一? 方法二?
定时/计数器
void main(void) { unsigned char i,j; unsigned int uiTemp = 0; while(1) { convert(uiTemp); for(i=0;i<6;i++) { P2=LED_seg[i]; //送段码 P0=LED_bit[i]; //送位码 delay1ms(5); //5ms延迟 } j ++; if ( j == 33 ) //约1秒 { uiTemp++; j = 0; } } }
长定时的实现
思路:定时间隔为1秒,使用T0无法直接得到1秒 的定时。因此,需要使用多次定时复合的方法来得 到较长时间的定时。
方法二 仅使用一个定时/计数器实现
使用方法一时需要使用两个定时器和两个IO引脚,资源消 耗比较多。如何使用较少的资源实现同样的定时功能?
#include < reg51.h> void main( ) sbit WAVE = P1^7; { unsigned char glucCounter; WAVE = 0; void Timer0( ) interrupt 1 using 1 TMOD = 0x01; 100ms定时 { TH0 = (65536 – 50000) / 256; TH0 = (65536 – 50000) / 256; TL0 = (65536 – 50000) % 256; TL0 = (65536 – 50000) % 256; EA = 1; glucCounter ++ ; ET0 = 1; if ( glucCounter == 10 ) TR0 = 1; 定义一个全局 glucCounter = 0; { 变量,实现计 WAVE = ! WAVE; while(1) { ; } 数功能。 glucCounter = 0; } } }

定时器和计数器指令

定时器和计数器指令

★ 定时器的功能
① 当执行条件ON时开始减1定时,定时过程中执行条 件要保持ON。 ② 定时时间到,定时器ON、其所属触点动作。此后 只要执行条件保持ON , 其ON状态保持。
③ 当扫描时间Ts >0.1秒时,TIM会不准确; 当Ts > 0.01秒时,TIMH会不准确。
④ 定时器ON后,若执行条件OFF,定时器复位。 ⑤ 定时器ON后,若PLC断电,定时器复位。 触点复位:触点恢复到没有通电状态
复位状态:
设定值复位: 恢复成初始值
★定时器定时功能例(1) 分析程序对线圈01000的控制
00000对应启动按钮、00001对应停车按钮 。 按下启动按钮 → 线圈00000ON→
闭合 00000 00001
20000
触点00000闭合→
触点20000闭合→
线圈20000ON→
20000 20000
★ CNT的计数功能举例
分析程序对01000的控制作用。 00000每通断一次,向CNT000输入一个计数脉冲。 00000通断3次→ CNT000 ON→ CNT000 复位→ 线圈01000 OFF 线圈01000 ON
闭合 00000 00001
CP
CNT 000 #0003
此后若触点00001 ON→
00000
KEEP HR0000 00001 HR0000 TIM000 01000 00000 00001 10S
TIM000 #0050
HR0000 01000 5S 5S
2. 计数器指令CNT
格式: CNT N SV
R SV
符号 CP CNT N
N:000~255
SV :BCD 0 ~ 9999

定时器 计数器编程举例

定时器 计数器编程举例
定时器 计数器编程举例
1 定时器
● 定时器的组成框图如图8-1所示。它有3个存储器映象寄存器:TIM、PRD和TCR。这3个寄存器 在数据存储器中的地址及其说明如表8-1所示。定时器控制寄存器(TCR)位结构如图8-2所示, 各控制位和状态位的功能如表8-2所示。
返回首页
图8-1 定时器组成框图
3.中断初始化 (1)中断屏蔽寄存器IMR中的定时屏蔽位TINT0置1,开放定时器0中断。 (2)状态控制寄存器ST1中的中断标志位INTM位清零,开放全部中断。
4.汇编源程序如下:
.mmregs
.def _c_int00
STACK
.usect "STACK",100h
t0_cout
.usect "vars",1 ;计数器
●所 谓 硬 件 配 置 PLL, 就 是 通 过 C54x 的 3 个 引 脚 CLKMD1、CLKMD2 和 CLKMD3的状态,选定时钟方式,如表8-3所示。由表8-3可见,不用PLL 时,CPU的时钟频率等于晶体振荡器频率或外部时钟频率的一半;若用 PLL,CPU 的 时 钟 频 率 等 于 晶 体 振 荡 器 频 率 或 外 部 时 钟 频 率 乘 以 系 数 N (PLLN),使用PLL可以使用比CPU时钟低的外部时钟信号,以减少高 速开关时钟所造成的高频噪声。
INT1
INT2
.space 4*16 .space 4*16 .space 4*16 .space 4*16 .space 4*16 .space 4*16 .space 4*16 .space 4*16 .spac;定时器0寄存器地址
PRD0
.set 0025H
TCR0
.set 0026H

第6章-MCS-51定时计数器

第6章-MCS-51定时计数器
TMOD用于设置其工作方式、选择定时或计数功能; TCON用于控制其启动、中断申请以及作为运行状态的 标志等。
1.定时/计数器工作方式寄存器TMOD TMOD为T0、T1的工作方式寄存器,主要用于控制定
时/计数器T0和T1的工作模式和4种工作方式。低4位用于 控制T0,高4位用于控制T1。
门控 位
在单片机应用中,定时和计数的需求比较多,为了使用 方便并增加单片机的功能,就把定时电路集成到芯片中,称 之为定时/计数器。目前,几乎所有的单片机都集成了可编 程定时/计数器,为单片机提供定时和计数功能。
6.1.1 定时/计数器的结构 MCS-51 单片机内部有两个16位的可编程定时/计数器,称为
定时器0(T0)和定时器1(T1),都具有定时和计数的功能,可 编程选择其作为定时器或作为计数器用。 TMOD:选择定时器/计数器T0、T1的工作模式和工作方式。 TCON:控制T0、T1的启动和停止计数,同时包含了T0、T1的状态。
Hale Waihona Puke ⑵ 工作方式1: T0初值 =216-500s/2s=65536–250=65286=FF06H TH0=FFH;TL0=06H。
⑶ 工作方式2: T0初值 =28-500s/2s=256-250=6 TH0=06H;TL0=06H。
⑷ 工作方式3: T0方式3时,被拆成两个8位定时器,定时初值可分别计
定时器:对片内机器时钟(周期方波)进行计数 计数器:对Tx引脚输入的负脉冲进行计数
6.1.2 定时/计数器的工作原理
单片机内部有两个定时/计数器T0和T1,其核心是计数器, 基本功能是加1。
对外部事件脉冲(下降沿)计数,是计数器;对片内机周 脉冲计数,是定时器。
计数器由二个8位计数器组成。

PLC定时器计数器指令

PLC定时器计数器指令

计数器状态输出
CV
WORD Q、M、D、L
当前计数值输出(二进制)
CV_BCD WORD Q、M、D、L
当前计数值输出(BCD格式)
29
可逆计数器方框图指令及其STL语句表
30
CU CD
S
R
复位
计数值大于0,Q输出始终为1 计数值为0,Q为0 可逆计数器工作时序图
31
示例:设计16h的定时器 。 分析:1、 S7300/400定时器定时值最长即2h46m30s,不超过3
逻辑指令 功能指令
S7系列PLC的指令系统
位逻辑指令 定时器指令 计数器指令 字逻辑指令
数据处理指令
基本位逻辑指令 置位/复位指令 触发器指令 跳变沿检测指令(FN FP) RLO 操作指令 NOT\SET\RESET\CLR\SAVE
算术运算指令
程序执行控制指令 寄存器指令
其它功能指令
数据块指令
显示和空操作指令
说明 允许正在运行的计数器再启动 将计数器二进制计数值装入累加器1 将计数器BCD计数值装入累加器1 将累加器1中的内容传送至指定的字地址处 复位计数器 将计数器的预置值送入计数器字中 启动加计数器 启动减计数器
26
减计数器指令应用示例
加法计数器 ?
27
计数器梯形图方框指令
28
S7-300计数器
1
2
7
时基1 s
三 位 BCD码 范 围 (0~~999999)
无 关 : 当 定 时 器 启 动 时 这 两 位 被 忽 略 定时值
定时字?
时基与定时范围
时基 10 ms
时基的序号 0 0 ---------0
分辨率 0.01 s
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

定时器计数器常用编程方法
定时器计数器是编程中常用的工具,它们可以用于控制程序的执行时间、测量时间间隔、产生脉冲信号等。

以下是一些常用的编程方法来使用定时器计数器:
1. 硬件定时器/计数器:许多微控制器和处理器都内置了硬件定时器/计数器。

这些定时器/计数器可以用于产生精确的时间延迟或测量时间间隔。

在编程时,通常需要配置定时器/计数器的参数,如计数频率、计数值等,然后启动定时器/计数器,让它自动计数或计时。

2. 软件定时器/计数器:如果硬件没有提供定时器/计数器,或者需要更灵活的控制,可以使用软件定时器/计数器。

软件定时器/计数器是通过程序代码实现的,通常使用循环和延时函数来模拟定时或计数。

这种方法不如硬件定时器/计数器精确,但可以实现简单的定时和计数功能。

3. 操作系统提供的定时器/计数器:许多操作系统都提供了定时器和计数器的API或功能。

例如,在Windows系统中,可以使用CreateTimerQueueTimer函数创建一个定时器,用于在指定的时间间隔后触发回调函数。

在Linux系统中,可以使用alarm或setitimer函数设置定时器。

这些方法通常需要结合操作系统提供的API进行编程。

4. 第三方库或框架:许多编程语言和框架提供了对定时器和计数器的支持。

例如,Python中的time模块提供了sleep函数用于暂停程序执行一段时间,而Tkinter库提供了Timer类用于在GUI应用程序中创建定时器。

这些库或框架通常提供更高级的功能和更灵活的控制,但需要学习和使用特定的API或语法。

总之,使用定时器计数器的编程方法有很多种,具体选择哪种方法取决于应用程序的需求和使用的编程语言或框架。

相关文档
最新文档