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.