Em dùng prototype có sẵn nên vẫn chưa hiểu 1 số chỗ :
_Trong phần adc ,phần ngắt :
Code:
// phần khai báo biến bên trên
unsigned int adc_buf[16];
volatile unsigned int* ADC16Ptr = &ADCBUF0; //Pointer to ADC register buffer,
unsigned int adc_filter_buffer[4][6] = { {0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0},{0,0,0,0,0,0} };
unsigned int current_buf = 1;
void __attribute__((__interrupt__)) _ADCInterrupt(void)
{
unsigned int i;
for (i=0; i < 6; i++)
adc_filter_buffer[current_buf][i] = ADC16Ptr[i];
for (i=0; i < 6; i++)
adc_buf[i] = (adc_filter_buffer[current_buf][i]/6 +
adc_filter_buffer[(current_buf+1)%4][i]/6 +
adc_filter_buffer[(current_buf+2)%4][i]/3 +
adc_filter_buffer[(current_buf+3)%4][i]/3);
current_buf = (current_buf+1) % 4;
IFS0bits.ADIF = 0;
}
_trong hàm PrintSignedInteger ,có đoạn :
Code:
// auto-align on 16bit size (655.. = 5 positions)
for (radix=10000, i=0; i < 5; radix/=10, i++)
{
if (converted > radix-1)
{
tmpChar[0] = '0' + (converted/radix);
printer(tmpChar);
converted = converted % radix;
emptyChar = '0';
}
else if (emptyChar == '0')
{
printer("0");
}
}
a giúp em phân tích với ^_^
PS : em là dân cơ khí nhưng vì 1 lí do bắt buộc em phải làm phần điều khiển nên thật sự em chỉ là ăn sổi nhưng em chắc chắn 1 điều là những cái em hỏi em đã đầu tư suy nghĩ ,chứ ko fải cứ bị trục trặc là xách lên hỏi ,nên mong các bác thông cảm nếu có những câu hỏi hơi ngớ ngẩn .