2011/09/18

PIC でタイマーの作成

スタックにより、タイマーの作成。
サブルーチンのネストは8回までに制限されています。

まず、時間に必要なサイクル数を計算。













;//////////////////////////////////////////
;タイマー
;4Mhz 1クロック=0.00000025S = 0.25μS
;4Mhz 1サイクル=1μS
; 1S=1000mS
; 1S=1000000μS
;1秒  =1000000サイクル
;10秒 =10000000サイクル
;30秒 =30000000サイクル
;1分  =60000000サイクル
;30分 =180000000サイクル

;//////////////////////////////////////////
S6TIME
MOVLW D'1' ;1X4+4+40=48
MOVWF SCONT6
S6LOP
CALL S5TIME
DECFSZ SCONT6
GOTO S6LOP
RETURN
S5TIME
MOVLW D'1' ;1X4+4+32=40
MOVWF SCONT5
S5LOP
CALL S4TIME
DECFSZ SCONT5
GOTO S5LOP
RETURN
S4TIME
MOVLW D'1' ;1X4+4+24=32
MOVWF SCONT4
S4LOP
CALL S3TIME
DECFSZ SCONT4
GOTO S4LOP
RETURN
S3TIME
MOVLW D'1' ;1X4+4+16=24
MOVWF SCONT3
S3LOP
CALL S2TIME
DECFSZ SCONT3
GOTO S3LOP
RETURN

S2TIME
MOVLW D'1' ;1X4+4+8=16
MOVWF SCONT2
S2LOP
CALL S1TIME
DECFSZ SCONT2
GOTO S2LOP
RETURN

S1TIME ;1000μS、1mS
MOVLW D'1' ;1 1X4+4=8
MOVWF SCONT1 ;1
S1LOP
NOP ;1
DECFSZ SCONT1 ;1
GOTO S1LOP ;2
RETURN ;2



;---------------------
;4MHz の場合
;1秒  =1000000サイクル
;10秒 =10000000サイクル
;30秒 =30000000サイクル
;1分  =60000000サイクル
;30分 =180000000サイクル

約1分間の例
60.000961サイクル、計算より961サイクルが多い。






0 件のコメント:

コメントを投稿