3 Kasım 2010 Çarşamba

PIC ASSEMBLY DILI PROGRAM YAZIM KURALLARI

PROGRAM YAZIMI 
 
    
         1.    Program komutlari öncelikle bir metin editöründe yazilir. Örnegin Windows Not Defteri kullanilabilir.
         2.    Not defterinde yazilan program .asm uzantili olarak kaydedilir.
       3.    Internette mikrodenetleyici ile ilgili sitelerde veya Microchip firmasinin sitesinde ücretsiz olarak verdigi MPLAB veya MPASM programi ile .asm uzantili program .hex olarak derlenir.
        4. PIC yazici programi ile PIC içerisine program yüklenir. PIC Writer (PIC Yazici) programlari internette ücretsiz olarak bulunabilir. Bu programlar içerisinde genellikle IC-Prog sikça tercih edilir.
 
        PIC ASSEMBLY DILI PROGRAM YAZIM KURALLARI
 
        PIC assembler programlari baslik, atama, program ve sonlandirma bloklarindan olusur. Her blok satiri etiket, komut ve adres siralamasini izleyecek sekilde üç sütun halinde yazilir.
        Programin baslik bölümünde kullanilacak olan PIC türü belirtilir. Baslik bölümüne istenildigi taktirde noktali virgül (;) kullanilarak program basligi, programin islevi, yazilis tarihi gibi bilgiler girilebilir. Noktali virgül ile baslayan tüm satirlar assembler tarafindan heksadesimal kodlara çevrilmezler.
        Atama blogu, programda kullanilan register adreslerinin bir etiket ile belirlendigi bölümdür. Bu bölümde yer alan etiketler program içerisindeki register adreslerinin hatirlanmasini kolaylastirmak için kullanilir.
        Program blogu, asil program için gerekli blok degistirme, giris ve çikis portlarinin belirlenmesi gibi hazirliklarin yapildigi komut satirlari ile programin amaca yönelik çalismasini gerçeklestirecek komut satirlarindan olusur.
        Sonlandirma blogu varsa program içi döngülerin yazildigi ve programin END komutu ile sonlandirildigi bölümdür.
 
        Örnek :
 
 
 
        Etiketler, assembly komutlarindan farkli,  programin 1. sütununa yazilan sembolik isimlerdir ve PIC bellek adreslerini atamada kullanilirlar.  Etiketlerde en fazla 31 karakter kullanilabilir. Bir etiket sembolü harf veya alt çizgi ile baslar. Içerisinde alt çizgi, soru isareti ve sembol kullanilabilir.
        Assembly ile program yazarken büyük veya küçük harf karakteri seçilmesi önemli degildir. Komutlar büyük harf, küçük harf veya karisik olarak yazilabilir. Ancak etiketler yazilirken eger etiket sembolü büyük harf olarak belirlenmis ise  program içerisinde de etiket karsiligi ayni sekilde yazilmalidir.
 
        PROGRAM YAZIMINDA SAYILARIN YAZILIS BIÇIMI
 
        Program içerisinde sayilar heksadesimal binary ve desimal formda kullanilirlar. Heksadesimal sayilar “H”, binary sayilar “B” ve desimal sayilar “D” harfleri ile ifade edilir. Büyük ya da küçük harf kullanimi sayilarin gösterimini etkilemez.
 
        Heksadesimal sayi gösterimi : Heksadesimal sayilar 0,1,2,3,4,5,6,7,8,9,A,B,C,D ve F olmak üzere 16 tabanli sayilardir.
PORTB   EQU   H’06’
PORTB   EQU   0x06
PORTB   EQU   06
PORTB   EQU   6
PORTB   EQU   06H
        Binary sayi gösterimi : Binary sayilar ise 0 ve 1 olmak üzere 2 tabanli sayilardir.
MOVLW   B’00101111’
        Desimal sayi gösterimi : Desimal sayilar 0,1,2,3,4,5,6,7,8 ve 9 rakamlarindan olusur.
MOVLW   D’27’
 
        ÖRNEK PROGRAM
 
        PIC programlari  heksadesimal olarak kodlanmis register adresleri ile, register isimlerinin direkt olarak yazilabildigi atama komutlari ile veya INCLUDE komutu kullanilarak PIC içerisindeki sabit register adreslerinin otomatik atanmasi gibi üç degisik sekilde yazilabilir. Bu üç yöntem içerisinde en sik ve en kolay kullanim sekli INCLUDE komutunun kullanilarak register adreslerinin otomatik atandigi program yazimi seklidir. Asagida ayni programin üç degisik yöntemle yazildigi durumlar görülmektedir.
        Asagida heksadesimal olarak kodlanmis register adresleri ile PIC devresine enerji verildiginde bir LED’i yakan program görülmektedir.
 
        Program yazim  örnegi 1 :
  
 
(1)     ; ===== program1.asm ===== 07/07/2004 =====
        Programin ismi, yazilis tarihi gibi bilgilerin yer aldigi bölüm baslik satiridir. Program içerisinde noktali  virgül (;)  ile baslayan tüm satirlar  derleyici tarafindan heksadesimal’e çevrilmez. Bu satirlar programda çesitli hatirlatmalar yapmak amaciyla kullanilir. Baslikta kullanilan esittir (=) isaretlerinin adedi önemli degildir.
 
(2)     LIST           P=16F84
        Programlanacak PIC cinsinin belirtildigi komut satiridir. Örnegin PIC16F877 ile program yazimi yapilmak istenseydi bu kez bu komut satiri LIST P=16F877 olmalidir.
 
(3)     CLRF   H’06’
        Bu komut satiri PORTB’yi sifirlar. H’06’ adresi file register içerisinde PORTB adresine karsilik gelir. CLRF komutu PORTB’nin tüm bitlerini sifirlar. Özellikle önceden programlanip üzerine tekrar program yazilan PIC’ler için bu durum önemlidir. Çünkü PIC içerisindeki eski veri port çikis registerinde hala duruyor olabilir. 
 
        (4),(5) ve (6) numarali komut satirlari birbirleri ile bütünlük olusturur. Bu satirlar PIC entegresine ait portlari giris ve çikis olarak tanimlar.
 
(4)     BSF   H’03’,5
        H’03’ adresi file register içerisinde STATUS registerine karsilik gelir. “5” rakami STATUS’un 5. bitini ifade eder. BSF komutu STATUS’un 5. bitini “1” yapar. Status’un 5. bitinin “1” olmasi BANK1’e geç anlamina gelir. BANK1’e geçme nedeni PORTA ve PORTB’yi yönlendiren registerlerin burada bulunmasidir. Programda buton gibi giris bölümü bulunmadigindan sadece çikis olarak yönlendirme yapilmistir. 
 
 
(5)     CLRF   H’86’
        TRISB’nin tüm bitlerini sifirlar. Gerek TRISA gerekse TRISB’nin içeriginin sifir “0” olmasi yönlendirdigi port bitlerinini çikis olarak tanimlanmasi anlamina gelir. CLRF  H’86’ komutu ile TRISB registerlerinin tamami sifir “0” yapilmis ve yönlendirdigi 8 bitlik tüm PORTB bitleri ise çikis olarak kullanilmistir.
 
 
(6)     BCF   H’03’,5
        H’03’ adresi file register içerisinde STATUS registerine karsilik gelir. “5” rakami STATUS’un 5. bitini ifade eder. BCF komutu STATUS’un 5. bitini “0” yapar. Status’un 5. bitinin “0” olmasi BANK0’a geç anlamina gelir. Böylece portlari yönlendirmek için BANK1’de bulunan TRISA veya TRISB registerlerinin ayarinin ardindan tekrar BANK0’a geri dönülür.
 
(7)     BSF   H’06’,0
        H’06’ adresi file register içerisinde PORTB’ye karsilik gelir. “0” rakami PORTB’nin 0. bitini ifade eder. BSF komutu PORTB’nin 0. bitini “1” yapar. Diger bir ifadeyle bu komut PORTB’nin ilk LED’ini yakar.
 
(8)     END
        Programi sonlandirmak amaciyla kullanilan bir komuttur. Bütün PIC programlari END komutu ile sona erer.
 
 
        Program yazim  örnegi 2 :
 
        Ayni programda atama komutu (EQU) kullanildiginda program içerisinde register adreslerinin heksadesimal olarak her defasinda kullanilmasi gerekmez. Bir defaya mahsus olarak register adreslerinin EQU komutu ile programin atama blogunda belirtilmesi yeterlidir.    
        Asagida EQU komutunun da kullanildigi PIC devresine enerji verildiginde bir LED’i yakan program görülmektedir.
        Programda, EQU komutu ile atama blogunda tüm register adresleri bir defaya mahsus olarak tanimlanmistir. Bu komutun kullanilmasi ile PORTB, STATUS ve TRISB registerleri programin ilerleyen bölümünde isimleriyle ifade edilebilmistir. Bu durum registerlerin heksadesimal adreslerinin sürekli olarak yazilmasini önleyerek programin daha anlasilir olmasini saglar.
 
 
 
        Program yazim  örnegi 3 :
 
        Programda INCLUDE komutu kullanildiginda PIC register adreslerinin EQU atama komutu ile tanimlanmasi zorunlulugu ortadan kalkar ve program daha sade bir duruma dönüsür. Bu tür program yazimi sikça tercih edilen bir durumdur.
Istenildigi taktirde programa konfigürasyon satiri da eklenerek yükleme esnasinda PIC Writer (PIC Yazici) programi ile yapilan ayarlar otomatik olarak program içerisinde düzenlenebilir.
        PIC entegresine program yazimi gerçeklestirmeden önce programin akis diyagramini çizmek karmasik ve uzun mantik islemlerinde kolaylik saglayacaktir. Akis diyagraminin çizilmesi ile program içerisindeki komutlarin hangi mantik siralamasina göre yapilacagi görsellik kazanir. Böylelikle minumum hatasiz program yazimi saglanabilecegi gibi, yazilan programin hata gösterdigi durumlarda program takibinde kolaylik saglanmis olur.
        Akis  diyagram sembolleri asagida verilmistir. Semboller içersine kisa hatirlatici metinler yazilarak programin yazimi ve anlasilabilirliligi saglanir. Kimi zaman bu yazilar programcinin seçecegi semboller dahi olabilir.
 
        Asagida INCLUDE komutunun kullanildigi PIC devresine enerji verildiginde bir LED’i yakan program görülmektedir. Program her ne kadar kisa ve basit olsa da akis diyagram kavraminin anlasilmasi açisindan programa ait akis diyagrami da asagida verilmistir.
 
 

 
 
        STATUS REGISTER
 
         PIC mikrodenetleyicisi programlanirken sürekli olarak Status registerinden faydalanilir. Status registeri  8 bitliktir ve program komutlarina göre bu bitler durum degistirirler. Bu register içeriginde Aritmetik Lojik Ünitesinin (ALU) durumu, Reset durumu ve bank seçme bilgileri bulunur.
 
 
7. bit – IRP :  Bank seçme bitidir. Bu bit PIC16F84’te kullanilmaz ve sifir olarak kalmalidir.
 
                                                                        0 ise ; Bank 0,1 (H’00’ – H’FF’)
                                                                        1 ise ; Bank 2,3 (H’100’ – H’1FF’)
 
6. bit ve 5. bit  – RP1 : PIC portlarini giris veya çikis olarak tanimlamak için kullanilan bank seçme bitleridir. PIC16F84’te RP1 kullanilmaz ve daima sifir olmalidir. RP0, “0” oldugunda Bank 0’a, “1” oldugunda ise Bank 1’e geçilir.
 
                                                                        00 ise ; Bank 0 (H’00’ – H’7F’)
                                                                        01 ise ; Bank 1 (H’80’ – H’FF’)
                                                                        10 ise ; Bank 2 (H’100’ – H’17F’)
                                                                        11 ise ; Bank 3 (H’180’ – H’1FF’)
 
4. bit – TO (TIME-OUT): Zaman asimi bitidir.
 
                            0 ise ; Watchdog Timer (WDT) zamanlayicisinda zaman doldugunda zaman asimi.
                            1 ise ; PIC’e enerji verildiginde, CLRWDT ve SLEEP komutu çalistiginda zaman asimi.
 
3. bit – PD (POWER-DOWN) : Enerji kesilme bitidir.
 
                            0 ise ; SLEEP modu çalistiginda enerji kesilmesi.
                            1 ise ; PIC’e enerji verildiginde ve CLRWDT komutu çalistiginda enerji kesilmesi.
 
2. bit – Z (ZERO) : Aritmetiksel veya mantiksal islem esitlik bitidir.
 
                            0 ise ; Bir aritmetiksel veya mantiksal islem sonucu “0” olmadiginda bu bit sifirdir.
                            1 ise ;  Bir aritmetiksel veya mantiksal islem sonucu “0” oldugunda bu bit sifirdir.
 
1. bit – DC (DIGIT CARRY/BARROW) : Tasma veya ödünç bitidir.
 
                            0 ise ; Alt dört bitin dördüncü bitinde tasma olmadiginda bu bit “0”dir.
                            1 ise ; Alt dört bitin dördüncü bitinde tasma oldugunda bu bit “1”dir.
 
0 .bit – C (CARRY/BARROW) : Tasma ve ödünç bitidir.
 
                            0 ise ; En soldaki 7. bitte tasma olmadiginda bu bit “0” dir.
                            1 ise ; En soldaki 7. bitte tasma oldugunda bu bit “1” dir.
 
 

Hiç yorum yok:

Yorum Gönder

İzleyiciler

LED DİRENÇ HESAPLAMA

All LEDs require current limiting, without a current limiting mechanism the LED will usually burn out in under a second. Adding a simple resistor is the easiest way to limit the current. Use the calculator below to find out the value of resistor you require.

For example if you are wanting to power one of our_blank">red LEDs in an automotive application you would see that the typical forward voltage is 2.0 Volts and the maximum continuous forward current is 30mA. Therefore you would enter 14.5, 2.0 and 30 into the Single LED calculation box. After calculating you get 470ohm 1 watt as the result. Here is a that allows you to enter a resistor value and generate the corresponding color code.

Note: For automotive applications use the actual system voltage, not 12 Volts. Most 12 Volt system actually operate at around 14.5 Volts.

Supply Voltage
VOLTS
Voltage Drop Across LED
VOLTS
Desired LED Current
MILLIAMPS



Calculated Limiting Resistor
OHMS
Nearest higher rated 10% resistor

Calculated Resistor Wattage
WATTS
Safe pick is a resistor with
power rating of (common values are .25W, .5W, and 1W)
WATTS

LEDs in series

Several leds in series with one resistor
Supply Voltage
VOLTS
Voltage Drop Across LED
VOLTS
Desired LED Current
MILLIAMPS
How many LEDs connected




Calculated Limiting Resistor
OHMS
Nearest higher rated 10% resistor

Calculated Resistor Wattage
WATTS
Safe pick is a resistor with
power rating of (common values are .25W, .5W, and 1W)
WATTS
LM317 UYGULAMA DEVRELERİ HESAPLAMASI

 




Çıkış Voltajı
R1 resistor

R2 resistor

R1 resistor
R2 resistor

Çıkış Voltajı


Lm317 uygulama devreleri ve detayli bilgiye Buradan ulasabilirsiniz

LM555 - ASTABLE OSCILLATOR CALCULATOR

LM555 - ASTABLE OSCILLATOR CALCULATOR
Value Of R1 Ohms Value Of R2 Ohms
Value Of C1 Microfarads
Output Time HIGH SECONDS Output Time LOW SECONDS Output Period HIGH + LOW SECONDS Output Frequency HERTZ Output Duty Cycle PERCENT
Resistor values are in Ohms (1K = 1000) - Capacitor values are in Microfarads (1uF = 1)

NOTE: The leakage currents of electrolytic capacitors will affect the actual output results of the timers. To compensate for leakage it is often better to use a higher value capacitor and lower value resistances in the timer circuits.

LM555 Astable Oscillator Circuit Diagram


LM555 - ASTABLE CAPACITOR CALCULATOR

The next calculator can find the capacitance needed for a particular output frequency if the values of R1 and R2 are known.

Value Of R1 Ohms Value Of R2 Ohms
Frequency Desired Hertz
Capacitance uF
s

VOLT AMPER OHM ve WATT HESAPLAMA

Current:
kA (kiloamps) A (amps) mA (milliamps) µA (microamps)
Voltage:
kV (kilovolts) V (volts) mV (millivolts) µV (microvolts)