Bir PIC16F84 programlamak için gerekli PIC Asembly komutları:

+ Yorum Gönder
Elektronik ve Elektronik Bölümü Bölümünden Bir PIC16F84 programlamak için gerekli PIC Asembly komutları: ile ilgili Kısaca Bilgi
  1. 1
    Uyducu
    Üye
    Reklam

    Bir PIC16F84 programlamak için gerekli PIC Asembly komutları:

    Reklam



    Bir PIC16F84 programlamak için gerekli PIC Asembly komutları:

    Forum Alev
    PIC Komutları

    PIC meraklılarını uzunca bir süre beklettim. Yoğun bir çalışma temposunun ardından (henüz bitmemiş olsa da) bir şeyler hazırlamak için vakit bulabildim.
    Artık pic programlamaya hazırlanacağız. Pic programlamak için assembly, basic, C dilleri geliştirilmiştir. Biz ücretsiz olması nedeniyle pic assembly dili üzerinde duracağız ve MPLab yazılım geliştirme ortamını tanıyacağız. Daha önce de belirttiğimiz gibi PIC ailesinden PIC16F84 mikro denetleyicisinin 35 adet assembly komutu vardır. Şimdi bu komutlara, biraz detaylı olarak göz atalım.




    ADDLW Literal ile W'yu topla
    Yazılış : ADDLW k
    İşleçler: 0 £ k £ 255
    İşlem: (W) + k → (W)
    Etkilenen Yazmaçlar : C, DC, Z
    Kodlama : 11 111x kkkk kkkk
    Tanım : W yazmacının içeriği sekiz bitlik k literali ile toplanır, sonuc W yazmacına yerleştirilir.
    Word: 1
    Saat Çevrimi (Cycle) : 1
    Q çevrimi (Q Cycle Activity) :
    Q1Q2Q3Q4Kod çöz"k" literalini okuİşlemi yapW'ye yaz
    Örnek : ADDLW 0x15
    İşlemden önce W = 0x10
    İşlemden sonra W = 0x25




    ADDWF W ve f'i Topla
    Yazılış : ADDWF f,d
    İşleçler: 0 £ f £ 127, d Î [0,1]
    İşlem: (W) + (f) → (destination)
    Etkilenen Yazmaçlar : C, DC, Z
    Kodlama : 00 0111 dfff ffff
    Tanım : W yazmacının içeriğiyle "f" yazmacının içeriğini topla. Eğer "d" 0 ise sonucu W 'ye, 1 ise "f" yazmacına yaz.
    Word: 1
    Saat Çevrimi (Cycle) : 1
    Q çevrimi (Q Cycle Activity) :
    Q1Q2Q3Q4Kod çöz"f" yazmacını okuİşlemi yapSanucu hedefe yaz
    Örnek : ADDWF FSR, 0
    İşlemden önce W = 0x17 FSR = 0xC2
    İşlemden sonra W =0xD9 FSR = 0xC2




    ANDLW Literal ile W'yi mantıksal VE
    Yazılış : ANDLW k
    İşleçler: 0 £ k £ 255
    İşlem: (W) .AND. (k) → (W)
    Etkilenen Yazmaçlar : Z
    Kodlama : 11 1001 kkkk kkkk
    Tanım : W yazmacı ile sekiz bitlik "k" literaline VE işlemi uygulanır. Sonuç W'ye yazılır.
    Word: 1
    Saat Çevrimi (Cycle) : 1
    Q çevrimi (Q Cycle Activity) :
    Q1Q2Q3Q4Kod çöz"k" literalini okuİşlemi yapW'ye yaz
    Örnek : ANDLW 0x5F
    İşlemden önce W =0xA3
    İşlemden sonra W = 0x03




    ANDWF W ile "f"'e mantıksal VE işlemi uygula
    Yazılış : ANDWF f,d
    İşleçler: 0 £ f £ 127, d Î [0,1]
    İşlem: (W) .AND. (f) → (destination)
    Etkilenen Yazmaçlar : Z
    Kodlama : 00 0101 dfff ffff
    Tanım : W yazmacı ile "f" yazmacına VE işlemi uygula. Eğer "d" 0 ise sonucu W 'ye, 1 ise "f" yazmacına yaz.
    Word: 1
    Saat Çevrimi (Cycle) : 1
    Q çevrimi (Q Cycle Activity) :
    Q1Q2Q3Q4Kod çöz"f" yazmacını okuİşlemi yapSonucu yaz
    Örnek : ANDWF FSR, 1
    İşlemden önce W = 0x17, FSR = 0xC2
    İşlemden sonra W = 0x17, FSR = 0x02




    BCF f'in bir bitini sil (sıfırla)
    Yazılış : BCF f,b
    İşleçler: 0 £ f £ 127, 0 £ b £ 7
    İşlem: 0 → (f[b])
    Etkilenen Yazmaçlar : yok
    Kodlama : 01 00bb bfff ffff
    Tanım : "f" yazmacının "b" biti sıfırlanır.
    Word: 1
    Saat Çevrimi (Cycle) : 1
    Q çevrimi (Q Cycle Activity) :
    Q1Q2Q3Q4Kod çöz"f" yazmacını okuİşlemi yap"f" yazmacına yaz
    Örnek : BCF FLAG_REG, 7
    İşlemden önce FLAG_REG = 0xC7
    İşlemden sonra FLAG_REG = 0x47




    BSF f'in bir bitini kur (1 yap)
    Yazılış : BSF f,b
    İşleçler: 0 £ f £ 127, 0 £ b £ 7
    İşlem: 1 -rarr; (f[b])
    Etkilenen Yazmaçlar : Yok
    Kodlama : 01 01bb bfff ffff
    Tanım : "f" yazmacının "b" biti 1 yapılır.
    Word: 1
    Saat Çevrimi (Cycle) : 1
    Q çevrimi (Q Cycle Activity) :
    Q1Q2Q3Q4Kod çöz"f" yazmacını okuİşlemi yap"f" yazmacına yaz
    Örnek : BSF FLAG_REG, 7
    İşlemden önce FLAG_REG = 0x0A
    İşlemden sonra FLAG_REG = 0x8A




    BTFSC "f" yazmacının "b" bitini kontrol et, 0 ise atla
    Yazılış : BTFSC f,b
    İşleçler: 0 £ f £ 127, 0 £ b £ 7
    İşlem: eğer (f[b]) = 0 ise bir sonraki komutu atla
    Etkilenen Yazmaçlar : Yok
    Kodlama : 01 10bb bfff ffff
    Tanım : Eğer "f" yazmacının "b" biti 1 ise sıradaki komut işletilir, 0 ise bir sonraki komut atlanır ve yerine NOP işletilir ve 2 çevrimli komut olur.
    Word: 1
    Saat Çevrimi (Cycle) : 1 (2)
    Q çevrimi (Q Cycle Activity) :
    Q1Q2Q3Q4Kod çöz"f" yazmacını okuİşlemi yapİşlem yapılmaz
    Eğer atlama yapılmışsa 2. çevrimde ;
    Q1Q2Q3Q4İşlem yapılmazİşlem yapılmazİşlem yapılmazİşlem yapılmaz




    BTFSS "f" yazmacının "b" bitini kontrol et, 1 ise atla
    Yazılış : BTFSS f,b
    İşleçler: 0 £ f £ 127, 0 £ b £ 7
    İşlem: eğer (f[b]) = 1 ise bir sonraki komutu atla
    Etkilenen Yazmaçlar : Yok
    Kodlama : 01 11bb bfff ffff
    Tanım : Eğer "f" yazmacının "b" biti 0 ise sıradaki komut işletilir, 1 ise bir sonraki komut atlanır ve yerine NOP işletilir ve 2 çevrimli komut olur.
    Word: 1
    Saat Çevrimi (Cycle) : 1 (2)
    Q çevrimi (Q Cycle Activity) :
    Q1Q2Q3Q4Kod çöz"f" yazmacını okuİşlemi yapİşlem yapılmaz
    Eğer atlama yapılmışsa 2. çevrimde ;
    Q1Q2Q3Q4İşlem yapılmazİşlem yapılmazİşlem yapılmazİşlem yapılmaz




    CALL Altrutin çağır
    Yazılış : CALL k
    İşleçler: 0 £ k £ 2047
    İşlem: (PC)+ 1 → TOS, k → PC<10:0>, (PCLATH<4:3>) ® PC<12:11>
    Etkilenen Yazmaçlar : Yok
    Kodlama : 10 0kkk kkkk kkkk
    Tanım : Bir altrutin çağırır. Önce dönüş adresi (PC+1) yığın (stack) hafızaya kaydedilir. 11 bitlik adres PC<10:0>'a yüklenir. PC'nin üst bitleri PCLATCH'den yüklenir. CALL 2 çevrimlik bir komuttur.
    Word: 1
    Saat Çevrimi (Cycle) : 2
    Q çevrimi (Q Cycle Activity) :
    1. çevrim;
    Q1Q2Q3Q4Kod çöz"k" literalini oku
    PC'yi yığına kaydetVeriyi işlePC'ye yaz
    2. çevrim;
    Q1Q2Q3Q4İşlem yapılmazİşlem yapılmazİşlem yapılmazİşlem yapılmaz




    CLRF f'in içeriğini temizle (0 yap)
    Yazılış : CLRF f
    İşleçler: 0 £ f £ 127
    İşlem: 00h → (f), 1 → Z
    Etkilenen Yazmaçlar : Z
    Kodlama : 00 0001 1fff ffff
    Tanım : "f" yazmacının içeriği temizlenir(0) ve "Z" biti kurulur(1).
    Word: 1
    Saat Çevrimi (Cycle) : 1
    Q çevrimi (Q Cycle Activity) :
    Q1Q2Q3Q4Kod çöz"f" yazmacını okuVeriyi işle"f" yazmacına yaz
    Örnek : CLRWDT
    İşlemden önce WDT counter = ?
    İşlemden sonra WDT counter = 0x00,
    WDT prescaler= 0, TO =1, PD =1




    COMF "f" in tümleyenini al
    Yazılış : COMF f,d
    İşleçler: 0 £ f £ 127, d Î [0,1]
    İşlem: (f) → (destination)
    Etkilenen Yazmaçlar : Z
    Kodlama : 00 1001 dfff ffff
    Tanım : "f" yazmacının içeriğinin tümleyeni alınır. Eğer d 0 ise, sonuc "w", 1 ise "f" yazmacına yazılır.
    Word: 1
    Saat Çevrimi (Cycle) : 1
    Q çevrimi (Q Cycle Activity) :
    Q1Q2Q3Q4Kod çöz"f" yazmacını okuVeriyi işleHedefe yaz
    Örnek : COMF REG1,0
    İşlemden önce REG1 = 0x13
    İşlemden sonra REG1 = 0x13




    DECF "f" yazmacının içeriğini 1 azalt
    Yazılış : DECF f,d
    İşleçler: 0 £ f £ 127, d Î [0,1]
    İşlem: (f) - 1 → (destination)
    Etkilenen Yazmaçlar : Z
    Kodlama : 00 0011 dfff ffff
    Tanım : "f" yazmacının içeriğini bir(1) azalt. Eğer d 0 ise, sonuc "w", 1 ise "f" yazmacına yazılır.
    Word: 1
    Saat Çevrimi (Cycle) : 1
    Q çevrimi (Q Cycle Activity) :
    Q1Q2Q3Q4Kod çöz"f" yazmacını okuVeriyi işleHedefe yaz
    Örnek : DECF CNT, 1
    İşlemden önce CNT = 0x01, Z =0
    İşlemden sonra CNT = 0x00, Z =1



  2. 2
    Uyducu
    Üye

    --->: Bir PIC16F84 programlamak için gerekli PIC Asembly komutları:

    Reklam



    PIC Komutları 2

    GOTO Koşulsuz Dallanma
    Yazılış : GOTO k
    İşleçler: 0 £ k £ 2047
    İşlem: k ® PC<10:0> PCLATH<4:3> ® PC<12:11> d Î [0,1]
    Etkilenen Yazmaçlar : YOK
    Kodlama : 10 1kkk kkkk kkkk
    Tanım : GOTO koşulsuz dallanma komutudur. İlk 11 bit PC<10:0>' ye yüklenir. Yüksek bitler PCLATH<4:3>' yüklenir. GOTO iki çevrimlik komuttur.
    Word: 1
    Saat Çevrimi (Cycle) : 2
    Q çevrimi (Q Cycle Activity) :
    Q1Q2Q3Q4Kod çöz"k" literalini okuİşlemi yapPC'ye yazİşlem Yapmaİşlem Yapmaİşlem Yapmaİşlem Yapma

    Örnek : GOTO adres
    İşlemden önce PC =
    İşlemden sonra PC = adres




    INCF f'yi bir artır
    Yazılış : INCF f,d
    İşleçler: 0 £ f £ 127, d Î [0,1]
    İşlem: (f) + 1 ® (destination)
    Etkilenen Yazmaçlar : Z
    Kodlama : 00 1010 dfff ffff
    Tanım : "f" yazmacının içeriğini 1 artır. Eğer "d" 0 ise sonucu W 'ye, 1 ise "f" yazmacına yaz.
    Word: 1
    Saat Çevrimi (Cycle) : 1
    Q çevrimi (Q Cycle Activity) :
    Q1Q2Q3Q4Kod çöz"f" yazmacını okuİşlemi yapSonucu hedefe yaz
    Örnek : INCF CNT, 1
    İşlemden önce CNT = 0xFF, Z = 0
    İşlemden sonra CNT = 0x00, Z = 1




    INCFSZ f'yi bir artır, sonuç 0 ise atla.
    Yazılış : INCFSZ f,d
    İşleçler: 0 £ f £ 127, d Î [0,1]
    İşlem: (f) + 1 ® (destination)
    Etkilenen Yazmaçlar : Yok
    Kodlama : 00 1111 dfff ffff
    Tanım : "f" yazmacının içeriğini eğer sonuç 0 değilse 1 artır, yoksa komutu atla. Eğer "d" 0 ise sonucu W 'ye, 1 ise "f" yazmacına yaz.
    Word: 1
    Saat Çevrimi (Cycle) : 1 (2 Eğer atlama yapılırsa)
    Q çevrimi (Q Cycle Activity) :
    Q1Q2Q3Q4Kod çöz"f" yazmacını okuİşlemi yapSonucu hedefe yaz
    Q(2) çevrimi (Q Cycle Activity) : (Eğer sonuç "0" ise)
    Q1Q2Q3Q4İşlem Yapmaİşlem Yapmaİşlem Yapmaİşlem Yapma
    Örnek : INCF CNT, 1
    İşlemden önce CNT = 0xFF, Z = 0
    İşlemden sonra CNT = 0x00, Z = 1




    IORLW W ile "k"' ile mantıksal VEYA işlemi uygula
    Yazılış : IORLW k
    İşleçler: 0 £ f £ 127, d Î [0,1]
    İşlem: (W) .OR. (f) ® (destination)
    Etkilenen Yazmaçlar : Z
    Kodlama : 00 0100 dfff ffff
    Tanım : W yazmacı ile "f" yazmacına VEYA işlemi uygula. Sonucu W 'ye yaz.
    Word: 1
    Saat Çevrimi (Cycle) : 1
    Q çevrimi (Q Cycle Activity) :
    Q1Q2Q3Q4Kod çöz"k" literalini okuİşlemi yapSonucu yaz
    Örnek : IORLW 0x35
    İşlemden önce W = 0x9A, Z = 0
    İşlemden sonra W = 0xBF, Z = 1




    IORWF W ile "f"' ile mantıksal VEYA işlemi uygula
    Yazılış : IORWF f,d
    İşleçler: 0 £ k £ 255
    İşlem: (W) .OR. k ® (W)
    Etkilenen Yazmaçlar : Z
    Kodlama : 11 1000 kkkk kkkk
    Tanım : W yazmacı ile "k" literaline VEYA işlemi uygula. Eğer "d" 0 ise sonucu W 'ye, 1 ise "f" yazmacına yaz.
    Word: 1
    Saat Çevrimi (Cycle) : 1
    Q çevrimi (Q Cycle Activity) :
    Q1Q2Q3Q4Kod çöz"f" yazmacını okuİşlemi yapSonucu yaz
    Örnek : IORWF 0x35,0
    İşlemden önce W = 0x9A, Z = 0
    İşlemden sonra W = 0xBF, Z = 1




    MOVF "f" yazmacını içeriğini taşı
    Yazılış : MOVF f,d
    İşleçler: 0 £ f £ 127, d Î [0,1] < BR > İşlem: (f) ® (destination)
    Etkilenen Yazmaçlar : Z
    Kodlama : 00 1000 dfff ffff
    Tanım : "f" yazmacının içeriğini hedefe taşı.Hedef "d"'ye bağlıdır. Eğer "d" 0 ise sonucu W 'ye, 1 ise "f" yazmacına taşır.
    Word: 1
    Saat Çevrimi (Cycle) : 1
    Q çevrimi (Q Cycle Activity) :
    Q1Q2Q3Q4Kod çöz"f" yazmacını okuİşlemi yapHedefe Yaz
    Örnek : MOVF FSR, 0
    İşlemden sonra W = FSR'deki değer, Z = 1




    MOVLW "k" literalini W'ya taşı
    Yazılış : MOVLW k
    İşleçler: 0 £ k £ 255
    İşlem: k ® W
    Etkilenen Yazmaçlar : Yok
    Kodlama : 11 00xx kkkk kkkk
    Tanım : Sekiz bitlik "k" literali "W" yazmacına yüklenir.
    Word: 1
    Saat Çevrimi (Cycle) : 1
    Q çevrimi (Q Cycle Activity) :
    Q1Q2Q3Q4Kod çöz"k" literalini okuİşlemi yap"W"yazmacına Yaz
    Örnek : MOVLW 0x5A
    İşlemden Sonra W = 0x5A




    MOVWF W yazmacının içeriğini "f"e taşı
    Yazılış : MOVWF f
    İşleçler: 0 £ f £ 127 < BR > İşlem: (W) ® (f)
    Etkilenen Yazmaçlar : Yok
    Kodlama : 00 0000 1fff ffff
    Tanım : "W" yazmacının içeriğini "W" yazmacına taşı.
    Word: 1
    Saat Çevrimi (Cycle) : 1
    Q çevrimi (Q Cycle Activity) :
    Q1Q2Q3Q4Kod çöz"W" yazmacını okuİşlemi yapHedefe Yaz
    Örnek : MOVWF OPTION_REG
    İşlemden Önce :
    OPTION = 0xFF W = 0x4F
    İşlemden Sonra :
    OPTION = 0x4F W = 0x4F







  3. 3
    net_37
    Yeni Üye
    pıc le henüz yeni tanışıyorum bu açıklamalı komutlar ilaç gibi geldi teşekkür ederim devamını rica ederim







  4. 4
    enes0678
    Yeni Üye
    güzel bir çalışama teeşekkürler...

  5. 5
    dwtthunder
    Yeni Üye
    cok sagol arkadasim bizim gib picle yeni tanisanlara guzel bi firsat

  6. 6
    karahilal
    Yeni Üye
    Teşekkürler Ellerine Sağlık Devamını Bekleriz

+ Yorum Gönder
5 üzerinden | Toplam : 0 kişi