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
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の役割を持たせているわけです。
こっちのほうがスッキリしてるんじゃないかな?
| 固定リンク | 0
「PICマイコン」カテゴリの記事
- ZK-80で足し算(2020.07.23)
- TK-80互換機 ZK-80のキット(2020.07.21)
- PICのお勉強(37) C言語編 12F683でA/D変換(2015.06.02)
- UVレジンでLEDイルミネーション (2)(2015.05.15)
- PICのお勉強(35) C言語編 PWMでサーボモータを動かす(2014.10.05)
コメント