XC8 ile asm program yazma


Microchip firması MPLAB IDE programlarını ilk çıkardığında 8-bit mikrodenetleyicilerinin 16F serileri için C derleyici desteği vermiyordu. Oysa çoğu elektronikçi 16F84, 16F628 ve 16F877 ile assembly kod yazarak tanışmış seviyeleri artınca C derleyicisine geçmek istemişlerdi. Ve bu programlayıcılar Microchip dışında bu işi yapan Thirdparty yazılımları Hi-tech, CCS, IAR vs.. kullanmaya başladılar. Microchip piyasadaki diğer rakipleri ile mücadelede yarışırken kendi mikrodenetleyicilerinde 18F serisi ile karşılaştırılmasını istediği için bu desteği vermemiş olabilir. Ancak daha sonra bu kararını Avusturyalı Hitech firmasını satın alarak bozduğunuda varsayabiliriz. Önceleri Hi-tech PICC ayrı bir derleyici programmış gibi devam ederken daha sonra ortadan kaybolup XC serisine dönüştü.



Assembly ile kod yazanların kullandıkları MPASM MPLAB ile devam ederken MPLABX içerinde artık yer almamaya başladı. Peki MPLABX kullanmak ve assembly kod yazmak istiyorsak ne yapabiliriz.

Yakın bir cözüm var, ancak eski programlama tekniklerimizde de biraz değişiklikler bizden isteyecek. Bu yazıda buna örnek vermek istiyorum. Daha fazla tecrübesi olan arkadaşlar varsa iletişim linki üzerinden bizlere mesaj gönderirlerse sevinirim.

Öncelikle XC8 programının şu an için güncel versiyonu olan MPLAB XC8  C-Compiler v2.41 sürümünü indirip programını bize önerdiği dizini değiştirmeden kuralım. Program

C:\Program Files\Microchip\xc8 dizinine kurulduğunu göreceksiniz. 

Peki assembly derleyicisi nerede?

C:\Program Files\Microchip\xc8\v2.41\pic-as\bin dizininde bulunan 421 KB lık pic-as.exe dosyası

Derlemeyi nasıl yapacağız?

Öncelikle buraya bir asm dosyası ilave edelim. Örneğin PIC16F628A için PORTB deki LEDleri yakan program.

list p=16f628A

org     0x00

status equ   03h

portb equ      06h

trisb equ     86h

rp0 equ     05h

bsf status,rp0 ;Bank1'e geç

clrf trisb ;PORTB'nin tüm pinlerini çıkış yap

bcf status,rp0 ;Bank0'a geri dön

movlw 0xAA ;LED'lerin yanmasını

movwf portb ;'10101010' olarak belirle 

END

 

Son satırdan sonra enter tuşuna basmayı unutmayın.

Programı test.asm olarak ilgili dizine kaydedelim.  Cmd komutu ile ilgili satıra geçelim ve aşağıdaki komutu yazalım.

(C:\Program Files\Microchip\xc8\v2.41\pic-as\bin>  dizindeyiz)



pic-as -mcpu=PIC16F628A -c  -o test.o test.asm


program çıktısında hata yoksa ekranda mesaj gözükmeyecektir. Hata varsa yazımdan kaynaklanıyorsa düzeltelim.  Daha sonra


pic-as -mcpu=PIC16F84A   test.o -o test.hex



yazıp, enter tuşuna bastığımızda

 

C:\Program Files\Microchip\xc8\v2.41\pic-as\bin>pic-as -mcpu=PIC16F84A   test.o -o test.hex

::: warning: (528) no start record; entry point defaults to zero

 

Memory Summary:

    Program space        used     0h (     0) of   400h words   (  0.0%)

    Data space           used     0h (     0) of    44h bytes   (  0.0%)

    EEPROM space         used     0h (     0) of    40h bytes   (  0.0%)

    Configuration bits   used     0h (     0) of     1h word    (  0.0%)

    ID Location space    used     0h (     0) of     4h bytes   (  0.0%)

    Extra sections       used     7h (     7)

 

Hex dosyamız oluşmuş olacaktır.

Bu işlemleri yaparken karşılaşacağımız hatalar için Microchip  firmasının online

MPLAB® XC8 C Compiler User’s Guide for PIC® MCU dökümanlarını inceleyebilir ya da  MPLAB® XC8 PIC® Assembler User's Guide indirebilirsiniz

İyi çalışmalar..

 

  • Mar 28, 2023
  • Yorumlar: 0
Yorumlar: 0

Henüz yorum yapılmamış

Yanıtla

E-posta adresiniz yayınlanmaz. Zorunlu alanlar işaretlidir.*