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..
E-posta adresiniz yayınlanmaz. Zorunlu alanlar işaretlidir.*
Henüz yorum yapılmamış