Hi Tech C de 0x1000 bölgesine kod yazmak

Başlatan XX_CİHAN_XX, 20 Eylül 2009, 13:02:27

XX_CİHAN_XX

Tüm PicProje ailesinin bayramı kutlu olsun.

HiTech C pic16 serisinde
ORG 0x1000 den sonrasına asm veya C olarak farketmez kod yazıp ana programdan buraya zıplayarak kodları çalıştırdıktan sonra tekrar ana programa dönüş yapmak istiyorum.
Yine Linker a PSECT direktifi ile birşeyler yapmam gerekiyor sanırım.
Daha önce böyle bir çalışma yapan oldu mu acaba ?
Manueli kurcalayıp birşeyler denedim ama genelde syntax error vb hatalarla karşılaşıyorum.  :roll:
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

XX_CİHAN_XX

Ciddi araştırma ve denemelerden sonra olayı çözdüm.

void LoadBuff (void)
{
	asm("goto	0x100");	
#asm
	PSECT GET_DATA, abs, ovrld, class=CODE, delta=2
	ORG		0x100
GET_DATA
	pagesel	0x1000
	CALL	0x00
#endasm
}

void main (void)
{
	LoadBuff();     //ORG 0x1000 deki fonksiyonu çalıştır.
}

//////////////////////   ORG    0x1000   BÖLGESİ   //////////////////
#asm
	PSECT DATA_TABLE,abs,ovrld,class=CODE,delta=2
	org 0x1000
DATA_TABLE


//              İŞLETİLECEK OLAN KODLAR BURAYA YAZILIR


	PAGESEL		0x00       //Ana programa geri dön
	RETURN
#endasm


Program gayet güzel çalışıyor. Tabi ASM çalışmak gerekiyor oda problem değil ;)
Bu arada HiTech te şu PSECT direktifi yokmu yedi bitirdi beni resmen bir derya :)
Tekrar iyi bayramlar herkese:)
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.