• Dùng đọc giá trị ADC từ thanh ghi chứa kết quả biến đổi ADC .
• Hàm này sẽ hỏi vòng cờ cho tới khi cờ này báo đã hoàn thành biến đổi ADC ( sẽ mất vài us ).
• Nếu giá trị ADC là 8 bit như khai báo trong chỉ thị #DEVICE ,
• Nếu giá trị ADC là 8 bit như khai báo trong chỉ thị #DEVICE , giá trị trả về của hàm là 8 bit, ngược lại là 16 bit nếu khai báo #DEVICE sử dụng ADC 10 bit trở lên .
• Sẽ lấy ADC từ chân bạn chọn trong hàm Set_ADC_channel( ) trước ñó .
• Mỗi lần chỉ đọc 1 kênh, đổi sang đọc chân nào , dùng hàm set_ADC_channel( ) lấy chân đó .
Read_ADC ( mode )
Mode có thể có hoặc không , gồm có :
• ADC_START_AND_READ : giá trị mặc định
• ADC_START_ONLY : bắt đầu chuyển đổi và trả về
• ADC_READ_ONLY : đọc kết quả chuyển đổi lần cuối
#DEVCE 8 bit 10 bit 11 bit 16 bit ADC=8 0-255 0-255 00-255 00-255 ADC=10 x 0-1023 x x
ADC=11 x x 0-2047 x
ADC=16 0-65280 0-65472 0-65504 0-65535
Ví dụ
Ví dụ: ðọc dữ liệu từ analog từ chân AN0 xuất ra port C
#include<16f877.h> #device *=16 ADC=8
#use delay (clock = 16000000) void main (void)
{int8 value; int8 value; int8 value; setup_adc(ADC_CLOCK_INTERNAL); setup_adc_ports(ALL_ANALOG); set_adc_channel(0); set_tris_c(0x00); while(1) { delay_ms(100); value = read_adc(); output_c(value); } } 29
#include<16f877.h> #device *=16 ADC=8
#use delay (clock = 16000000) void main (void)
{int8 value; int8 value; setup_adc(ADC_CLOCK_INTERNAL); setup_adc_ports(ALL_ANALOG); set_tris_c(0x00); set_tris_c(0x00); set_tris_d(0x00); while(1) { set_adc_channel(0); delay_ms(1); value = read_adc(); output_c(value); set_adc_channel(1); delay_ms(1); value = read_adc(); output_d(value); } 30