ccs c hazır fonksiyon kullanmadan adc

Başlatan karbal656, 11 Aralık 2013, 23:24:26

karbal656

CCS C'deki hazır kütüphane(read_adc() ) fonksiyonları kullanılmadan yapılan ADC işlemine örnek.

#include <12F675.h>#use fast_io(a)#FUSES NOWDT                    //No Watch Dog Timer#FUSES NOMCLR                   //Master Clear pin used for I/O#FUSES NOBROWNOUT               //No brownout reset#use delay(internal=4MHz)// Adres tanımlamaları yapılıyor                                             #byte ADRESH = 0x01E          #byte ADCON0 = 0x01F#bit    ADON = ADCON0.0#bit    GO_DONE = ADCON0.1#bit    CHS0 = ADCON0.2#bit    CHS1 = ADCON0.3#bit    VCFG = ADCON0.6#bit    ADFM = ADCON0.7#byte ADRESL = 0x09E#byte ANSEL = 0x09F#bit    ANS0 = ANSEL.0#bit    ANS1 = ANSEL.1#bit    ANS2 = ANSEL.2#bit    ANS3 = ANSEL.3#bit    ADCS0 = ANSEL.4#bit    ADCS1 = ANSEL.5#bit    ADCS2 = ANSEL.6      #byte GPIO = 0x005#bit led = GPIO.1#byte trisio=0x085int16 x0=0;void ayar(){trisio=0x01;output_a(0x00);//adcon0 ayarlarıvcfg=0;adfm=1;ans0=1; ans1=0; ans2=0; ans3=0;  //GPİO.0 giriş olarak ayarlandıadcs0=1; adcs1=1;                //FRC(internal osc) seçildi       }//adc okuma döngüsü         int16 ad_oku()        { chs0=0; chs1=0;  // Kanal seçme bitleri ayarlanıyor(gpio.0)seçildidelay_us(20);    // adc okunacak kanal seçildikten sonra bir gecikme veriliyoradon=1;          // Çevirim işlemi devredego_done=1;       // Çevirim başlatılıyorwhile(go_done);x0=ADRESH<<8;   //10 bit okuma  x0+=ADRESL;     // 10 bit (ADRESH<<8)+ADRESL adon=0;                    return x0;}                                                                                         void main(){   ayar();   while(TRUE)      {ad_oku();               delay_ms(500);     if(x0>512)                                         led=1;     else                         led=0;          }}

Powered by EzPortal