dポイントプレゼントキャンペーン実施中!

PIC16F819のADコンバータを使用しています。
RA0からアナログ信号を入力して、PORTBのそれぞれのピンから1bitずつ(計8bit)のデジタル信号を出力させるためのプログラムを書いてみましたが、まったく動作しません。レジスタの設定なども変えてみましたが動作しませんでした。特にPORTBを全てHighにした場合、なぜかRB6とRB7からの出力を確認することができませんでした。
動作しない原因がまったく分からないので困っています。原因が分かる方がおられましたらご教授お願いします。

#include <pic.h>
__CONFIG(DEBUGEN&WDTDIS&LVPDIS&HS&PWRTEN);

void init_a2d(void){
 ADCON0=0x40;
 ADCON1=0x40;
 ADON=1;
}

unsigned char read_a2d(unsigned char channel){
 channel&=0x07;
 ADCON0&=0xC5; ADCON0|=(channel<<3);
 GODONE=1;
 while(GODONE)continue;
 return(ADRESH);
}

void main(void){
 unsigned char x1;
 init_a2d();//initialise the A2D module
 GIE=0;// we don't want interrupts
 TRISB=0x00;    // PORTB will be used in output mode
 PORTB=0x00;
 x1=read_a2d(1);// sample the analog value on RA0
 PORTB=x1;
}

A 回答 (1件)

> x1=read_a2d(1); // sample the analog value on RA0



RA0 だとchannel は0ではないですか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!