value = input (pin) fonksiyonu Tris adresini nasıl buluyor?

Başlatan rree, 20 Eylül 2013, 12:40:48

rree

#include <main.h>
#define Button1 pin_A0
int1 Degbit01;
void main()
{

Degbit01=input(Button1);

   while(TRUE)  { }
}

   input fonksiyonun açık kaynak kodları varmı. Biz parametre olarak #define PIN_A0  40   pin anın 40 bit adresinde
olduğunu bildiriyoruz. Dereyici tris  adresini bulub bu pini giriş durumuna getriyor.
Asm kodlar
................... Degbit01=input(Button1);
000A:  BSF    03.5
000B:  BSF    05.0
000C:  BCF    03.5
000D:  BCF    20.0
000E:  BTFSC  05.0
000F:  BSF    20.0
Ben c yi öğrenmeye çalışıyorum  bu olay ilgimi çekti  asm kodlarına baktığımızda pointer kullanmamış.

   

sadogan

 Kullandığınız  MCU nun başlık dosyasını dahil ediyorsunuz
Örnegin pic18f452 için
#include <18f452.h>
18f4h2.h dosyasında bu pinler tanımlı burdan adreslerini buluyor.
compiler sonrasında oluşan dosyalar arasında .lst uzantılı dosyada aradıklarınızı bulabilirsiniz.

rree

CCs de  input fonksiyonu gibi bir fonksiyon  biz yazabilirmiyiz,  yoksa derleyicinin özel bir fonksiyonumu?

pin_A0  40 sayısına karşılık bir sabit.
  Sabit  40 değeri bilgisini   5.adres ve 0 nolu pin olduğunu anlıyor. İlgili tris kayıtcısından o nolu pini 1 yapıp, giriş haline getiriyor. Fonksiyona giren sadece 40 sabit bilgisi. Asembler kodlarına baktığımda fsr kayıtcılarınna dokunmamış.


sadogan


rree