การใช้งานโมดูลแปลงอะนาลอกเป็นดิจิตอล
     การใช้งานโมดูลแปลงสัญญาณอะนาลอกเป็นดิจิตอลของไมโครคอนโทรลเลอร์ PIC ด้วยภาษา C นั้น โปรแกรม CCS C คอมไพเลอร์ ได้จัดเตรียมฟังก์ชั่นไว้ให้พร้อมแล้ว ไม่ว่าจะเป็นส่วนเตรียมความพร้อมและการเรียกใช้งานโมดูล แปลงสัญญาณอะนาลอกเป็นดิจิตอล รวมถึงฟังก์ชั่นในการอ่านค่าสัญญาณเพื่อแปลงอะนาลอกเป็นดิจิตอลดังนี้
     
     1. ฟังก์ชั่นเกี่ยวกับการกำหนดขาพอร์ตอะนาลอก ได้แก่ setup_adc(), setup_adc_ports() และ set_adc_channel()
     2. ฟังก์ชั่นในการอ่านค่าอะนาลอก ได้แก่ read_adc()

ฟังก์ชั่น setup_adc()
     ใช้กำหนดสัญญาณนาฬิกาสำหรับโมดูลแปลงสัญญาณอะนาลอกเป็นดิจิตอล ในตารางที่ 1 แสดงการกำหนดสัญ ญาณนาฬิกาของโมดูลแปลงสัญญาณอะนาลอกเป็นดิจิตอล
ตารางที่ 1 สัญญาณนาฬิกาสำหรับโมดูลแปลงสัญญาณอะนาลอกเป็นดิจิตอลภายใน PIC16F87x
ตัวอย่าง
     setup_adc_ports(ALL_ANALOG);  // กำหนดให้ทุกพอร์ตเป็นอิิพุตอะนาลอก ใช้แรงดันอ้างอิงภายใน
     setup_adc_ports(AN0_AN1_AN3); // กำหนดให้ขา RA0, RA1, RA3 เป็นอินพุตอะนาลอก ใช้แรงดันอ้างอิงภายใน                                                               // นอกนั้นเป็นขาพอร์ตดิจิตอล


ฟังก์ชั่น set_adc_channel()
     เป็นฟังก์ชั่นที่ใช้กำหนดขาพอร์ตอะนาลอกที่ต้องการใช้งานและอ่านค่ากลับมาด้วยฟังก์ชั่น read_adc()

รูปแบบการใช้งาน
     set_adc_channel(channel)
     โดยที่ channel คือ ขาพอร์ตแปลงสัญญาณอะนาลอกเป็นดิจิตอลแต่ละช่อง มีค่าเริ่มต้นที่ 0 เท่ากับ AN0 และเรียงไป ตามลำดับ

ตัวอย่าง
     set_adc_channel(0);      // กำหนดขา RA0 ให้เป็นขาอะนาลอกหรือ AN0
     delay_us(10);                // หน่วงเวลา 10 ไมโครวินาที เพื่อรอให้โมดลู ADC พร้อมที่จะอ่าน
     value = read_adc();       // อ่านค่ามาเก็บไว้ที่ตัวแปร value


ฟังก์ชั่น read_adc()
     เป็นฟังก์ชั่นที่ใช้ในการอ่านค่าจากขาพอร์ตอะนาลอก

รูปแบบการใช้งาน
     value = read_adc();
     โดยที่ value คือ ตัวแปรที่ใช้เก็บค่าที่อ่านได้จากการแปลงสัญญาณอะนาลอกเป็นดิจิตอล มีขนาด 8 บิต หรือ 16 บิต
ขึ้นอยู่กับเบอร์ของไมโครคอนโทรเลอร์ที่กำหนดในไดเร็กตีฟ #device ADC = nn เช่น
     #device ADC = 8         // กำหนดให้โมดูล ADC มีความละเอียดในการอ่านค่าอะนาลอก ขนาด 8 บิต
     #device ADC = 10       // กำหนดให้โมดูล ADC มีความละเอียดในการอ่านค่าอะนาลอก ขนาด 10 บิต

ตัวอย่าง
     set_adc_channel(0);      // กำหนดขา RA0 ให้เป็นขาอะนาลอกหรือ AN0
     delay_us(10);                // หน่วงเวลา 10 ไมโครวินาที เพื่อรอให้โมดลู ADC พร้อมที่จะอ่าน
     value = read_adc();       // อ่านค่ามาเก็บไว้ที่ตัวแปร value


ตัวอย่างการใช้งาน

     เป็นโปรแกรมทดลองการใช้งานโมดูลแปลงสัญญาณอะนาลอกเป็นดิจิตอล โดยกำหนดให้โมดูลมีความละเอียดใน การอ่านค่าอะนาลอกขนาด 10 บิต 3 ช่องอินพุต แสดงผลบนคอมพิวเตอร์ผ่านทางโปรแกรม Hyper Terminal

#include <16F877.h> // Standard Header file for the PIC16F877 device

#device ADC = 10 // ADC = 10 bit

#define CLOCK_SP 20000000  // Clock Speed(Hz)
#fuses HS                                    // Oscillator mode HS
#fuses NOLVP, NOWDT           // No Low Voltage Program, No Watchdog timer
#fuses NOPROTECT                  // Code no protection
#use delay (clock=CLOCK_SP) // Use built-in function: delay_ms() & delay_us()
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7)
#use fast_io(A)

#define vbe 0.0048875855327468230694037145650049 // Vref/1023 ;Vref = 5 volt

int ch[3] = {0,1,3};

void main(void)
{
     int i;
     int16 value;
     float volt;

     setup_adc_ports(AN0_AN1_AN3);
     setup_adc(ADC_CLOCK_INTERNAL);



     while(true)
          {
          printf("\fAnalog to digital\n\r");
          for(i=0;i<3;i++)
               {
               set_adc_channel(ch[i]);
               delay_us(10);
               value = read_adc();
               volt = vbe * (float)value;
               printf("Channel[%d]= %f volt ",ch[i],volt);
               }
          delay_ms(1000);
          }
}

กลับสู่หน้าหลัก
รูปแบบการใช้งาน
     setup_adc(mode)
     โดยที่ mode เป็นค่าคงที่ใช้กำหนดโหมดการทำงานของโมดูลแปลงสัญญาณอะนาลอกเป็นดิจิตอล ที่ได้กำหนด ไว้แล้วในไฟล์เฮดเดอร์ของไมโครคอนโทรลเลอร์เบอร์นั้น (ดูรายละเอียดได้ในไฟล์ .H ของเบอร์ที่เราใช้งาน) เช่น PIC16F87x

ตัวอย่าง
      setup_adc(ADC_CLOCK_INTERNAL); // กำหนดให้โมดูล ADC ใช้สัญญาณนาฬิกาภายใน (RC)
      setup_adc(ADC_OFF); // ปิดการทำงานของโมดูล ADC


ฟังก์ชั่น setup_adc_ports()
     เป็นการกำหนดคุณสมบัติขาพอร์ตที่ใช้งาน ว่าต้องการให้พอร์ตใดบ้างเป็นอินพุตอะนาลอกและขาใดใช้ในการอ้างอิง
หรือกำหนดให้ทำงานกับแรงดันอ้างอิง

รูปแบบการใช้งาน
     setup_adc_ports(value)
     โดยที่ value เป็นค่าคงที่ที่ใช้กำหนดคุณสมบัติขาพอร์ตที่ใช้งาน ที่ได้กำหนดไว้แล้วในไฟล์เฮดเดอร์ของไมโครคอน โทรลเลอร์เบอร์นั้น เช่น PIC16F87x
ตัวอย่างโค้ดโปรแกรม