« PICのお勉強(10) 二進数カウントアップ&ダウン | トップページ | PICのお勉強(12) LEDのPWM制御【改】 »

2012年1月 7日 (土)

PICのお勉強(11) LEDのPWM制御

 PWM制御(Pulse Width Modulation)でLEDをじわ~っと点灯させてみました。
ソースはこれ → lesson11.asm
まあこのサイトのプログラムをマネしただけですが,メインのプログラムはこうなっています。
;====================================================
MAIN
 INCF COUNT,F ; COUNT+1 → COUNT
 MOVF WIDTH,W ; WIDTH → Wレジスタ
 SUBWF COUNT,W ; COUNT-WIDTHの引き算。
 BTFSC STATUS,C ;STATUSレジスタのCビットが0(つまり
               ;COUNT<WIDTH)なら次行をスキップ
 BCF PORTA,2 ; RB2のLEDを消灯

 CALL TIMELOOP1
 INCF CYCLE,F ; CYCLE+1 → CYCLE
 MOVLW 50
 SUBWF CYCLE,W ; CYCLE-50の引き算。
 BTFSS STATUS,C ;STATUSレジスタのCビットが1(つまりCYCLE>=50)
                ;なら次行をスキップ
 GOTO MAIN

;1サイクル終わった時の処理
 CLRF CYCLE
 CLRF COUNT
 BSF PORTA,2 ; RB2のLEDを点灯
 INCF WIDTH,F ; WIDTHを+1 → WIDTH
 MOVLW 50
 SUBWF WIDTH,W ; WIDTH-50の引き算。
 BTFSC STATUS,C ;STATUSレジスタのCビットが0(つまりWIDTH<50)なら
               :次行をスキップ
 CLRF WIDTH
 GOTO MAIN
;=====================================================
 3つのカウンタ,COUNT(LED点灯後の時間を測る),WIDTH(点灯継続時間),CYCLE(1サイクルの時間)を用意し,WIDTHを徐々に増やしながらLEDを点滅させます。これでじわ~っと明るさが変化するわけです。

| |

« PICのお勉強(10) 二進数カウントアップ&ダウン | トップページ | PICのお勉強(12) LEDのPWM制御【改】 »

PICマイコン」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: PICのお勉強(11) LEDのPWM制御:

« PICのお勉強(10) 二進数カウントアップ&ダウン | トップページ | PICのお勉強(12) LEDのPWM制御【改】 »