Değişken Tanımlama Sorunu

Başlatan protech06, 04 Eylül 2007, 01:23:04

protech06

Programda değişken tanımlarken her bir pini ayrı bir değişkene tanımlayarak  çıkış olarak asagıdaki gibi kullanıyorum

#DEFINE      CIKIS1      PORTB,0              
#DEFINE      CIKIS2      PORTB,1              
#DEFINE      CIKIS3      PORTB,2

Normalde Çıkısları aktif - pasif içinde BSF CIKIS1 , BCF CIKIS1 seklinde kullanıyorum. her bir pini bir ayrı bir değişkene tanımlayarak bu sekilde yapıyoruz.
   Yapmak istediğim tek bir değişkene birden fazla pini çıkış olarak tanımlamak

CIKIS1 = PORTB,0  , PORTB,1 ,PORTB,2  seklinde kullanmak istiyorum yani

  BSF CIKIS1 oldugunda PORTB,0  , PORTB,1 ,PORTB,2 3 pin aynı anda 1 olmalı

Tek bir değişkende birden fazla pini nasıl tanımlayabilirim _?

lordtorm

asm ile yapabilirsin cıkıs1'in içine 01110000 gibi bir deger atayıp bunu portb ye gondererek istedigin pini set yapabilirsin
bırakayım diyorum bu işleri

arslan74

Merhaba

Macrolari bir dene istersen;

CIKIS_AC   macro

     BSF PORTB,0
     BSF PORTB,1
     BSF PORTB,2
     BSF PORTB,3

        endm

CIKIS_KAPA   macro

     BCF PORTB,0
     BCF PORTB,1
     BCF PORTB,2
     BCF PORTB,3

        endm




O zaman sadece

CIKIS_AC


veya

CIKIS_KAPA


yazman yetecek.


SELAMLAR

yalnayak

ben macro kullanmayi atamayi bilmiyorum.ogrenmekte cok yarar var ama ben ogreninceye kadar;

CIKIS_AC      EQU  67
CIKIS_KAPA   EQU  68

MOVLW     B'00001111';CIKISLARIN ACILACAGI YERLER
MOVWF     CIKIS_AC

MOVLW     B'00000000';CIKISLARIN KAPANACAGI YERLER
MOVWF     CIKIS_KAPA;

;**********************************
;PROGRAMIN BASINA BUNLAR YAZILDIKTAN SONRA
;***********************************
NERDE KULLANILACAKSA;

MOVF        CIKIS_AC,W
MOVWF      PORTB;CIKIS_AC TAKI TANIMLAMA PORTB DE YADA NERDE ISTERSEN...

MOVF         CIKIS_KAPA,W
MOVWF      PORTA;PORTB,PORTC VS VS

SEKLINDE YAPIYORUM..
SENDE BU SEKILDE YAPABILIRSIN..
Kızımın iffeti batmakta rezîlin gözüne... Acırım tükürüğe billâhi, tükürsem yüzüne..! MEHMED AKİF ERSOY  Kardan Adaminla,GUNES'e calim mi satiyorsun?

yalnayak

Alıntı yapılan: "arslan74"Merhaba

Macrolari bir dene istersen;

CIKIS_AC   macro

     BSF PORTB,0
     BSF PORTB,1
     BSF PORTB,2
     BSF PORTB,3

        endm

CIKIS_KAPA   macro

     BCF PORTB,0
     BCF PORTB,1
     BCF PORTB,2
     BCF PORTB,3

        endm




O zaman sadece

CIKIS_AC


veya

CIKIS_KAPA


yazman yetecek.


SELAMLAR


BU MAKROLARI NEREYE NASIL KOYUYORUZ.VE NASIL KULLANIYORUZ..
YUKARDA GECEN ORNEGIN UYGULAMA ALANINI KUCUK BIR PROGRAMLA GOSTEREBILIRMISIN.DUYMUSTUM BU MAKROLARI AMA BU GOZLE HIC BAKMAMISTIM.COK KOLAYLASTIRICI BISEYE BENZIYO:)
Kızımın iffeti batmakta rezîlin gözüne... Acırım tükürüğe billâhi, tükürsem yüzüne..! MEHMED AKİF ERSOY  Kardan Adaminla,GUNES'e calim mi satiyorsun?

arslan74

Merhaba,

Macro basit ASM dili bir üst seviyeye cıkariyor.

Yapman gereken macro kullanmdan önce en başta onu tanımlamaktır.

Nasıl ki #define ile bir özel tanımlama yapiyorsun onuda aynı şeklide tanımlaman yeterlidir.

Örnek olarak;

;;;;;;; Macro definitions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MOVLF   macro  literal,dest
        movlw  literal
        movwf  dest
        endm

MOVFW   macro  literal
        movf  literal,W
        endm


yukardaki macro tanımlaması yaptıktan sonra
       movlw  literal
        movwf  dest


şeklinde yazman gerekmiyor artık.

       MOVLF  literal,dest


yazdığın zaman aynı işlemi yapar. böylelikle bir registere bilgi yazmak isteğinde önce onu W registerine at sonrada W yi istetiğin register at şeklinde yazman gerekmiyor.

direkt tanımladığın registere işlemi at diye yaziyorsun.

diyelimki bir sayici registeri tanımladınız ona 5 değerini atmak istediğinizde o zaman söyle yazabilirsiniz.

MOVLF 5,sayici




Selamlar