Read_ADC( mod e)

Một phần của tài liệu PHẦN 3: LẬP TRÌNH VỚI CCS - ĐẶNG LÊ KHOA - TRƯỜNG ĐH KHTN - KHOA ĐIỆN TỬ VIỄN THÔNG doc (Trang 26 - 31)

• 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

Một phần của tài liệu PHẦN 3: LẬP TRÌNH VỚI CCS - ĐẶNG LÊ KHOA - TRƯỜNG ĐH KHTN - KHOA ĐIỆN TỬ VIỄN THÔNG doc (Trang 26 - 31)