前面學(xué)習(xí)了高速計(jì)數(shù)器的基本內(nèi)容,包括了解高速計(jì)數(shù)器和使用高速計(jì)數(shù)器的流程,那么今天就繼續(xù)學(xué)習(xí)一下高速計(jì)數(shù)器的其他內(nèi)容。
我們把高速計(jì)數(shù)器和前面學(xué)習(xí)的中斷結(jié)合在一起來學(xué)習(xí),對(duì)于這個(gè)指定中斷,我們要知道幾個(gè)要點(diǎn)的內(nèi)容,,所有計(jì)數(shù)器模式都支持在HSC的當(dāng)前值等于預(yù)設(shè)值時(shí)產(chǎn)生一個(gè)中斷事件;第二,使用外部復(fù)位端的計(jì)數(shù)模式支持外部復(fù)位中斷;第三,除了模式0、1、2之外,所有計(jì)數(shù)器模式支持計(jì)數(shù)方向改變中斷。我們?cè)谑褂脮r(shí)要注意的是當(dāng)使用外部復(fù)位中斷時(shí),不要寫入初始值,或者是在該中斷服務(wù)程序中禁止再允許高速計(jì)數(shù)器。
我們?cè)倏匆幌赂咚儆?jì)數(shù)器的狀態(tài)字節(jié)。我們要知道每一個(gè)高速計(jì)數(shù)器都有一個(gè)狀態(tài)字節(jié),該字節(jié)的每一位都反映了這個(gè)計(jì)數(shù)器的工作狀態(tài)。這些狀態(tài)位表示當(dāng)前計(jì)數(shù)方向以及當(dāng)前值是否大于或等于預(yù)設(shè)值。我們要注意的是只有在執(zhí)行中斷服務(wù)程序時(shí),狀態(tài)位才有效。下面就附上高速計(jì)數(shù)器的狀態(tài)位表。
下面我們就看一下HSC指令的使用。
以上程序中,首次掃描首先傳送16#F8到SMB47定義控制字節(jié),然后執(zhí)行HEDF指令定義高速計(jì)數(shù)模式和選擇高速計(jì)數(shù)器,然后是寫入初始值和預(yù)設(shè)值,然后是ATCH連接中斷程序0和中斷事件號(hào)13,那么就是為計(jì)數(shù)器當(dāng)前值CV等于預(yù)設(shè)值PV連接中斷,然后是一個(gè)ATCH連接中斷程序1和中斷事件號(hào)14,那么就是連接計(jì)數(shù)器方向改變中斷,然后又是一個(gè)ATCH連接中斷程序2和中斷事件號(hào)15,那么就是連接計(jì)數(shù)器外部復(fù)位中斷,建立連接中斷后要允許全局中斷,執(zhí)行ENI指令,后是激活高速計(jì)數(shù)器,執(zhí)行HSC指令。
那么以上是用HSC指令來編程這個(gè)高速計(jì)數(shù)器的程序,除此之外,我們還可以用向?qū)砩筛咚儆?jì)數(shù)器程序。
高速計(jì)數(shù)器向?qū)Э梢詮牟藛螜诘摹肮ぞ?指令向?qū)А崩锩娲蜷_,彈出指令向?qū)?duì)話框后,我們選擇“HSC”再點(diǎn)擊下一步就可以了。
出現(xiàn)“HSC指令向?qū)А焙?,我們可以選擇配置哪個(gè)計(jì)數(shù)器和選擇哪個(gè)模式,這里我們選擇HC1和模式5,然后點(diǎn)擊下一步。
選擇計(jì)數(shù)器和模式之后,我們可以設(shè)置計(jì)數(shù)器的預(yù)置值、初始值和計(jì)數(shù)方向等,這里我們寫入預(yù)設(shè)值為100,其他保持默認(rèn),然后點(diǎn)擊下一步。
然后我們可以配置中斷事件和編程步數(shù),在這里配置的中斷事件不是必須的,我們可以根據(jù)自己的要求來選擇使用,我們要注意的是一個(gè)高速計(jì)數(shù)器多只能有3個(gè)中斷事件。
對(duì)于當(dāng)前值等于預(yù)置值時(shí)產(chǎn)生的中斷,我們還可以寫入新的預(yù)置值和當(dāng)前值,我們可以定義高速計(jì)數(shù)器每一步的操作。定義好之后,點(diǎn)擊下一步,就會(huì)完成向?qū)梢粋€(gè)子程序HSC_INT。
使用時(shí)我們?cè)谥鞒绦驂K中使用SM0.1或邊沿觸發(fā)指令調(diào)用這個(gè)子程序就可以了。
主程序:
HSC_INIT子程序: