3 Kasım 2010 Çarşamba

PIC16F84 KOMUTLARI

   PIC16F84 KOMUTLARI    
        PIC16F84'ün 35 komutu bulunur. Bu komutlar ve açiklamalari asagidaki tabloda görülmektedir.
f    : file register
W : Work register
b   : f register içerisindeki bit pozisyonu
d   : Yönlendirilecek yer (d=0 ise f register, d=1 ise W register)
 
         KOMUTLAR ve ÖRNEKLER
 
1- MOVLW k: k sabit degerini W registerine yükler.
 
Örnek : MOVLW   H’FF’ : H’FF’ sabit degerini W registerine yükler. Komut öncesi W register içerigi H’00’ gibi herhangi bir deger ise komut sonrasi H’FF’ olur.
 
2- MOVWF f : W registerinin içerigini f registerine yükler.
 
Örnek : MOVLW   TRISB : W register içerigi H’FF’ ise bu degeri TRISB registerine yükler.
 
3- MOVF f,d : f registerin içerigini W registerine veya yine f registerine yükler.
 
a)       Eger d = 0 ise W registere yükler.
 
Örnek : MOVF   FSR,0 : FSR register içerigi H’A0’ ise W register içerigi de H’A0’ olur.
 
b)       Eger d = 1 ise f registere yükler.
 
Örnek : MOVF   FSR,1 : W register içerigi sabit kalirken FSR register içerigi H’FF’ ise bu degeri yine FSR registere yükler. d=1 durumu status registerdeki Z bayragini (flag) etkiler. Z=1 olur.
 
4- CLRW : W register içerigini sifirlar.
 
Örnek : CLRW  : Komut öncesi W register içerigi H’FF’ ise komut sonrasi W register içerigi H’00’ olur.
 
5- CLRF f : f register içerigini sifirlar.
 
Örnek : CLRF  PORTB : PORTB’yi sifirlar. PORTB H’00’ veya B’00000000’ olur. Bu durum ayni zamanda PIC’in B portunun çikis olarak tanimlanmasinda kullanilir.
 
6- SWAPF f,d : f registerdeki ilk dört bit ile son dört biti yer degistirerek sonucu W veya f registere yükler.
 
a)       Eger d = 0 ise W registere yükler.
 
Örnek : SWAP   REG,0 : REG register içerigi H’F0’ ise W register içerigi de H’0F’ olur. Diger bir ifadeyle binary formda REG register içerigi B’11110000’ ise W register içerigi B’00001111’ olur. REG, yazilimci tarafindan tanimlanan özel bir register adresidir ve isim degistirilebilir.
 
b)       Eger d = 1 ise f registere yükler.
 
Örnek : SWAP   REG,1 : REG register içerigi H’F0’ ise komut sonrasi REG register içerigi H’0F’ olur. Binary formda REG register içerigi B’11110000’ ise komut sonrasi B’00001111’ olur.
 
7- ADDLW k : W registerin içerigini k sabiti ile toplayarak sonucu W registere yükler.
 
Örnek : ADDLW  H’10’ : W register içerigi H’15’ ise komut sonrasi W register içerigi H’25’ olur.
 
                                 
 
8- ADDWF f,d : W registeri ile f registeri içerigini toplayarak sonucu W registere veya f registere yükler.
 
a)       Eger d = 0 ise W registere yükler.
Örnek : ADDWF FSR,0 : FSR register içerigi H’0B’ ve W register içerigi de H’11’ ise W register içerigi H’1C’ olur. FSR register içerigi ise H’0B’ olarak kalir.
                                            
 
b)       Eger d = 1 ise f registere yükler.
 
Örnek : ADDWF FSR,1 : FSR register içerigi H’4F’ ve W register içerigi de H’A0’ ise FSR register içerigi H’EF’ olur. W register içerigi ise H’A0’ olarak kalir.
 
                                            
 
9- SUBLW k : k sabit degerinden W register içerigini çikarir ve sonucu W registerine yükler.
 
Örnek : SUBLW  H’15’ : W register içerigi H’10’ ise komut sonrasi W register içerigi H’05’ olur.
 
                                 
 
10- SUBWF f,d : f register içeriginden W register içerigini çikarir ve sonucu W veya f registerine yükler.
 
a)       Eger d = 0 ise W registere yükler.
 
Örnek : SUBWF KPR,0 : KPR register içerigi H’D0’ ve W register içerigi de H’10’ ise W register içerigi H’C0’ olur. KPR register içerigi ise H’D0’ olarak kalir.
 
                                            
 
b)       Eger d = 1 ise f registere yükler.
 
Örnek : SUBWF KPR,1 : KPR register içerigi H’7A’ ve W register içerigi de H’51’ ise KPR register içerigi H’29’ olur. W regiter içerigi ise H’51’ olarak kalir.
 
                                 
 
11- ANDLW k : W registeri içerigi ile k sabitine AND islemi uygulayarak sonucu W registerine yükler.
 
Örnek : ANDLW  H’CF’ : W register içerigi H’1A’ ise komut sonrasi W register içerigi H’0A‘ olur.
 
                                 
 
12- ANDWF f,d : W register ile f register içerigine AND islemi uygulayarak sonucu W registerine veya          f registerine yükler.
 
a)       Eger d = 0 ise W registere yükler.
 
Örnek : ANDWF KSM,0 : KSM register içerigi H’2C’ ve W register içerigi de H’12’ ise W register içerigi H’0C’ olur. KSM register içerigi ise H’2C’ olarak kalir.
 
                                
 
b)       Eger d = 1 ise f registere yükler.
 
Örnek : ANDWF  KSM,1 : KSM register içerigi H’A3’ ve W register içerigi de H’F0’ ise KSM register içerigi H’A0’ olur. W register içerigi ise H’F0’ olarak kalir.
 
                                
 
13- IORLW k : W registerinin içerigi ile k sabitine OR islemi uygulayarak sonucu W registerine yükler.
 
Örnek : IORLW  H’B4’ : W register içerigi H’26’ ise komut sonrasi W register içerigi H’B6‘ olur.
 
                                           
 
14- IORWF f,d : W registeri ile f registeri içerigine OR islemi uygulayarak sonucu W registerine veya  f registerine yükler.
 
a)       Eger d = 0 ise W registere yükler.
 
Örnek : IORWF MTN,0 : MTN register içerigi H’19’ ve W register içerigi de H’4D’ ise W register içerigi H’5D’ olur. MTN register içerigi ise H’19’ olarak kalir.
 
                                
 
b)       Eger d = 1 ise f registere yükler.
 
Örnek : IORWF  MTN,1 : MTN register içerigi H’DE’ ve W register içerigi de H’AA’ ise MTN register içerigi H’FE’ olur. W register içerigi ise H’AA’ olarak kalir.
 
                                
 
15- XORLW k : W registerinin içerigi ile k sabitine XOR islemi uygulayarak sonucu W registerine yükler.
 
Örnek : IORLW  H’F5’ : W register içerigi H’67’ ise komut sonrasi W register içerigi H’92‘ olur.
 
                                
 
16- XORWF f, d : W registeri ile f registeri içerigine XOR islemi uygulayarak sonucu W registerine veya            f registerine yükler.
 
a)       Eger d = 0 ise W registere yükler.
 
Örnek : XORWF ENG,0 : ENG register içerigi H’C2’ ve W register içerigi de H’CF’ ise W register içerigi H’0D’ olur. ENG register içerigi ise H’C2’ olarak kalir.
 
                                
 
b)       Eger d = 1 ise f registere yükler.
 
Örnek : XORWF  ENG,1 : ENG register içerigi H’AA’ ve W register içerigi de H’0F’ ise ENG register içerigi H’A5’ olur. W register içerigi ise H’0F’ olarak kalir.
 
                                
 
17- INCF f,d : f registerin içerigini 1 artirarak sonucu W registere yükler.
 
a)       Eger d = 0 ise W registere yükler.
 
Örnek : INCF REG,0 : REG register içerigi H’D4’ ise komut sonrasi W register içerigi H’D5’ olur.
 
b)       Eger d = 1 ise f registere yükler.
 
Örnek : INCF REG,1 : REG register içerigi H’A1’ ise komut sonrasi REG register içerigi H’A2’ olur
 
18- DECF f, d : f registerin içerigini 1 azaltarak sonucu W registere yükler.
 
a)       Eger d = 0 ise W registere yükler.
 
Örnek : DECF KPR,0 : KPR register içerigi H’10’ ise komut sonrasi W register içerigi H’0F’ olur.
 
b)       Eger d = 1 ise f registere yükler.
 
Örnek : DECF KPR,1 : KPR register içerigi H’11’ ise komut sonrasi KPR register içerigi H’10’ olur
 
19- RLF f,d : f registerin içerigini bir sola kaydirarak sonucu W registere veya f registere yükler.
 
                            
 
a)       Eger d = 0 ise W registere yükler.
 
Örnek : RLF MTN,0 : MTN register içerigi B’11001011’ ve C biti (Carry) = 0 ise komut sonrasi            W register içerigi B’10010110’ ve C=1 olur.  MTN register içerigi ise B’11001011’ olarak kalir.
 
b)       Eger d = 1 ise f registere yükler.
 
Örnek : RLF MTN,1 : MTN register içerigi B’11001011’ ve C biti (Carry) = 0 ise komut sonrasi            MTN register içerigi B’10010110’ ve C=1 olur. 
 
20- RRF f,d : f registerin içerigini bir saga kaydirarak sonucu W registere veya f registere yükler.
 
                                
 
a)       Eger d = 0 ise W registere yükler.
 
Örnek : RLF MTN,0 : MTN register içerigi B’11001011’ ve C biti (Carry) = 0 ise komut sonrasi            W register içerigi B’01100101’ ve C=1 olur.  MTN register içerigi ise B’11001011’ olarak kalir.
 
b)       Eger d = 1 ise f registere yükler.
 
Örnek : RLF MTN,1 : MTN register içerigi B’11001011’ ve C biti (Carry) = 0 ise komut sonrasi            MTN register içerigi B’01100101’ ve C=1 olur. 
 
21- COMF f,d : f register içerisindeki sayiyi tersleyerek sonucu W registere veya f registere yükler.
 
a)       Eger d = 0 ise W registere yükler.
 
Örnek : COMF ENG,0 : ENG register içerigi H15’ ise komut sonrasi W register içerigi H’EA’ olur.
 
                                             
 
b)       Eger d = 1 ise f registere yükler.
 
Örnek : COMF ENG,1 : ENG register içerigi H’F5’ ise komut sonrasi ENG register içerigi H’0A’ olur. 
 
                                 
 
22- BCF f, b: f register içindeki sayinin b. bitini sifirlar.
 
Örnek : BCF   PORTB,7 : Komut öncesi PORTB içerigiH’8A’ ise komut sonrasi H’6A‘ olur. 
 
                                
 
23- BSF f,b : f register içindeki sayinin b. bitini 1 yapar.
 
Örnek : BSF   PORTB,5 : Komut öncesi PORTB içerigiH’4B’ ise komut sonrasi H’6A‘ olur. 
 
                                
 
24- BTFSC f,b : f registerin b. bitini test eder. Eger bu bit sifir ise program akisi bir sonraki komutu atlar.
 
Örnek : BTFSC   PORTA,1 : PORTA’nin 1.biti sifir ise siradaki komutu atlayarak bir sonraki komutu uygular. Eger PORTA’nin 1.biti 1 ise siradaki komutu uygular.
 
                            
 
25- BTFSS f,b : f registerin b. bitini test eder. Eger bu bit 1 ise program akisi bir sonraki komutu atlar.
 
Örnek : BTFSS   PORTA,1 : PORTA’nin 1.biti 1 ise siradaki komutu atlayarak bir sonraki komutu uygular. Eger PORTA’nin 1.biti sifir ise siradaki komutu uygular.
 
                             
 
26- DECFSZ f,d : f registerin içerigini 1 azaltir. Eger register içerigi sifir ise bir sonraki komutu atlayarak sonucu W registere veya f registere yükler.
 
a)       Eger d = 0 ise W registere yükler.
 
Örnek : DECFSZ  REG,0 : REG = H’01’ ise, REG-1 = H’00’ olur ve register içerigi sifir oldugundan siradaki komut atlanarak bir sonraki komut isletilir ve sonuç W registerine yazilir.
 
                                
 
b)       Eger d = 1 ise f registere yükler.
 
Örnek : DECFSZ  REG,1 : REG = H’3D’ ise, REG-1 = H’3C’ olur ve register içerigi sifir olmadigindan siradaki komut isletilerek sonuç REG registerine yazilir.
 
                                
 
27- INCFSZ f, d : f registerin içerigini 1 artirir. Eger register içerigi sifir ise bir sonraki komutu atlayarak sonucu W registere veya f registere yükler.
 
a)       Eger d = 0 ise W registere yükler.
 
Örnek : DECFSZ  REG,0 : REG = H’FF’ ise, REG+1 = H’00’ olur ve register içerigi sifir oldugundan siradaki komut atlanarak bir sonraki komut isletilir ve sonuç W registerine yazilir.
 
                                
 
b)       Eger d = 1 ise f registere yükler.
 
Örnek : DECFSZ  REG,1 : REG = H’3D’ ise, REG+1 = H’3E’ olur ve register içerigi sifir olmadigindan siradaki komut isletilerek sonuç REG registerine yazilir.
 
                                            
28- GOTO k : Program akisi k adresine dallanir.
 
Örnek : GOTO   DONGU : Program akisi GOTO komutu ile siradaki komutlari atlayarak DONGU etiketine dallanir.
 
                                                
 
29- CALL k : Program akisi k etiketinin bulundugu alt programa dallanir. Bu komut alt programlara dallanmak amaciyla kullanilir.
 
Örnek : CALL   TIMER : Program akisi CALL komutuna geldiginde devamindaki komutlari atlayarak TIMER etiketine dallanir.
 
                                                                
 
30- RETURN : Program akisini ana programa döndürür. Program akisi CALL komutu ile alt programa yönlendirildiginde, alt programin sonuna yazilan RETURN komutu ana programa dönmeyi saglar. Ana program kaldigi yerden devam eder.
 
Örnek : RETURN :
 
                                                            
31- RETLW k : Program akisini RETURN komutunda oldugu gibi ana programa döndürür ancak ana programa dönüs esnasinda W registerine k sabitini yükler.
 
Örnek : RETLW  :
 
                                                        
 
32- RETFIE : Program akisini Interrupt (kesme) alt programindan ana programa döndürür.
 
33- NOP : Zaman geciktirme islemi için kullanilir ve bir komut saykili süresince hiçbir islem yapmaz.
 
34- CLRWDT : Watchdog Timer’i sifirlar.
 
35- SLEEP : Mikrodenetleyiciyi uyuma moduna geçirir.
 
 
ASSEMBLER KOMUT DIREKTIFLERI   
 
Assemler kontrol direktifleri, programin isletilmesinde etkisi olmayan program akisinda zaman kazanmak, kaynak kodunu kontrol etmek ve direktif vermek için istege bagli kullanilan komutlardir. Bu komutlardan sik kullanilan belli baslilari asagida verilmistir. 
 
DEFINE : Bir komut ve degisken dizininin program içerisinde birden fazla kullanilmasi durumunda tek bir isimle ifade edilmesini
                 saglar.
 
Örnek : #DEFINE   BUTON   PORTA,1 
 
        Örnekte BUTON, PORTA’nin 1. biti olarak tanimlanmistir. Bu komut ile programin ilerleyen bölümünde PORTA’nin 1. biti ile ilgili islemlerde direkt olarak BUTON ismi kullanilabilir. Böylece           BSF  BUTON gibi bir komut satiri yazilabilir. Eger DEFINE komutu kullanilmaz ise ayni komut satirini       BSF PORTA,1 olarak yazmak gerekir. Ayni komutun program içerisinde birden fazla kullanilmasi durumunda DEFINE komutu program yazimini sadelestirir.
 
INCLUDE : Microchip firmasi her PIC mikrodenetleyicisi için kullanilmak üzere “Header file-Baslik dosyalari” denilen dosyalar düzenlemistir. Bu dosyalar araciligiyla PIC’in RAM bellegindeki özel register adreslerinin program yazimi asamasinda bir çok defa girilmesi zorunlulugu ortadan kalkmistir. Bunun yerine INCLUDE komutu kullanarak register adresleri otomatik olarak atanabilir. INCLUDE komutu çift tirnak içerisinde yer alan bir dosya ismi olarak tanimlandiginda PIC için hazirlanmis sistem dosyalarini, eger parantez seklinde tanimlanmis ise kullanicinin sonradan gelistirdigi dosyalari içerir.
 
Örnek : INCLUDE   “ PIC16F84.INC”  veya   INCLUDE 
 
ORG : Programin PIC belleginde depolandigi adresi tanimlar. Böylece programin hangi adresten baslayacagi veya kesme alt programlarinin baslangiç adresleri belirlenebilir.
 
Örnek : ORG   0x00  : Programi 0x00 adresinden baslatir. 
 
IF, ELSE, ENDIF : Bu komutlar kosullu program dallanmasi islemini yapar ve sonlandirirlar.
 
Örnek : Asagidaki program komut satirlarinda IF ile DONGU 3,’den küçük ise BASLA etiketine, degil ise ELSE komutu ile DONGU etiketine dallanmalar yapilmistir. ENDIF komutu ile kosullu dallanma sonlandirilmistir.        
          
                                                   IF            DONGU< 3 
                                                   GOTO    BASLA
                                                   ELSE     
                                                   GOTO    DONGU
                                                   ENDIF
 
EQU : PIC bellek adreslerine atama yapmak için kullanilan etiket olarak isimlendirilen komuttur.
 
Örnek :  Asagidaki komut satiri status registerinin PIC belleginde H’03’ adresinde oldugunu tanimlar.
 
                                                              STATUS   EQU  H’03’   
 
CONFIG : PIC kontrolünde osilatör tipi, Watchdog Timer, Power on Reset gibi kosullarin belirlenmesini saglayan komuttur. Bu komut satirindaki degiskenler PIC uygulama devresinin donanim özellikleri ve program içerigine bagli olarak degisirler. CONFIG komutunun önünde iki alt çizgi bulunur, diger degiskenlerin ise önlerinde birer alt çizgi ve aralarinda birer bosluk ile & sembolü bulunur.
 
Örnek :  __CONFIG   _CP_OFF &_WDT_OFF &_PWRTE_ON &_XT_OSC
 
        Konfigürasyon satirinda PIC programlamada kullanilan kosullar asagida verilmistir. Code Protect (CP) komutlari PIC entegresinin programlanmasinin ardindan içerisindeki yazilimin okunarak kopyalanmasini önlemek için kullanilir. Watchdog Timer programi belirli zaman araliklarinda basa döndürür. Power on Reset, PIC’e enerji verilme durumunu (On/Off) kontrol eder.
_CP_ON : Kod koruma açik.
_CP_OFF : Kod koruma kapali.
_WDT_ON : Watchdog Timer açik.
_WDT_OFF : Watchdog Timer kapali.
_PWRTE_ON : Power on reset açik.
_PWRTE_OFF : Power on reset kapali.
_XT_OSC : Kristal osilatör.
_RC_OSC : RC osilatör.
_LP_OSC: Low Power osilatör.
_HS_OSC : High Speed osilatör.

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)