xc8 user guide da asm kodlarını şu şekilde c içinde kullanabileceğimiz yazıyor
#asm
MOVE r0,#00h
#endasm
xc8 e yazdığımda syntax error veriyor. acaba asm yi etkinleştirmek için bir ayar mı yapıyoruz. çünkü keil de öyle birşey vardı.
MOVE diye bir komut yok ki. Komutlarin PIC asm diliyle uyumlu olması gerekiyor.
oraya yanlış yazmışım kusura bakmayın MOVE yazıyordu baktığım pdf te. programı yazarken pic in komut setinden bakıp da yazdım. birkaçını denedim olmadı kullandığım RLF komut idi. şu an telefondan yazdığım için kod penceresine yazamadım tüm kodları kusura bakmayın. çalışmayan kod parçası şu şekilde
#asm
RLF PORTB,d
#endasm
mesaj birleştirme:: 03 Ağustos 2015, 11:31:40
Sorunu buldum galiba. asm kodu olarak sadece NOP yazarsam çalışıyor. PORTB yazarsam bu ifadeyi algılamıyor. sanırım kullandığım picin header dosyasını include etmediğimden.
mesaj birleştirme:: 03 Ağustos 2015, 11:42:52
Sorunun header dosyasında olduğuna karar verdim. ancak
#include <pic16F84.h>
yazdığımda cannot find include file şeklinde hata veriyor. xc8 de bu pic lerin header dosyaları yok mu? Ya da sorun başka mı?
asm("NOP"); gibi " " içerisine asm kodu yazıp denermisin.
C:\Program Files\Microchip\xc8\v1.33\include
dosyasında, pic16f84.inc ve pic16f84.h var.
MpLAB 8.91 (ASM için) vs. deki gibi yazdığın şekilde kullanmak istiyorsan
C:\Program Files\Microchip\MPASM Suite
dosyasında, p16f84.inc var.
mesaj birleştirme:: 03 Ağustos 2015, 00:02:14
Biraz önce denedim sorunsuz derleniyor
altdaki program:
/*
* File: c_de_asm.c
* Author: RaMu
*
* Created on 02 A?ustos 2015 Pazar, 23:41
*/
#include <stdio.h>
#include <stdlib.h>
//asm için include
//#include "pic16f84.h" //böylede yazılabilir
////#include <pic16f84.h> //böylede yazılabilir
//hatta
#include "C:\Program Files\Microchip\xc8\v1.33\include\pic16f84.h"
//şeklindede yazılabilir
//asm için include son
/*
*
*/
int main(int argc, char** argv) {
while(1)
{
#asm
_asm
BSF 0x06,1 //#include "pic16f84.h" kullanılmazsa, register adresi yazılmak zorunda
BCF PORTB,1
_endasm
#endasm
}
return (EXIT_SUCCESS);
}
#asm
_asm
// asm kodları
_endasm
#endasm
şeklinde yazınca pic in header dosyasını eklemeden de kabul ediyor.
teşekkürler
@RaMu ve
@kantirici