sträng i programminne

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
persika
EF Sponsor
Inlägg: 1541
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

sträng i programminne

Inlägg av persika »

(PIC12F675 MPLAB, asm )

Hur lagrar man och tar fram en sträng i programminnet ?

Vill kunna sända ut från pic via serieport, en textsträng som alltid har samma innehåll.

Har sökt en del på nätet, hopplöst att hitta nåt vettigt i bland alla träffar.
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9127
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Inlägg av AndersG »

Det finns ett bra exempel på Jescabs hemsida:

http://www.jescab.se/HD44780.html

Sedan kan du typ skapa en generell fn:

Kod: Markera allt

;
; Subroutine that prints strlen characters starting at w
;
printstr
		movwf	fsr
next1	movf	indf,w			;get a byte and print it
		call	lcd_send_data
		incf	fsr				;point to next
		decfsz	strlen			;decrement string length
		goto	next1			;Not done yet?
								;Done! Continue here
		return
Användarvisningsbild
persika
EF Sponsor
Inlägg: 1541
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

Inlägg av persika »

Tack för svar. Har kollat på exemplet.

Vad jag förstår så ligger texten i exemplet i EE-minnet, eller ?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Nej. Varför tror du det ?
Användarvisningsbild
persika
EF Sponsor
Inlägg: 1541
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

Inlägg av persika »

Eftersom variablerna med namnen eeadr och eeadrh användes.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Aha, OK... :-)
Ja, det kan man lätt luras av... :-)
Användarvisningsbild
persika
EF Sponsor
Inlägg: 1541
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

Inlägg av persika »

Så alltså då, man kan komma åt programminne och EE-minne på samma sätt, bara olika adresser ?
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Nej. EEPROM-funktionen kommer man åt vid att skriva en adress i ett register och sedan läsa svaret i ett annat register.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Finns ju ingen som helst anledning att fördjupa sig i det
här, det framgår båda av koden på länken ovan och av databladet.

Tips, kolla efter labeln "read_flash" i min kod...

Icecap's svar är i och för sig rätt, men ger fel "signaler".
Man kommer åt både flash och EEPROM på exakt samma
sätt och med samma register.
Användarvisningsbild
AndersG
EF Sponsor
Inlägg: 9127
Blev medlem: 25 februari 2008, 17:10:58
Ort: Mariehamn
Kontakt:

Inlägg av AndersG »

För att förtydliga: Det är samma mekanik för att läsa program-minnet som att läsa EE. Det framår helt tydligt i databladet
Användarvisningsbild
persika
EF Sponsor
Inlägg: 1541
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

Inlägg av persika »

Hittar bara "eeadr" i databladet för 12F675, hittar inte "eeadrh".

Då funkar inte exemplet, hur göra då ?

(ändrat: felstavning)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Aha, min kod är för en annan processor.
12F675 kan inte läsa (direkt) från flash alls.
Sök efter "table read" i databladet så hamnar du rätt.
Kolla även AN556.
Skriv svar