PICプログラミングに対する質問
PIC16F627Aを使い、160KHzの周波数を外部に出力したいのですが、うまくいきません。
仕様はこのようになっています。
セラロックとして10MHzを使っています。(20MHzを使うことも考えている)
電源は5Vです。
開発環境はMPLAB IDEに CCS社Cコンパイラを使っています。
現在のプログラムはこのようになっています。
////////////////////////////////////////////////////////////////////////
//タイマ0を用いて160KHzの周波数を出力する
//3.1μsでタイマ0の割り込み
////////////////////////////////////////////////////////////////////////
#include<16f627a.h>
#fuses HS,NOWDT,NOPROTECT,PUT,BROWNOUT,NOLVP //コンフィグレーションの設定
#use delay(CLOCK = 10000000) //発振子の周波数10MHz
//delay_ms()の使用
//定数の定義
#byte PORTA=0x05
#bytePORTB=x06
#byte TMR0 = 0x01
#bit T0IF = 0x0B.2
//タイマ0割り込み処理
#INT_RTCC //タイマ0の割り込み処理関数の宣言
void rtcc_isr(void)
{
T0IF=0; //タイマ0の割り込みフラグ TMR0=0xF8; //タイマ0の初期値
PORTA^=0x04; //PORTAの出力反転
}
//メイン関数
void main(void){
set_tris_a(0xF8); //出力ポートの設定
set_tris_b(0xF7); //出力ポートの設定
setup_timer_0(RTCC_INTERNAL | RTCC_DIV_1);//プリスケーラを使用しない
set_timer0(0x0); //TMR0に0x0を書き込む
enable_interrupts(INT_RTCC); //タイマ0の割り込み許可
enable_interrupts(GLOBAL); //グローバルの許可
PORTB = 0x7F; //出力
while(1){ //割り込みを待つ
delay_ms(1); //1μs
}
}
/////////////////////////////////////////////////////////////////////
このようなプログラムで160KHzの周波数を出力することは可能でしょうか?
もし不足の部分や誤っていることがあったら教えてください。
お礼
急いでいたため、とりあえずDELAYに1を足してから、DCFSNZで分岐していました。 バイト処理命令を中心に検討していましたが、どうやら機能の読み方が足りなかったようです。うっかりしていました。