bu programı açıklarmısınız?

Başlatan hakeeem, 13 Haziran 2010, 19:01:59

hakeeem

main (void)
{
const float lsb = 5000.0/1024.0
float mv, sabtigrat, fahrenheit;
unsigned int sıcaklık ;
trisb =0;
trisa = 3;

ADCON1=0x8E;
ADCON0 = 0x41;
FOR (;;)
{
ADCON0=0x45
while((adcon0&4)!=0);
sicaklik=ADRESH;
sicaklik=256 sicaklik+ADRESL;
mc=sicaklik lsb
santigrat=mv/10.0
fahrenheit=1.8 santigrat+32;
If(mod==1)
portb = (ınt)santrigrat;
else
PORTB=(ınt) fahrenheit;
delay ms(250)

bu yazdıklarımı satır satır ne işe yaradığını ve genel olarak ne iş yaptığını yazabilirmisiniz ?

hakeeem

arkadaşalr bu komutlardan yarın sınava girecem biri bunların cevabını yazarsa Allah razı olsun. ben cevabını çok aradım ama pek azını yapabildim.

z

C konusma dili gibidir. Basit programlari anlamak icin cok az ingilizce bilmen yeterlidir.

Nasil okunuyor soyleyeyeyim.

ADCON0=0x45

ADCON0 a 45 Hex sayisini yukle

while((adcon0&4)!=0);    

adcon degerini 4 ile and islemi yaptiginda, sonuc sifirdan farkliysa bekle.

Yani adcon un 4 agirlikli biti 0 oluncaya kadar bekle.

PORTB=(ınt) fahrenheit;

Fahreneit degiskeninin icinde tuttugu veriyi integer varsay ve PORTB ye yaz.

Gibi.....


Bana e^st de diyebilirsiniz.   www.cncdesigner.com

radres


16F877'ye göre

main (void) // ana fonksiyon
{
const float lsb = 5000.0/1024.0  // ADC'nin 1LSb değeri hesaplanmış ve lsb değişkenine atılmış
float mv, sabtigrat, fahrenheit;   // ondalıklı değişkenler tanımlanmış
unsigned int sıcaklık ; // işaretsiz tam olarak sıcaklik değişkeni tanımlanmış
trisb =0;     // B portu komple çıkış yapılmış
trisa = 3;    // A portunun RA0 ve RA1 pinleri giriş yapılmış

ADCON1=0x8E;        // ADC ayarları= ADC sonucunu sağa dayalı olarak yaz ve RA0 analog uç, Vref+ ucu Vdd'ye bağlı, Vref- ucu   Vss ye bağlı
ADCON0 = 0x41;     //ADC Ayarları= ADC çalışma frekansı fosc/8, AN0 pinini analog giriş için seç, ADC modülünü aç
FOR (;;)  // sonsuz döngü
{
ADCON0=0x45  // ADC çevrimine başla
while((adcon0&4)!=0);     // ADC meşgul değil ise
sicaklik=ADRESH; // sıcaklik değişkenine ADC'den okunan değerin düşük byte değerini yaz
sicaklik=256 sicaklik+ADRESL; // Bu komutta bisorun var "256 sicaklik" komutunda 256 ile sıcaklık arasında bir operatör olmalı
mc=sicaklik lsb  // Bu komutta bisorun var "sicaklik lsb" komutunda sıcaklık ile lsb arasında bir operatör olmalı
santigrat=mv/10.0   //okunan değeri santigrat olarak hesapla ve santigrat değişkenine at
fahrenheit=1.8 santigrat+32;  //okunan değeri fahrenat olarak hesapla ve fahrenheit değişkenine at
If(mod==1)
portb = (ınt)santrigrat;  // Eğer mod değişkeni 1 ise b portuna santrigrat değerini gönder
else
PORTB=(ınt) fahrenheit; // Eğer mod değişkeni 1'e eşit değilse b portuna fahrenheit değerini gönder
delay ms(250)  // 250 ms bekle

hakeeem

Allah razı olsun kardeş valla çok makbule geçti eyw :)