Teade

Collapse

Foorumi reeglid.

Foorumi reeglistik on uuendatud. Palume tutvuda ja arvesse võtta.
See more
See less

Macro LCD-le

Collapse
X
 
  • Filter
  • Kellaaeg
  • Show
Clear All
new posts

    Macro LCD-le

    Tere. Üritan ühte macrot kasutada, mis asub siin http://www.mikroelektronika.co.yu/english/...7_09chapter.htm
    LCD.INC milles on macro "lcdtext".
    Tegin samasuguse projekti(LCD.ASM) MPLAB-is.
    Saan sellise veateate:
    Error[116] E:\PIC PROTSESSOR\LCD PROOV\LCD.INC 95 : Address label duplicated or different in second pass (Poruka)
    Mida peaks tegema, et seda viga ei tuleks?
    Kui kirjutan ainult ühe teksti väljastuseks, siis viga ei tule.
    Uurisin selle vea kohta, kuid ei saanud asjale pihta. Ehk keegi seletaks, mis on valesti.

    Tänud.

    #2
    Lihtne - makro pole funktsioon ja see kopeeritakse täies ulatuses koodi sisse. Kui kasutad kaks korda, siis labelid kattuvad.
    Lahendus: tee funktsioon, mis kasutab seda makrot. Ja programmis kutsu välja funktsioon.

    Comment


      #3
      makrodes kasutatavad labelid peavad olema vastavalt märgistatud,
      näiteks ASM51 puhul %label_name:

      sel juhul assembler tekitab labelid:
      ...
      label_name1:
      ...
      label_name2:
      ...
      ...
      label_namen:
      ...

      vastavalt sellele palju makrot välja kutsutud on ja linker ei pahanda sinuga.
      kahjuks Pici assmi kohta ei ole viitsinud vaadata, seal võib see teisiti olla ( mingi Texas Instrumentsi klotsi ASM tahtis näiteks kujul label_name? ).
      mälu kokkuhoiu mõttes oleks funktsioon kindlasti mõtekam.

      Comment


        #4
        Huvitav kas siis selles näites on meelega viga sisse tehtud?
        Kuda ma selle macro sinna funktsiooni sokutan?
        Teete äkki väikse näite. Pole nagu kuskilt head näidet leidnud "Data Table" kohta.
        MPLAB-i help on ka nii kesine näidete kohapealt.

        Comment


          #5
          kirjuta selle "poruka" asemele "Message", autor on osa asjast tölkimata jätnud // mittetölgitava ropu söimu koht // .

          ps,. makrost funktsiooni tegemine ei ole nii lihtne- funktsioonid eeldavad mingit pidepunkti , mille kaudu andmeid yle anda ( lepid iseendaga kokku et edaspidi saadad andmeid vöi andmete asukoha viita yhest funktsioonist teise registrite N (ja N+1,N+2,N+3 jne) kaudu). seepärast on siin yritatud makrode tasandil "körgkeelt " arendada. noh, kui vaba mälu oleks 32kB , siis ei oleks ju vigagi, aga 16f84 1ksöna puhul on see vaid näideteks sobiv.

          Comment

          Working...
          X