![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Mar 2011
Bài gửi: 9
: |
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?? |
![]() |
![]() |
![]() |
#2 |
Nhập môn đệ tử
Tham gia ngày: Oct 2010
Bài gửi: 9
: |
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
__________________
Tất Cả Vì Điện Tử VIệt Nam |
![]() |
![]() |
![]() |
#3 |
Nhập môn đệ tử
Tham gia ngày: Mar 2011
Bài gửi: 9
: |
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 ??? |
![]() |
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|