PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Cho em hỏi về ADC (http://www.picvietnam.com/forum/showthread.php?t=27691)

hoainam17101990 20-06-2012 05:15 PM

Cho em hỏi về ADC
 
code[#include <16f877a.h>
#include <def_877a.h>
#device *=16 ADC =8
#use delay(clock=20000000)
//#use rs232(baud=19200,parity=n,xmit=pin_C6,rcv=pin_C7)
int8 adc;
void adc_init(){
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(AN0);
set_adc_channel(0);
}
void main()
{
trisb =0x00;
portb=0x00;
adc_init();
int1 done = adc_done();
while(true){
while(!done){//Kiểm tra xem ADC đọc giá trị xong chưa
done = adc_done();
}
adc = read_adc();
portb=adc;//xuat ra port B
}
}]
Khi e mô phỏng thì báo warning:ADC conversion started before 'wait' time has expired following previous conversion or channel change
Tiện thể cho em hỏi:khoảng thời gian delay giữa 2 lần đọc giá trị ADC là bao nhiêu??

daohongduong 06-07-2012 12:10 PM

void adc_init(){
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(AN0);
set_adc_channel(0);

bạn nên để delay sau khi Set ADC vì còn cho thời gian nó khởi động xong nữa, delay_ms(50) là đc ui,
so với con ng 50ms nhanh lắm, nhưng đủ để khởi động ADC ùi

hoainam17101990 06-07-2012 03:14 PM

sửa như bạn vẫn bị như vậy bạn ah.
nếu mình tiện tay thêm vào delay_ms(50) vào sau đoạn:
adc = read_adc();
output_B(adc);//xuat ra port B
delay_ms(50);
thì không bị cảnh báo nữa.nhưng mình không hiểu sao lại vây ???


Múi giờ GMT. Hiện tại là 01:53 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam