Em đang dùng ADC của AVR, xin các bác chỉ giúp em một số lệnh với nhé.
Lệnh interrupt [ADC_INT] void adc_isr(void)
Nghĩa là gì vậy ạ?
PORTB=(unsigned char) ~(ADCW>>2);
thì ~(ADCW>>2); nghĩa là gì ạ? dấu ~ làm gì vậy? cảm ơn các bác. Em chỉ biết ADCW là 1 thanh ghi nào đấy liên quan việc chuyển đổi ADC, dịch sang phải 2 nghĩa là gì nhỉ??
Chương trình ở dưới:
// I/O register definitions for avr128
#include <MEGA128.h>
// delay functions
#include <delay.h>
#define ADC_VREF_TYPE 0x00
// ADC interrupt service routine
interrupt [ADC_INT] void adc_isr(void)
{
// The LEDs will display the 8 most
// semnificative ADC bits
PORTB=(unsigned char) ~(ADCW>>2);
// 20ms delay
delay_ms(20);
// Start a new AD conversion
ADCSRA|=0x40;
}
void main(void)
{
// Port B initialization
PORTB=0xFF; // all outputs
DDRB=0xFF; // all LEDs are initially off
delay_ms(20);
delay_ms(20);
// ADC initialization
// ADC Clock frequency: 57.656 kHz
// ADC Interrupts: On
ADCSRA=0x8E;
// Global enable interrupts
#asm("sei")
// Select ADC input 0
ADMUX=0;
// Start the first AD conversion
ADCSRA|=0x40;
// All the job is done by ADC interrupts
while (1);
}
Lệnh interrupt [ADC_INT] void adc_isr(void)
Nghĩa là gì vậy ạ?
PORTB=(unsigned char) ~(ADCW>>2);
thì ~(ADCW>>2); nghĩa là gì ạ? dấu ~ làm gì vậy? cảm ơn các bác. Em chỉ biết ADCW là 1 thanh ghi nào đấy liên quan việc chuyển đổi ADC, dịch sang phải 2 nghĩa là gì nhỉ??
Chương trình ở dưới:
// I/O register definitions for avr128
#include <MEGA128.h>
// delay functions
#include <delay.h>
#define ADC_VREF_TYPE 0x00
// ADC interrupt service routine
interrupt [ADC_INT] void adc_isr(void)
{
// The LEDs will display the 8 most
// semnificative ADC bits
PORTB=(unsigned char) ~(ADCW>>2);
// 20ms delay
delay_ms(20);
// Start a new AD conversion
ADCSRA|=0x40;
}
void main(void)
{
// Port B initialization
PORTB=0xFF; // all outputs
DDRB=0xFF; // all LEDs are initially off
delay_ms(20);
delay_ms(20);
// ADC initialization
// ADC Clock frequency: 57.656 kHz
// ADC Interrupts: On
ADCSRA=0x8E;
// Global enable interrupts
#asm("sei")
// Select ADC input 0
ADMUX=0;
// Start the first AD conversion
ADCSRA|=0x40;
// All the job is done by ADC interrupts
while (1);
}
Comment