Trích:
Nguyên văn bởi vietnhoc
thankyou anh.e đã làm dc. 
thế là đớ tốn chân.
anh có rành về ADC ko.cho e hỏi tí. 
|
Dùng ADC cũng không khó, nhưng có 1 điểm lưu ý là không thể dùng quá 1 kênh ADC tại 1 thời điểm. Nếu muốn dùng ADC bạn chỉ cần chèn hàm khởi tạo ADC và hàm đọc kết quả ADC vào trong file main.c thôi. Rồi trong chương trình chính bạn cứ cho biến ADON=1, GODONE=1 và chờ đến khi GODONE=0, thì lấy kết quả chuyển đổi nằm trong thanh ghi ADRESL và ADRESH. Bạn xem lại datasheet sẽ rõ hơn.
//===================INITIALIZE ADC MODUL=======================//
void init_adc()
{
ANS3 = 1; //SET RA3 RECEIVING ANALOG SIGNAL
//SEE DATASHEET PAGE 99
VCFG0 = VCFG1 = 0; //SELECT VOLT REFERENCE BY INPUT RA3
ADCS0 = ADCS1 = 1; //Nguon dao dong Frc<=>500kHz
ADFM = 1; //Canh phai ket qua
CHS0 = CHS1 = 1;
CHS2 = CHS3 = 0; //SELECT ADC CHANEL 3
ADON = 0;// Turn on function of ADC modul
GODONE = 0;//Will set on in main program
__delay_ms(1);//Waiting for MCU starting
}
//=====KHOI TAO HAM DOC ADC, gia tri tra ve la so nguyen======//
int readADC()
{
int kq;//Define variable kq as integer
GODONE=1;//Start ADC modul
ADON=1;
while(GODONE);//Loop run when bit GODONE=0_see datasheet
kq=((ADRESH<<8)|ADRESL);
return kq;
}