发表于:2002-05-13 20:24:00
1楼
接续
以上介绍了221的HSC0的复位方式。其实224,226等的复位和设置是一样的。下面就以221为例编一个外部复位的应用程序:
MANI
NETWORK 1
LD SMO.1
CALL SBR0 //第一个扫描脉冲时调用子程序0。
NETWORK 2
LDW>= HCO,100 //当高速计数器计数值大于等于100时输出为1
O Q0.0
AN I0.3
= Q0.0
SBR 0
NETWORK 1
LD SM0.O
MOVB 16#F8,SMB38 //设置高速计数器的工作模式为增计数
MOVD +0, SMD37 //清除当前值
MOVD +100, SMD47 //设定预定值
HDEF 0, 1 //设定高速计数器0为模式1,即外部复位。
ENI //允许全局中断
ATCH INT_0, 28 //中断事件0分配给事件28,即I0.2外部复位。
HSC 0 //启动高速计数器0。
INT0
NETWORK 1
LD SM0.0 //扫描常闭
MOVB 16#C0,SMB38 //设定计数器为可更新当前值模式。
HSC 0 //启动高速计数器0
需要特别说明的是:从计数器读取当前值时必须从HCO读取,不可以从SMD37中读取。