Q編程基礎(chǔ)Q驅(qū)動(dòng)器中的Q來自單詞queue。這是因?yàn)镼驅(qū)動(dòng)器執(zhí)行的命令是排入棧,或緩存器,儲(chǔ)存在驅(qū)動(dòng)器控制部分。 定義:棧是條目的列表或序列,條目從棧的一邊進(jìn)入,從另一邊出。對(duì)于我們的驅(qū)動(dòng)器,棧中的條目就是指令, 當(dāng)指令到達(dá)棧的底部的時(shí)候控制器就會(huì)執(zhí)行該指令。棧存在于控制器不穩(wěn)定的存儲(chǔ)部分中,當(dāng)電源關(guān)閉后留在棧中還沒有執(zhí)行的指令就會(huì)丟失。 Q驅(qū)動(dòng)器中的程序
現(xiàn)在,雖然62條指令可以組合提供很多功能,但是在應(yīng)用上還是有更多的需求。這里我們?cè)O(shè)計(jì)非易失性存儲(chǔ)單元來存儲(chǔ)更多的指令,然后把單元分解成和棧一樣的大小。每個(gè)驅(qū)動(dòng)器中有12個(gè)非易失性存儲(chǔ)單元,都可以用來存儲(chǔ)指令,表現(xiàn)在Q-Program中就是有12個(gè)部分(segment),每個(gè)部分有62行,即一個(gè)棧的長度。每個(gè)部分中的指令可以馬上調(diào)入到棧中。例如,我們開始程序先執(zhí)行segment 1,在最后有個(gè)指令是調(diào)segment 2到棧中。這個(gè)調(diào)用過程僅需要125微秒,基本上可以忽略。12個(gè)部分相互調(diào)用,每個(gè)部分有62行指令,所以現(xiàn)在可以有744個(gè)指令,可以實(shí)現(xiàn)更多功能的組合。
一個(gè)指令由2個(gè)或3個(gè)ASC碼字符(只有字母是代表命令本身)構(gòu)成。一些指令在初始的2或3個(gè)ASC碼字符后面還跟有其他參數(shù)(字母,數(shù)字, 其他的ASCII字符)。這里有倆中基本的指令:立即和緩存。一個(gè)立即指令會(huì)被馬上執(zhí)行,不管目前棧中在它之前的指令的指令是什么。一個(gè)緩存指令會(huì)在棧中 等到其他在棧中存貯的緩存指令執(zhí)行完以后才會(huì)執(zhí)行。 緩存器和立即指令
兩種類型的指令:緩存和立即。緩存指令在棧中按順序存儲(chǔ),按存儲(chǔ)的順序執(zhí)行。如果您向棧中寫入兩個(gè)緩存指令,
那么第二個(gè)指令只有在第一個(gè)指令結(jié)束后才會(huì)執(zhí)行。(在多任務(wù)處理部分有例外)立即指令是立即被執(zhí)行的,
不管棧中其他執(zhí)行的指令,就是說可以和緩存指令并行執(zhí)行。
▲Q編程程序示例 只有緩存指令可以用來編寫程序。原因很簡單,在駐留的程序中,指令是根據(jù)外部事件同時(shí)處理的。立即指令不需要外部事件的觸發(fā)。當(dāng)使用主機(jī)控制器寫入指令到Q驅(qū)動(dòng)器中,立即和緩存指令都可以使用,這取決于功能是否復(fù)雜,需要何種控制。在一些應(yīng)用中,立即指令和緩存指令都可以達(dá)到目的,這樣您就需要做出最佳的選擇。
▲Q編程程序示例 Q編程程序分類
例如:
緩存指令類別,接下來是7個(gè)緩存指令的描述。 |
|