Sida 1 av 1

MPASM macro fråga

Postat: 25 november 2008, 20:52:28
av Bosen
Om man läser nedanstående kod och letar upp macrot lcdtext så ser man där att detta macro skapar en lookup-table av dess up till 16 tecken som man har skickat med i sin "sträng" (text).

Kan någon förklara hur detta funkar?!
hur kan den skapa en lookuptable med hjälp av dessa rader?

Kan jag göra samma sak för min PIC16F648A??



Bild

Postat: 25 november 2008, 20:56:57
av sodjan
Ta bort *bilden* och klipp in *text* istället...

Men svaret på din fråga är "dt".

Och ska det verkligen stå "Poruka" där det gör det ?

> Kan jag göra samma sak för min PIC16F648A??


Jorå, det bör gå, men notera att den inte är speciellt ekonomisk med
programminne. Gör någon test och se vad som skapas...

Postat: 26 november 2008, 16:39:27
av Bosen
anledningen att det blev en bild är att jag gjorde det enkelt för mig. Bilden kommer frånDenna sidan.
Om det ska stå poruka där har jag ingen aning om... men mikroelektronika är nog ett polskt företag eller liknande... så det kan kanske stämma :)

Tack för svaret sodjan!

Postat: 26 november 2008, 17:45:35
av sodjan
Kroatiskt eller Slovenskt eller något sådant, om jag inte har fel.

Ser ut som om de inte vill att man ska kopiera koden.

Postat: 26 november 2008, 20:15:13
av Bosen
nä... dom vill nog att man skall köpa boken, för då får man med en cd-skiva...

Postat: 26 november 2008, 20:41:11
av sodjan
Hur som helst, har det klarnat hur det fungerar ?

Postat: 27 november 2008, 17:18:19
av Bosen
japp... det klarnade direkt... jag fattade inte att dt va ett kommando..... :)

Postat: 28 november 2008, 00:37:32
av sodjan
Hm, jo, i princip. Direktiv är nog annars rätt benämning. :-)
Alltså något som används för att "styra" MPASM på olika sätt,
i detta fall ("dt") för att generera RETLW instruktioner...

Postat: 28 november 2008, 17:45:58
av Bosen
ok... men jag använder det nog inte i detta sammanhanget i alla fall... det ser ju "snyggt" ut i koden... men om man skall skriva ut mycket test på en display så upptar det ju lite mycket programminne som du säger....men det finns nog tillfällen där "dt" är mycket användbart känns det som!

Postat: 28 november 2008, 18:01:09
av vfr
Hur hade du tänkt lagra textsträngarna då?

Jag håller med om att det är ineffektivt, men det finns tyvärr inte så många alternativ på en PIC16.

Postat: 29 november 2008, 15:39:38
av Bosen
jag får helt enkelt skicka ett tecken åt gången... altså inte några strängar alls!

Postat: 29 november 2008, 16:23:17
av bearing
Det borde väl vara ännu mer ineffektivt att anropa funktionen en gång för varje tecken? Då krävs två instruktioner för varje tecken (movlw + call). Här krävs endast en instruktion per tecken (plus en fast mängd).

Den här lösningen gör väl dock att samma sträng måste sparas två gånger om den ska skrivas ut på två olika ställen i programmet. Bättre då att göra egna retlw-funktioner och sedan använde dem som argument till ett "skriv-sträng-makro".

Postat: 29 november 2008, 23:57:59
av vfr
Visst, skall man bara testa några tecken så duger det ju utmärkt att ladda tecknet och sedan anropa utskrift separat för varje tecken man ska ha ut. Skall man ha lite mera text så blir det ännu mer ineffektivt än strängar med bara "retlw", precis som bearing säger. Men nu har du iallafall alternativen, sedan gör du som det passar dig och din applikation för stunden. Har du mer frågetecken så får du självklart återkomma! :D

Edit: Smiley!

Postat: 30 november 2008, 02:31:14
av v-g
Man kan ju lagra texten i eeprom också, men det blir ju inga biblar precis :)