我编了一个高速计数的程序,基本上参照是手册上的例子,发现有以下问题:我本想I0.3接通时Q0.3通,同时调用子程序进行高速计数,但发现当I0.3接通时,却没有计数;当将I0.3先接通,然后再断开它才开始计数。不知道这是为什么?
主程序:
NETWORK 1
LD SM0.1
MOVB 16#C8, SMB37
MOVD +0, SMD38
MOVB 100, SMB34
HDEF 0, 0
NETWORK 2
LD I0.3
= Q0.3
CALL SBR_0
子程序:
NETWORK 1
LD SM0.0
ATCH INT_0, 10
ENI
HSC 0
中断:
LD SM0.0
MOVD HC0, VD200
MOVB 16#C0, SMB37
MOVD +0, SMD38
HSC 0
然后我就将主程序的NETWORK 2中加了几句,改为:
NETWORK 2
LD I0.3
= Q0.3
= M0.0
NETWORK 3
LDN M0.0
CALL SBR_0
这样倒是能满足要求进行调用了,但计数却出现了问题,我输入的是固定频率的脉冲信号,但计数的结果却按下面的规律进行变化:64 65 64 65 66 64 65 66 67 64 67 69 64 68 72……这一变化过程是先慢后快,最后计数值就越来越大。请问这又是怎么回事呢?