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