ASM minták?

Rendszerközeli nyelv(ek) tippjei, alkalmazásai
Avatar
etwg
Pákabűvész
Hozzászólások: 213
Csatlakozott: 2011. február 7. hétfő, 7:00

Re: ASM minták?

Hozzászólás Szerző: etwg »

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: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: ASM minták?

Hozzászólás Szerző: kapu48 »

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
Pákabűvész
Hozzászólások: 213
Csatlakozott: 2011. február 7. hétfő, 7:00

Re: ASM minták?

Hozzászólás Szerző: etwg »

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: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: ASM minták?

Hozzászólás Szerző: kapu48 »

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
Pákabűvész
Hozzászólások: 213
Csatlakozott: 2011. február 7. hétfő, 7:00

Re: ASM minták?

Hozzászólás Szerző: etwg »

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: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: ASM minták?

Hozzászólás Szerző: kapu48 »

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
Pákabűvész
Hozzászólások: 213
Csatlakozott: 2011. február 7. hétfő, 7:00

Re: ASM minták?

Hozzászólás Szerző: etwg »

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: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: ASM minták?

Hozzászólás Szerző: kapu48 »

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
Pákabűvész
Hozzászólások: 213
Csatlakozott: 2011. február 7. hétfő, 7:00

Re: ASM minták?

Hozzászólás Szerző: etwg »

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

Re: ASM minták?

Hozzászólás Szerző: irak »

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
Pákabűvész
Hozzászólások: 213
Csatlakozott: 2011. február 7. hétfő, 7:00

Re: ASM minták?

Hozzászólás Szerző: etwg »

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: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: ASM minták?

Hozzászólás Szerző: Robert »

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
Pákabűvész
Hozzászólások: 213
Csatlakozott: 2011. február 7. hétfő, 7:00

Re: ASM minták?

Hozzászólás Szerző: etwg »

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: 10191
Csatlakozott: 2005. december 9. péntek, 7:00

Re: ASM minták?

Hozzászólás Szerző: Robert »

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

Re: ASM minták?

Hozzászólás Szerző: irak »

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.
Válasz küldése