※ ChatGPTを利用し、要約された質問です(原文:PIC16F877を用いたC言語でのAD変換について)
PIC16F877を用いたC言語でのAD変換について
このQ&Aのポイント
PICを使用したC言語でのAD変換の方法について困っています。
可変抵抗を用いて0-5Vの入力をAN0ピンに接続し、AD変換結果をBポートに出力しようとしています。
プログラムに間違いがあるかどうか、ご指摘いただけませんか?
PIC16F877を用いたC言語でのAD変換について
PICを用いてAD変換をしようとしていますが,思うように出力が出ず困っています.
可変抵抗を用いて0-5V間を調整可能な入力をAN0ピンに接続し,AD変換の結果をBポートに出力しようとしています.
使用条件は,mikroC使用,PIC16F877使用,C言語使用,水晶20MHz,Aポート入力(AN0ピンアナログ入力),Bポート出力,Tad=1.6μsです.
以下のプログラムで間違っている点をご指摘いただきたいと考えています.
unsigned int out_b;
void port_initialize()
{
INTCON=0; //割り込みなし
ADCON0=0x81;
ADCON1=0x8E; //AD変換中の入力範囲設定は電源と共有
TRISA = 0x3f; //AD変換用ポート(1で入力)
TRISB = 0; //出力用ポート(0で出力)
PORTB = 0;
}
void value_initialize()
{
out_b=0;
PORTB=out_b;
}
void main()
{
port_initialize();
value_initialize();
while(1){ //endless
ADCON0=0x81; //AD変換bitを選択
Delay_us(24); //アクィジション時間+AD変換後の待ち時間
ADCON0=0x85; //AD変換開始
Delay_us(20); //AD変換待ち時間
out_b=ADC_Read(0);
PORTB=out_b;
}
}
お礼
返信が遅くなってしまって申し訳ありません. あれからいろいろ試してみた結果,結局原因は不明でしたがPICを16F873Aにしてみたところ動きました. 今回の使用上,16F873Aでも問題ないので16F877は諦めようと思います. いろいろとアドバイス頂き,ありがとうございました.