有人问我想用T32做一个1秒的定时中断,要怎么做?
这样的话我就写几句,看看T32的特殊计时公用和对中断程序的作用吧。
下面程序开始。
ORGANIZATION_BLOCK 主程序:OB1
TITLE=程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
LD SM0.1
CALL SBR0
END_ORGANIZATION_BLOCK
SUBROUTINE_BLOCK SBR_0:SBR0
TITLE=子程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
LD SM0.0
TON T32, 1000
ATCH INT0, 21
ENI
END_SUBROUTINE_BLOCK
INTERRUPT_BLOCK INT_0:INT0
TITLE=中断程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
LD SM0.0
MOVW 0, T32
Network 2
LDN Q0.0
= Q0.0
END_INTERRUPT_BLOCK
(完)
请用TXT编辑器完整复制成*.awl文件,然后用200软件导入。可以看见程序了。程序自初始化开始T32就无休止地工作了。当产生了=中断的时候重新计时。并且做需要做的事情,本例要做的事情是“把Q0.0取反输出”。由于T32的当前值变0了,而且他无休止工作,这样那就会再次出现=中断。程序会一直工作,每秒执行一次。