Makroyu değişken ile tanımlamak ?

Başlatan camby, 19 Nisan 2012, 00:05:35

camby

Makro şu şekilde kullanılıyor sorun yok :

Bank_Doldur_M	.6,.255,.1


Ben bu değerleri sabit ( literal ) değil de değişken olarak kullanmak istiyorum. Değişken d1'de olsun öncesinde ve sonrasında incf , decfsz gibi işlemler yapıp döngüye sokmalıyım.

Makro yapısı değişken kabul ediyor mu ?

Şu şekilde olabilir :

Bank_Doldur_M	d1,d2,d3


Ortam : 18f , ASM , MPLAB

Tagli

Değişken kullanabilirsin. Ama yanlış hatırlamıyorsam, kullandığın değişkenler 4 byte olarak kabul ediliyordu. Bunlar elbette hafızada yer kaplayan şeyler değil, sonuçta assemble işleminden önce koda dönüşüyorlar. Ama örneğin makro argümanı olarak "12345" yazamazsın. Ama h'87654321' yazabilirsin.

Ben bir şifreli kilit uygulamasında, şifreleri hafızada BCD olarka saklamıştım ve bunları hafızaya yerleştirecek (tablo yapmak için) dt kodlarını kolaylık olsun diye makro ile oluşturmuştum. Zaten makrolarla ilgili deneyimim yok sayılır. Şu ana kadar makro kullanmış olduğum ilk ve tek uygulama o oldu.

Makro şöyle idi:
yerlestir	MACRO	sifre	;4 byte'lık şifreyi program hafızasına yerleştirir
	
	local i = 4
	while (i != 0)
		dt sifre >> (8*(i-1)) & h'FF'
		i -= 1
	endw
	endm


Programda şu şekilde çağırıyordum:
org	h'1FC'
HANE_AL	
	pageselw	h'200'	;PCLATH ayarlanıyor
	movf	sayac,W	;Atlama değeri W'ye yüklendi
	addwf	PCL,F	;PC değiştirilerek atlama yapılıyor
	errorlevel	-207
	yerlestir	h'55552222'	;Tagli
	yerlestir	h'87654321'	;Misafir
	errorlevel	+207


207'nin ne hatası olduğunu hatırlamıyorum, programı yazalı baya oldu.
Gökçe Tağlıoğlu