Sida 1 av 1

sträng i programminne

Postat: 2 oktober 2008, 07:58:43
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.

Postat: 2 oktober 2008, 08:08:10
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

Postat: 2 oktober 2008, 10:06:56
av persika
Tack för svar. Har kollat på exemplet.

Vad jag förstår så ligger texten i exemplet i EE-minnet, eller ?

Postat: 2 oktober 2008, 10:16:35
av sodjan
Nej. Varför tror du det ?

Postat: 2 oktober 2008, 10:31:37
av persika
Eftersom variablerna med namnen eeadr och eeadrh användes.

Postat: 2 oktober 2008, 10:33:30
av sodjan
Aha, OK... :-)
Ja, det kan man lätt luras av... :-)

Postat: 2 oktober 2008, 10:44:00
av persika
Så alltså då, man kan komma åt programminne och EE-minne på samma sätt, bara olika adresser ?

Postat: 2 oktober 2008, 11:28:25
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.

Postat: 2 oktober 2008, 11:32:08
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.

Postat: 2 oktober 2008, 11:53:34
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

Postat: 2 oktober 2008, 12:00:37
av persika
Hittar bara "eeadr" i databladet för 12F675, hittar inte "eeadrh".

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

(ändrat: felstavning)

Postat: 2 oktober 2008, 12:04:51
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.