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