2016-05-17 2 views
0

は、私がここに8MHzのFoscが50%のデューティ・サイクルとは0.1Hzの周波数の方形波を生成するため、このコードを持っている:は0.1Hzの矩形波発生器は、

BCF TRISD,7 
MOVLW 0x07 
MOVWF T0CON 
HERE MOVLW 0x67 
MOVWF TMR0L 
MOVLW 0x69 
MOVWF TMR0H 
BCF INTCON,TMR0IF 
BTG PORTD,7 
BSF T0CON,TMROON 
AGAIN BTFSS INTCON,TMR0IF 
BRA AGAIN 
BCF T0CON,TMR0ON 
BRA HERE 

は、私が欲しいのはどのようです方形波の代わりに矩形波を実行し、50%の代わりに30%のデューティサイクルを実行するために、このコードを修正してください。

私は誰かが助け氏天気ベーンのための高度な

+0

は異なるタイマー値で、二つのループ、他の後に1つを持っています。一方は高出力を制御し、他方は低出力を制御する。それらの合計は必要な期間を与え、その比率は必要なデューティサイクルを与えます。したがって、50%は、2つのタイマーカウントが等しい特殊なケースになります。 –

+0

あなたの返事をお寄せいただきありがとうございます** Mr Weather Vane **、私はあなたの正確なポイントを得ていませんでした...あなたはコードの意味を私に見せていただけますか? –

+0

これはPICコードに似ていますが、私はしばらく書いていません。しかし、タイマー設定の構成に基づいて、波形周期に10000回のタイマーカウントが必要であるとします。デューティ・サイクルを30%にすると、出力が高くなり、タイマーを使用して3000カウントが遅れます。次に、出力をLowに書込み、タイマを使用して7000カウント(合計期間10000)を遅延させます。今度は繰り返す。それがあなたのコードなら、それはあまりにも困難であるとは限りません。与えられた波形期間に50%のデューティサイクルを管理しています。 –

答えて

0

おかげで私と感謝を助けることを願って、私は30%のデューティサイクルが、私はそれを解決することができませんでした遅延部を実行するためのコードを編集しましたこれまで....ここ

が更新..です

BCF TRISD,2 
MOVLW 0x07 
MOVWF T0CON 
HERE: MOVLW 0xE5 
MOVWF TMR0L 
MOVLW 0x48 
MOVWF TMR0H 
BCF INTCON,TMR0IF 
BTG PORTD,2 
BSF T0CON,TMR0ON 
AGAIN: BTFSS INTCON,TMR0IF 
BRA AGAIN 
BCF T0CON,TMR0ON 
BRA HERE