ASM minták?

Rendszerközeli nyelv(ek) tippjei, alkalmazásai
Avatar
etwg
Tranzisztorgyógyász
Hozzászólások: 150
Csatlakozott: 2011. február 7. hétfő, 7:00
Tartózkodási hely: Ausztria
Kapcsolat:

Re: ASM minták?

HozzászólásSzerző: etwg » 2013. szeptember 18. szerda, 8:48

Robert írta:A HD44780 adatlapot leasd meg. A kijelzőchipek ez alapján működnek.
Ha az újabb KS0066 vagy KS0077-es chip van rajta, azokat _kompatibilis_ módban használja mindenki. De ha akarsz el lehet menni ezirányba is (itt lehet sorkeverés, gyorskódok, stb). Viszont esetleges kijelzőcserekor szívatod magadat... mert nem érted miért nem megy...



Hát nem tudom, már nagy keservesen kiirtam a két sort, de egyáltalán nem ugy ahogy gondoltam ill. irtátok. Szoval ha beirom cimet akkor magkeveri a dolgot.

Kód: Egész kijelölése

   ldi ZL, LOW (Header*2)    ; Load the address of the string
         ldi ZH, HIGH (Header*2) ; into the Z pointer
         
         rcall lcd_flash_string   ; Subroutine gives out the Header,
                           ; what is addressed by Z-pointer
      
;         ldi   temp1, 0x14
;          rcall lcd_command          ;
;      
            ldi temp1, ' '
         rcall lcd_data
         ldi temp1, ' '
         rcall lcd_data
         ldi temp1, ' '
         rcall lcd_data

         ldi temp1, '0'
         rcall lcd_data
 
      
         ldi temp1, '1'
         rcall lcd_data         
                   ;
      
         ldi temp1, ':'
         rcall lcd_data

                   ;
      
         ldi temp1, '0'
         rcall lcd_data
          ;
      
         ldi temp1, '0'
         rcall lcd_data

         ldi   temp1, 0x1b
           rcall lcd_command          ;
          
         ldi temp1, ' '
         rcall lcd_data
      
         ldi temp1, '^'
         rcall lcd_data

         ldi temp1, ' '
         rcall lcd_data
         ldi temp1, ' '
         rcall lcd_data          ;
      
         ldi temp1, '2'
         rcall lcd_data

         

                ;
      
         ldi temp1, '3'
         rcall lcd_data

         ldi temp1, ' '
         rcall lcd_data
         
         ldi temp1, ' '
         rcall lcd_data          ;
      
         ldi temp1, '4'
         rcall lcd_data

               
         ldi temp1, '5'
         rcall lcd_data


                  
loop:
         rjmp loop

Header:      .db " Time DR STEP RP foreachoxcvbnmsdfertz",0


Ha igy irom be akkor kb. az jelenik meg a displayen amit akarok (2 sorban).

Ha beirok ilyen kodokat:

ldi temp1, 0x1b
rcall lcd_command


akkor baj van.

Elösztör is (a leirásban is igy van) ha beirok egy karaktert, akkor a pointer automatikusan eggyel arrébb megy, igy az abszolut cimésnek löttek. Nem baj mert hála az istennek a változok fixek, igy igy is megoldható, de gondoltam szebben megirni a programot....... :D
(Ha ezt az ákombákomot " foreachoxcvbnmsdfertz " kiveszem, megint minden megváltozik. Maga az ákombákom nem látható, de arra kell, hogy jo helyen legyen a szöveg:
Pl.

Time DR STEP RP
01:00 ^ 23 45
Éljenek a vonatok!

http://www.youtube.com/playlist?list=PLF2674BF4E3765682

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3234
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: ASM minták?

HozzászólásSzerző: kapu48 » 2013. szeptember 18. szerda, 10:39

Ne haragudj, de ezt nem így szoktuk csinálni!

Addig OK, hogy próbálkozol!
De nem így bele a vakvilágba (vak tyúk is talál szemet, elven).

Tessék megkeresni a vezérlő adatlapját! (ide is teheted a linkjét, ha azt akarod, hogy segítsen valaki!)
Adatlapban le van írva a vezérlő regiszterek értelmezése, és hogy milyen paranccsal mit lehet elérni.

Még így is hosszas gyakorlás kísérletezés szükséges mire megérthető az eszköz működés rejtelmei!
:wink:

Avatar
etwg
Tranzisztorgyógyász
Hozzászólások: 150
Csatlakozott: 2011. február 7. hétfő, 7:00
Tartózkodási hely: Ausztria
Kapcsolat:

Re: ASM minták?

HozzászólásSzerző: etwg » 2013. szeptember 18. szerda, 11:24

Kösz, hogy foglalkoztok a bajommal, de ez az elsö program amiben display is van.....

Standard HD44780-as display. Minden elérhetö irodalmat letöltöttem, és a display egy másik (nem általam irt) applikácioban rendesen müködik.

A gyakorlo display csak 2 soros.
http://www.pollin.de/shop/downloads/D120420B.PDF


A nagyobbik meg ez:
http://www.pollin.de/shop/downloads/D120690B.PDF
Éljenek a vonatok!

http://www.youtube.com/playlist?list=PLF2674BF4E3765682

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3234
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: ASM minták?

HozzászólásSzerző: kapu48 » 2013. szeptember 18. szerda, 12:29

Keres bővebb adatlapot!
:(
Talán ez: http://www.pollin.de/shop/downloads/D120690D.PDF
:D
Le vannak írva a regiszterek, és a program vezérlés sémája!
:roll:

Set DDRAM Address Counter Regiszterbe beírod az aktuális karakter kezdő címét.
(DDRAM táblázat).

Avatar
etwg
Tranzisztorgyógyász
Hozzászólások: 150
Csatlakozott: 2011. február 7. hétfő, 7:00
Tartózkodási hely: Ausztria
Kapcsolat:

Re: ASM minták?

HozzászólásSzerző: etwg » 2013. szeptember 18. szerda, 12:53

Kösz!

A nagynak megvolt csak a kis displaynek nem találom, de az viszont megy más berendezésekben (pl. a tranzisztorteszter) és nem hiszem, hogy a kicsinek más lenne a kezelö táblázata.

Valahogyan nem tudok rájönni, hogy miért nem fogadja el a DDRAM AC a beadott cimet. (Mert ott van a baj.)

A $40 a második sor elsö helye, de ha ezt beirom, akkor semmi nem jelenik meg a displayen.

Na mindegy, majd csak rájövök. 8O
Éljenek a vonatok!

http://www.youtube.com/playlist?list=PLF2674BF4E3765682

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3234
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: ASM minták?

HozzászólásSzerző: kapu48 » 2013. szeptember 18. szerda, 13:55

ASM-ban csak a fakírok programozna,C-ben könnyebb lenne mintát találni!

AVR-GCC libraries: http://homepage.hispeed.ch/peterfleury/ ... .html#libs
LCD library for HD44870 based LCD's:
http://homepage.hispeed.ch/peterfleury/ ... __lcd.html

A 2 művelet között előirt késleltetésekre oda kel figyelni

Avatar
etwg
Tranzisztorgyógyász
Hozzászólások: 150
Csatlakozott: 2011. február 7. hétfő, 7:00
Tartózkodási hely: Ausztria
Kapcsolat:

Re: ASM minták?

HozzászólásSzerző: etwg » 2013. szeptember 18. szerda, 14:09

Megtaláltam a hibát!!!!!!
A DDRAM ciméhez hozzá kellett adni 8-t és akkor már stimmel.

Kösz a segitséget!
Éljenek a vonatok!

http://www.youtube.com/playlist?list=PLF2674BF4E3765682

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3234
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: ASM minták?

HozzászólásSzerző: kapu48 » 2013. szeptember 18. szerda, 14:14

Részlet:

Kód: Egész kijelölése

#define LCD_DDRAM             7      /* DB7: set DD RAM address             */

/*************************************************************************
Set cursor to specified position
Input:    x  horizontal position  (0: left most position)
          y  vertical position    (0: first line)
Returns:  none
*************************************************************************/
void lcd_gotoxy(uint8_t x, uint8_t y)
{
#if LCD_LINES==1
    lcd_command((1<<LCD_DDRAM)+LCD_START_LINE1+x);
#endif
#if LCD_LINES==2
    if ( y==0 )
        lcd_command((1<<LCD_DDRAM)+LCD_START_LINE1+x);
    else
        lcd_command((1<<LCD_DDRAM)+LCD_START_LINE2+x);
#endif
#if LCD_LINES==4
    if ( y==0 )
        lcd_command((1<<LCD_DDRAM)+LCD_START_LINE1+x);
    else if ( y==1)
        lcd_command((1<<LCD_DDRAM)+LCD_START_LINE2+x);
    else if ( y==2)
        lcd_command((1<<LCD_DDRAM)+LCD_START_LINE3+x);
    else /* y==3 */
        lcd_command((1<<LCD_DDRAM)+LCD_START_LINE4+x);
#endif

}/* lcd_gotoxy */

A DB7-es Bitet kel 1-be állítani! (128-at adszhozzá a címhez)

Avatar
etwg
Tranzisztorgyógyász
Hozzászólások: 150
Csatlakozott: 2011. február 7. hétfő, 7:00
Tartózkodási hely: Ausztria
Kapcsolat:

Re: ASM minták?

HozzászólásSzerző: etwg » 2013. szeptember 18. szerda, 14:35

Igy van csak rosszul irtam le.....A DB7-s hiányzott $80-t akartam irni - de annyira örültem, hogy megtaláltam, hogy elelrontottam a beirást.
Éljenek a vonatok!

http://www.youtube.com/playlist?list=PLF2674BF4E3765682

Avatar
irak
Biztosítékgyilkos
Hozzászólások: 73
Csatlakozott: 2005. november 2. szerda, 7:00
Tartózkodási hely: Győr
Kapcsolat:

Re: ASM minták?

HozzászólásSzerző: irak » 2013. szeptember 19. csütörtök, 17:08

Csak sikerült, bár 10 hozzászólással ezelőtt írtam hogy 7-ik bit 1, a többi a cím.
Ha megnézed az utasításkészletét a cuccnak, meglátod hogy a legnagyobb helyiértékű 1-es helye a parancsot jelöli, az alatta levőek pedig mindíg adatot jelentenek.
http://1.bp.blogspot.com/-nmkjbYyCNYE/T ... D44780.jpg

Működés megismeréshez ez is hasznos (biztos volt már itt link valahol róla) :
http://www.geocities.com/dinceraydin/dj ... cdsim.html

Végül csak egy jó tanács, ha bitmezőkkel manipulálsz, akkor kerüld az összeadást/kivonást, használj helyette boolean operátorokat (or,and,xor).

Avatar
etwg
Tranzisztorgyógyász
Hozzászólások: 150
Csatlakozott: 2011. február 7. hétfő, 7:00
Tartózkodási hely: Ausztria
Kapcsolat:

Re: ASM minták?

HozzászólásSzerző: etwg » 2013. szeptember 19. csütörtök, 20:11

Kösz.
Tul sok volt az informacio, ha nem azokra támaszkodtam volna, már régen ment volna. :oops:
Ha kezdetben tisztáztam volna egyes dolgokat, akkor már világos lett volna az ügy.

Érdekes modon - lagalábbis számomra, pontosan az adatok bevitele volt a leggyengébb rész a leirásokban ( még a 4 bites vezérlés müködését is sikerült néhány óra alatt megértenem). Ha jol számolom van vagy 40-50 oldal mindenféle display kezelési leirás, meg 3-4 mintakod is, de az aproság egyikbe sem tünt fel, és ki sem tértek rá részletesebben.
Kimondottan azt, hogy a kiirando szöveget, aminek a cimzése többé kevésbé világos volt a DDRAM-ba kell ugy beirni ahogy fentebb sikerült megértenem ( mármint, hogy a $xx helycimhez hozzá kell adni $80 -t). Igy egyik irományban sem volt, pedig a sok oldalas szöveg helyett ez egyböl mindenkit odavezetett volna ahova kell.
Vajjon miért nem ugy használják, ahogy nekem logikus lenne.

Helycim beadva egy regiszetrbe.
Hivod a cimmakrot ami hozzáad $80-t a regiszterhez
Hivja load_command makrot
Ami betölti a DDRAM-ba
Majd vissza.
És jöhet a kiirando karakter.

De lehet, hogy csak én állok rosszul a feladathoz. :D

Na mindegy, fö hogy minden megy most ( legalábbis a display körül, most már kezdhetem a az adatok bevitelét és átszámolását. Ez sem lesz egyszerü dolog, de majd csak rájövök.

Fö, hogy ilyen rendesek vagytok és segitetek ( már nagyon kinöttem a programozásból). :D
Éljenek a vonatok!

http://www.youtube.com/playlist?list=PLF2674BF4E3765682

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9917
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: ASM minták?

HozzászólásSzerző: Robert » 2013. szeptember 19. csütörtök, 20:51

Helycim beadva egy regiszetrbe.
Hivod a cimmakrot ami hozzáad $80-t a regiszterhez
Hivja load_command makrot
Ami betölti a DDRAM-ba
Majd vissza.
És jöhet a kiirando karakter.


Mert 1 rutinban van a karakterdefiniálás és a kiírás memóriakezelése! :wink:

Tipp:
http://en.radzio.dxp.pl/avr-mcu/hd44780 ... river.html
http://www.azog.org/?p=453
bonyolultabb:
http://www.avrfreaks.net/index.php?name ... ew&t=49091

Avatar
etwg
Tranzisztorgyógyász
Hozzászólások: 150
Csatlakozott: 2011. február 7. hétfő, 7:00
Tartózkodási hely: Ausztria
Kapcsolat:

Re: ASM minták?

HozzászólásSzerző: etwg » 2013. szeptember 19. csütörtök, 21:07

Kösz ezeket az oldalakat mind végigjártam már, a lengyel volt a legszimpatikusabb, de van egy sereg német anyag is. Ugy látszik egyikben sem akadtam a lényegre. Végül a display adatlapjárol ugrott be. ( elég lett volna azt tanulmányozni tüzetesen).
Nekem mégis jobban jönne, ha két lépésben irom a DDRAM-t. Könnyebb számolni a cimeket. Van ennek valami hátránya?
Éljenek a vonatok!

http://www.youtube.com/playlist?list=PLF2674BF4E3765682

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9917
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: ASM minták?

HozzászólásSzerző: Robert » 2013. szeptember 19. csütörtök, 21:29

Semmi különbség. Csak átlátod a kódot és kicsit nagyobb lesz.

Avatar
irak
Biztosítékgyilkos
Hozzászólások: 73
Csatlakozott: 2005. november 2. szerda, 7:00
Tartózkodási hely: Győr
Kapcsolat:

Re: ASM minták?

HozzászólásSzerző: irak » 2013. szeptember 20. péntek, 9:43

Az is lehet megoldás, ha bufferelsz.

Lefoglalsz memóriát és oda írsz,s ha végeztél akkor egy menetben kiírod az egészet, kihasználva az automatikus léptetést.
Ha sok a változás, akkor időben jobban jössz ki, mivel csak annyi címzés kell, amennyi soros a kijelződ.


Vissza: “ASM programozás”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 0 vendég