도움이 코딩에 MicroC.Need C로 모듈을 ADC를 추가 2.

N

nazstaphobia

Guest
/************************************************* *********/
/***** 로봇 *************************/와 객체 감지기
/************************************************* *********/

int ADC가; / / 저장 아날로그 데이터

(Read_Adc을 무효)
(
ADCON0은 = 0b10000001; / / ADON를 선택 Analog2과
ADCON0.GO = 1; / / 변환을 시작합니다
변환 / 잠깐 만요까지 완료하는 동안 (/; ADCON0.GO)
ADC가 = (ADRESH * 4) (ADRESL/64); / / 10 비트 데이터 ==이> Adc
)
무효의 main ()
(

TRISA = 0xFF가; / / 입력 포트 설정 그대로
TRISC = 0x00은; / / 출력 C를 그대로 포트 설정
) 동안 (1
(
Read_Adc은 (); / / 2 개의 아날로그 읽기)하는 경우 (Adc> 300 / / 범위면에있는 물체 감지가
(
PortC.F0 = 1;
delay_us가 (1000); / / 서보 좌회전
PortC.F0 = 0;
)
다른 사람
(
PortC.F0 = 1;
delay_us (1500); 설정하는 일반적인 위치 서보 / / 90도
PortC.F0 = 0;
)
)
)
/************************************************* *********/이것은 코딩 MikroC에서 테스트되었습니다 및 노동.나 자습서 중 일부 선언에 어떻게 붙어 추가하고 싶은 1 right.my 문제 센서를 더 이상 동일하게 감지 서보를 켜고 마우스 오른쪽 센서와 포럼을 물어 내 친구 adcon0.i 검색 이미 읽은 데이터 시트,. 그들의 대부분은 GP2y0a21yk를 보여 1 ADC의 module.so를 삽입하는 방법이 ADC는 적외선 모듈이 coding.please2 도움말 날카로운 '고도를 사용 하란 줘요 ... 정말 감사하고이에 pic16f877a.please 도움이 모듈을 위해 ADC가 통합이 어떻게 날 coding.thanks.올린날짜 분 후에 2 :내가 ADCON0을 구성하는 방법에 깜빡 sensor.so에 tell.the 다른 사용할 먼저 코딩 전 포트 AN0.and한다면 AN1 삽입 같은가??

 
안녕 nazstaphobia,

그냥 데이터 시트 PIC16F877A를 참조하고 스스로 해답을 찾을 것이다.그것은 아주 간단합니다.데이터 시트에있는 레지스터에서 ADCON0를보세요.

사실, 당신은 모듈의 ADC가 아니라 또 다른 추가,하지만 당신은 채널을 입력 ADC를 더가는 하나를 사용하십시오.거기와 ADC 모듈의 하나에만 해당 컨트롤러 즉 입력하는 8 개의 ADC와 이들 멀티플하는 입력은, 오직 하나의 입력 채널이 시간에서 선택했습니다.등록 ADCON0 비트를 위해 몇 가지 조작이 필요 채널을 선택한 후 특정.

등록에서 ADCON0의 (시작가에 bit7 5,6,3 비트 및 bit0 시에 끝나) 채널을 선택할 수 있습니다 사용됩니다.

비트 5-3 CHS2 : CHS0 : 아날로그 채널 선택 비트
000 = 채널 0 (AN0)
001 = 채널 1 (AN1)
010 = 채널 2 (AN2)
011 = 채널 3 (AN3)
100 = 채널 4 (AN4)
101 = 채널 5 (AN5)
110 = 채널 6 (AN6)
111 = 채널 7 (AN7)그래서 대한 AN0 : ADCON0 = 0b10000001;
AN1 : ADCON0 = 0b10001001;
AN2 : ADCON0 = 0b10010001;

등등.

코드에서 당신의, 개조를 다음과 같은 :(Read_Adc을 무효)
(
ADCON0.GO = 1; / / 변환을 시작합니다
변환 / 잠깐 만요까지 완료하는 동안 (/; ADCON0.GO)
ADC가 = (ADRESH * 4) (ADRESL/64); / / 10 비트 데이터 ==이> Adc
)

무효의 main ()
(

TRISA = 0xFF가; / / 입력 포트 설정 그대로
TRISC = 0x00은; / / 출력 C를 그대로 포트 설정
) 동안 (1
(
/ / AN0를 읽는
ADCON0은 = 0b10000001; / / AN0을 SELSECT
Read_Adc ();

/ / 제어 부

/ / AN1를 읽는
ADCON0은 = 0b10001001; / / AN1을 SELSECT
Read_Adc ();

/ / 제어 부

/ / AN2를 읽는
ADCON0은 = 0b10010001; / / AN2을 SELSECT
Read_Adc ();

/ / 제어 부
.
.
.
.
.
.
.

 
ADC가 = (ADRESH * 4) (ADRESL/64); ??????

이것은 이상하게 보입니다.
이것이 정확한지 어떻게 볼 수 있을까요 어차피과 의지의 생성을 많이 기계 코드, 증식과 분열.
비트의 결과 2 위로 가기 ADRESL에 ADRESH와 낮은 비트 8.

기분이 언짢아하는 허용 방법은 결과를 얻을 수 있습니다 :

ADC가 = (<ADRESH <8);
ADC가 = ADRESL;

 
btbass.i과 감사를위한 도움말 matbob 정말 .. 그것을 감사드립니다

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="매우 행복" border="0" />
 
안녕 btbass,

수 u는 u 전에는 설명했다 사용된 라인을 아래.

ADC가 = (<ADRESH <8);
ADC가 = ADRESL;

또한 내가 GP2D12을 센서를 사용하여 오전 샤프 적외선 범위와 나는 1.8Volts을 맥시의 오전지고 전용.
내가 같이 18F46K20를 사용하여 PIC는 오전에 두 쪽과 왼쪽, 오른쪽의 센서에.
그것은 마이크로 컨트롤러는 3.3 브이를 그리고 내부 ± VREF을 설정합니다.
나) 개체에서 (8cm 싶은 말씀 PIC를, 얻을 변화 방향을 때 1volt.

이 포럼에서이 코딩 게시된, 라인이

>______)) (경우 (ADC가> 300) 게시하기 전에 ADC를하는 경우 (

나) 1v를 위해서도 무엇을 아는 경우에는 제에 대해 설정에서이 가치는 (그리고 또한 값을 비트 참조 10.pls 나 좀 도와줘 ...<img src="http://www.edaboard.com/images/smiles/icon_neutral.gif" alt="중립국" border="0" />
 
일반적으로, 당신은 주변 기기가 있어야 초기화 루틴을.예를 들어, adc_init ()는 등, 클럭 주파수를 ADC는 것이다 넣어 세트 ADC를 왼쪽으로 정당화,

그리고) adc_read (ADC의 결과를 반환합니다.

내가 adc'd 것이되고 또한 줄 adc_read () 인자 수 있습니다 그게 그렇게 채널을 선택합니다.

코드 :서명되지 않은 int의 adc_read (서명 번째 문자 adc_ch) (

ADCON0은 = (ADCON0 & 0b111000111) | (<adc_ch <3)은, / / adc_ch 비트 adcon0 5 .. 3입니다

/ / 나는 여기에 tacq에 작은을 지연시킬 수

ADCON0.GO = 1; / / 변환을 시작합니다

(ADCON0.GO) 동안 계속; / / 변환을 완료할 때까지 기다려

반환 (ADRESH * 4) | (ADRESL/64가); / / 10 비트 데이터 ==> ADC가, 왼쪽 정렬

)....
기본에 ....AN0를 0b000 정의 #

#은 AN1를 0b001 정의

...ADC가 = adc_read (AN0); / / ADC는 않습니다에 an0와 ADC의 결과를 반환

...(adc_read 경우 (AN1)) ...
/ / an1 및 지점에 따라 ADC가 않습니다.
 

Welcome to EDABoard.com

Sponsor

Back
Top