主程序區:
LD     SM0.1                 //首次掃描時調用一次
CALL   SBR_1:SBR1
//
LD     SM0.0                 //一直調用
CALL   SBR_0:SBR0
//--------------------------------------------------
子程序區:
子程序0(一直調用,計時用):
LD     M0.0
AN     T32
TON    T32, VW0   //此寄存器的值即為可調的定時時間(0-10MS),我是通過屏來實現的
子程序1(首次掃描調用,初始化程序用):
LD     SM0.0
R      M0.0, 1
ATCH   INT_0:INT0, 1               //在I0.0 的下降沿觸發的中斷事件
ATCH   INT_1:INT1, 21              //定時器T32,CT = PT 中斷時觸發的中斷事件
ENI
//----------------------------------------------------------
中斷程序區:
中斷0(在I0.0 的下降沿時觸發):
LD     SM0.0
S      M0.0, 1                     //檢測到I0.0的下降沿,置位M0.0到子程序0開始計時
R      Q0.1, 1                     //并復位控制輸出
中斷1(定時器T32,CT = PT 中斷時觸發的中斷事件):
LD     SM0.0
S      Q0.1, 1                     //定時時間到,輸出控制
R      M0.0, 1                     //并復位定時器執行條件(M0.0),為后面再次計時做準備
以上是小弟做的一個0-10MS可調定時器程序,是通過檢測交流電的過零點(由I0.0輸入),然后延時輸出控制振機的振動強度用的(由Q0.1輸出)。但在測試過程中感覺還是有點問題,就是輸出控制不是很準確。再說這還只是一個小程序,掃描周期是很短的,而實際項目的程序是很長的,掃描周期應該會在10MS以外,這樣輸出控制的準確性就更難保證了。
    希望斑主或是各位給能點意見,或是修改我上面的程序,或是干脆重寫一個都行,哪怕是給點思路,也非常感激!
俺的聯系方式:
lyrun1120@163.com    QQ:262823396
[ 此帖被lyrun在2008-09-10 08:56重新編輯 ]