Đây là đoạn chương trình lấy mẫu mình thực hiện theo cách 2 của bạn :
Code:
/* Chuong trinh con khai bao ADC */
void Init_ADC(void)
{
ADPCFG = 0xFFFC ; // CHAN RB0;RB1; LA CHAN VAO ANALOG
ADCON1 = 0x004C ; // TIMER 3 CHAM DUT VIEC LAY MAU VA KICH HOAT CHUYEN DOI
ADCON2 = 0x0500;
ADCHS = 0; // KENH 0 DOC TIN HIEU GIUA AN0 VA AVSS
ADCSSL = 3;
ADCON3 = 0x0002; // TAD = 2*TCY
// chu ky lay mau cua dong dien
TMR3 = 0;
PR3 = 0x007D; // 1ms LAY MAU
T3CON = 0x8010; // Cho phep bat dau dem ,pres cale 1:64
_ADIF = 0; // XOA CO NGAT
_ADIE = 1; // BAT CO CHO PHEP NGAT
_ADON = 1; // BAT MODULE ADC
_ASAM = 1; // CHE DO LAY MAU TU DONG
/* Thoi gian lay mau dong do T3 quy dinh;
}
/* Chuong trinh con phuc vu ngat ADC */
void _ISR _ADCInterrupt(void)
{
dong_dien_thuc = ADCBUF0 ; // gia tri dong dien do duoc
n++ ;
while (n >= 10)
{
n = 0;
toc_do_thuc = ADCBUF1 ; // gia tri toc do do duoc
}
_ADIF = 0 ;
}