PULSEIN

 
語法

        PULSEIN Pin, State, Variable

 

操作

        這個指令是用來測量在指定的引腳上出現的脈波寬度。

  • Pin 常數或變數值(0-23),用來指定要測量脈波寬度的引腳。對一個24引腳BASIC Commander®,這個引腳值的範圍為0~15。
  • State 常數或變數值(0~1),用來定義高準位脈波或低準位脈波。如果寫0,則表示測量低準位脈波,如果寫1,則表示測量高準位脈波。
  • Variable 一個WORD型態的變數用來存放所測量到的脈波寬度。測量的單位為5μs。如果測量到的脈波單位數超過最大值65535或是沒有脈波出現,回傳值為0,表示是一個無效的測量。

 

說明

        這個測量指令是用來測量指定引腳上所出現的脈波寬度。這個指令在脈波寬度被外接硬體使用來表示外部測量值時很有用。可能的例子像是一些外接IC用來測量溫度、壓力等等,這些輸出是以脈波寬度表示而非伏特電壓。這些IC就可以使用BASIC Commander®PULSEIN指令來測量其脈波寬度。待測的脈波可以是高準位脈波或低準位脈波。請務必注意,當執行指令接觸到第一個脈波邊緣時它會開始測量脈波寬度, State變數設1時將會是一個高準位脈波的上升邊緣,State變數設為0時將會是一個低準位脈波的下降邊緣。測量的單位為5μs。如果測量到的脈波單位數超過最大值65535或是沒有脈波出現,回傳值為0。如果脈波沒出現,數值0會被載入Variable,程式則會繼續執行下一個指令。這可以確保當沒有脈波出現時程式不會卡在這個指令上。當PULSEIN指令完成測量時,不論成功與否,程式都會繼續執行下一個指令。

範例

        下面程式示範以PULSEIN指令去量測外部的低準位脈波寬度。
 
 

Sub Main()
   
Dim Result As Word

   
Do
       
Debug "Press the key.", CR
WAIT:
       
Pulsein 0, 0, Result        ' measure low pulse on P0
        If Result=0 Then Goto WAIT  ' not pressed or longer than 327 ms
        Result \= 200               ' convert 5us unit to 1ms unit
        Debug "The key pressed for ", Result, " ms.", CR
   
Loop
End Sub