« PICのお勉強(11) LEDのPWM制御 | トップページ | PIC16F84A ラーメンタイマー »

2012年1月 8日 (日)

PICのお勉強(12) LEDのPWM制御【改】

 昨日のプログラムを見てたら,変数を1つ減らせることに気づきました。
CYCLEという変数を削ったソースはこれ→ lesson12.asm

  メインプログラムはこんな具合です。
;==============================================
MAIN
 INCF COUNT,F ; COUNT+1 → COUNT
 MOVF WIDTH,W ; WIDTH → Wレジスタ
 SUBWF COUNT,W ; COUNT-WIDTHの引き算。
 BTFSC STATUS,C ; COUNT  BCF PORTA,2 ; RB2のLEDを消灯
 CALL TIMELOOP1
 INCF COUNT,F ; COUNT+1→ COUNT
 MOVLW 50 ; 1サイクルの時間=50
 SUBWF COUNT,W ; COUNT-50の引き算。
 BTFSS STATUS,C ; COUNT>50なら次行をスキップ
 GOTO MAIN

;1サイクル終わった時の処理
 CLRF COUNT
 BSF PORTA,2 ; RB2のLEDを点灯
 INCF WIDTH,F ; WIDTHを+1 → WIDTH
 MOVLW 50 ; WIDTHの上限=50
 SUBWF WIDTH,W ; WIDTH-50の引き算。
 BTFSC STATUS,C ; WIDTH<50なら次行をスキップ
 CLRF WIDTH
 GOTO MAIN
;==============================================
 変数COUNTにも変数CYCLEの役割を持たせているわけです。
こっちのほうがスッキリしてるんじゃないかな?

|

« PICのお勉強(11) LEDのPWM制御 | トップページ | PIC16F84A ラーメンタイマー »

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

コメント

コメントを書く



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


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



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/26930/53688098

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

« PICのお勉強(11) LEDのPWM制御 | トップページ | PIC16F84A ラーメンタイマー »