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=0x085

int16 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çildi
delay_us(20);    // adc okunacak kanal seçildikten sonra bir gecikme veriliyor
adon=1;          // Çevirim işlemi devrede
go_done=1;       // Çevirim başlatılıyor

while(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