新闻详情

程序指数 计数器

发布时间: 2022-12-16
观看程序指数 计数器视频:

示例:读取并保存当前计数值

使用程序设置当前值和预设值 

每个高速计数器内部都存储着一个 32 位当前值 (cv) 和一个 32 位预设值 (pv)。当前值 是计数器的实际计数值,而预设值是当前值达到预设值时选择用于触发中断的比较值。可 以按照上一部分所述使用 hc 数据类型读取当前值。不能直接读取预设值。要将新的当前 值或预设值载入高速计数器,必须对控制字节以及保存所需新当前值和/或新预设值的特 殊存储器双字进行设置,同时,必须执行 hsc 指令将新值传送到高速计数器中。下表列 出了用于保存所需新当前值和预设值的特殊存储器双字。

使用以下步骤将新当前值和/或新预设值写入高速计数器(可按任一顺序执行步骤 1 和 2):

1. 加载要写入相应 sm 新当前值和/或新预设值的值(请参见下表)。加载这些新值尚不 会影响高速计数器。 

2. 设置或清除相应控制字节的相应位,指示是否更新当前值和/或预设值(位 x.5 代表预 设值,位 x.6 代表当前值)。调节这些位尚不会影响高速计数器。

3. 执行引用相应高速计数器编号的 hsc 指令。执行该指令可检查控制字节。如果控制字 节指定更新当前值、预设值或两者,则会将相应值从 sm 新当前值和/或新预设值位置 复制到高速计数器内部寄存器中。

说明 

执行相应的 hsc 指令前,更改新当前值和新预设值的控制字节和 sm 位置不会影响高速 计数器。

在程序中附加 hsc 中断例程

当 hsc 的当前值等于加载的预设值时,所有计数器模式都支持中断事件。使用外部复位 输入的计数器模式支持在激活外部复位时中断。除模式 0 和模式 1 以外的所有计数器模 式均支持计数方向改变时中断。可单独启用或禁用这些中断条件。有关中断使用的完整讨 论,请参见中断指令 (页 302)部分。

hsc 状态字节

每个高速计数器的状态字节提供状态存储器位,用于指示当前计数方向以及当前值是否或 等于大于预设值。下表定义了每个高速计数器的这些状态位。

说明 

只有在执行高速计数器中断例程时,状态位才有效。监控高速计数器状态的目的在于启用 对正在执行的操作有重大影响的事件的中断程序。

高速计数器的初始化顺序示例

hsc0 在以下初始化和操作顺序说明中被用作计数器。

● hsc0 和 hsc2 支持计数模式 (0, 1)、(3, 4)、(6, 7) 和 (9, 10)。

● hsc1 和 hsc3 仅支持计数模式 0。 初始化说明假设 cpu 刚刚被置于 run 模式,因此扫描存储器位为真。如果不是如 此,请记住在进入 run 模式后,只能为每台高速计数器执行一次 hdef 指令。为高速计 数器第二次执行 hdef 会生成运行时错误,并不会更改该计数器执行 hdef 时计数 器的设置方式。

说明 

虽然以下顺序分别显示如何更改方向、当前值和预设值,但您可以按照相同的顺序更改所 有数值或这些数值的任何组合,方法是相应设置 smb37 的值,然后执行 hsc 指令。

初始化模式 0 和 1  

下列步骤说明如何为带内部方向的单相向上/向下计数器(模式 0 和 1)初始化 hsc0。

1. 使用扫描存储器位调用执行初始化操作的子例程。由于使用子例程调用,后续扫 描不再调用子例程,因此可减少扫描执行时间并使程序结构更加合理。

2. 在初始化子例程中,根据所需的控制操作加载 smb37。 例如:smb37 = 16#f8 产生如下结果: – 启用计数器 – 写入新当前值 – 写入新预设值 – 将方向设置为加计数 – 将复位输入设为高电平有效 

3. 将 hsc 输入设 0 且 mode 输入设为下列值之一后执行 hdef 指令: – 模式 0 表示无外部复位 – 模式 1 表示有外部复位

4. 用所需当前值加载 smd38(双字大小值)(加载 0 可进行清除)。 

5. 用所需预设值加载 smd42(双字大小值)。 

6. 为捕获当前值等于预设值事件,将 cv = pv 中断事件(事件 12)附加于中断例程,编 程中断。有关中断处理的完整详细信息,请参见讨论中断指令的部分。

7. 为捕获外部复位事件,将外部复位中断事件(事件 28)附加于中断例程,编程中断。

8. 执行全局中断启用指令 (eni) 以启用中断。 

9. 执行 hsc 指令,使 cpu 对 hsc0 编程。 

10. 退出子例程。


展开全文

供应商
浔之漫智控技术(上海)有限公司总部
联系电话
15021292620
手机号
15021292620
在线咨询QQ
2799536152
销售
颜娟
所在地
上海市松江区石湖荡镇塔汇路755弄29号1幢一层A区213室
我们的新闻
咨询 在线询价 拨打电话