用Q0.0输出2KHz的脉冲(即周期为500微秒的方波),初始脉宽500微秒,要求脉宽每100毫秒减少1微秒,直至减少到0,再每100毫秒增加1微秒,直至增加到500微秒,如此反复进行。下面是本人编写的两段程序,可是结果却不大一样。
程序(一)
NETWORK 1
LD SM0.1
CALL 初始化
NETWORK 2
LDW= SMW70, SMW68
S M0.0, 1
NETWORK 3
LDW= SMW70, 0
R M0.0, 1
NETWORK 4
LD SM0.0
TON T37, +1
NETWORK 5
LD M0.0
A T37
DECW SMW70
PLS 0
R T37, 1
NETWORK 6
LDN M0.0
A T37
INCW SMW70
PLS 0
R T37, 1
初始化(子程序):
LD SM0.0
MOVB 16#D3, SMB67
MOVW +500, SMW68
MOVW +500, SMW70
PLS 0
程序(二)
NETWORK 1
LD SM0.1
CALL 初始化
NETWORK 2
LDW= SMW70, SMW68
S M0.0, 1
NETWORK 3
LDW= SMW70, 0
R M0.0, 1
NETWORK 4
LD M0.0
ATCH INT_0, 10
NETWORK 5
LDN M0.0
ATCH INT_1, 10
初始化(子程序):
LD SM0.0
MOVB 16#D3, SMB67
MOVW +500, SMW68
MOVW +500, SMW70
MOVB 100, SMB34
ENI
PLS 0
INT_0(中断):
LD SM0.0
DECW SMW70
PLS 0
DTCH 10
INT_1(中断):
LD SM0.0
INCW SMW70
PLS 0
DTCH 10
程序(一)执行的效果很好,
程序(二)的结果是脉宽变化的时间远远大于100毫秒,不知为什么?请教高手!