Mikroe basic - picbasic

Hallo allemaal,

Ik kwam laatst het volgende stukje tegen, hierin word een string opgeslagen.

pic basic code:

const lcd1 = "Initializing..." ; <-- mikroe basic

Nou wil ik ook zo iets doen met picbasic.
Wat ik tot nu toe heb is dat ik de text als een string in een byte array weg schrijf.
Maar dit is natuurlijk niet efficient.

Is er een manier om dit efficient te doen in proton picbasic?

De bedoeling is dus dat ik een keer een bepaalde text neerzet, en als ik vervoglens die text wil printen, hoef ik alleen nog maar print lcd1 ,in te typen.

Zo iets dus:

pic basic code:

lcd1 = "text1"  
lcd2 = "text2"
lcd3 = "etc."

print lcd1
;
print lcd2
etc


Arco

Special Member

Je zult in PicBasic toch ook wel constanten kunnen aanmaken?
Dus gewoon van lcd1/2/3 een constante maken.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

hiermee dus: symbol
Dan word het dus

pic basic code:

symbol lcd1 = text1

als het constanten zijn zou ik ze wel in je flash declareren, anders vreet het wel RAM geheugen

In het geval van

pic basic code:

symbol lcd1 = text1

word het toch in het flash geheugen geschreven? (even controleren of ik het goed in mijn hoofd heb, flash = program memory)

Het weg schrijven van text in een byte array, neemt veel RAM in beslag.

PS: Ik zal waarschijnlijk de text1 in quotes moeten zetten

pic basic code:

symbol lcd1 = "text1"

[Edit]
Dit zou ik natuurlijk ook kunnen doen met een eeprom

verilog code:

Ewrite 0, "text1"

Maar wat ik dus eigenlijk wil is, dat in het flash geheugen.
Dit gaat dus als ik het goed heb begrepen met Symbol?!

[Bericht gewijzigd door flamingo op maandag 7 november 2011 13:30:26 (24%)

Je kan geen teksten als symbol opslaan!
Je zou een Edata kunne gebruiken, tekst komt dan in de eeprom!

Read the fuc.... manual and read the fuc.... datasheet! {Proton IDE: V2.0.1.2 / Proton Compiler: V3.5.4.5}

Dat dacht ik dus al.

Ik had nog even gekeken naar dat met de eeprom.
Ook met Edata.
Ik kwam er alleen niet achter hoe ik een text kan uitlezen.
Want als ik de eeprom uitlees, dan weet de PIC toch niet hoe groot de text is, en of het assci is of een byte.

(picbasic.nl)

EDATA 7, $FF, 256, %11000011, "ABC"

Om te laten zien hoe dit in het EEPROM geheugen komt pakken we de hokjes er weer even bij:
0-----------1------------2-----------3-----------4------------5-----------6-----------7
00000111-11111111-00000000-00000001-11000011-01000001-01000010-01000011

Arco

Special Member

Uit de manual:

4.9. String Constants
PBP doesn't provide string handling capabilities

Heel vreemd. Strings die nooit veranderen horen toch juist in flash thuis?
Zonde om daar RAM of EEProm voor op te offeren...

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

In het manual staan goede voorbeelden, maar een voorbeeldje:

Tijdens de eerste initialisatie schrijf je de waarde in de eeprom!

pic basic code:

LCD_1 Edata "Dit is een test."
LCD_2 Edata "Welkom bij ....." 
LCD_3 Edata "Tot de volgende keer!"

Nu bevat dus LCD_1, LCD_2 en LCD_3 de start pointer van de betreffende tekst.

Door nu de start pointer (Charpos) te zetten op de juiste waarde en
dan naar het subje te springen word de juiste tekst op het scherm gezet.

pic basic code:

Charpos = LCD_2 : Gosub DisplayText

pic basic code:


' Subroutine to read and display the text held at the address in Charpos
DisplayText:

   While 1 = 1 ' Create an infinite loop
      Char = Eread Charpos ' Read the eeprom data
      If Char = 0 Then Break ' Exit when null found
      Print Char ' Display the character
      Inc Charpos ' Move up to the next address
   Wend ' Close the loop
Return ' Exit the subroutine

Bovenstaande komt trouwens gewoon uit de Proton Picbasic PDF!
Read the fuc.... manual and read the fuc.... datasheet! {Proton IDE: V2.0.1.2 / Proton Compiler: V3.5.4.5}

Dat ziet er belovend uit.

Wel jammer dat we het niet in flash kunnen zetten, maarja dat is niet anders.

PS. Ik ben ook al de hele tijd de manual aan het doorneusen hoor.
Ik had dat stukje niet gevonden, Bedankt!

[Edit]

Moet er achter de LCD data niet ook nog een ,0? dus

pic basic code:

LCD_1 Edata "dit is een text.",0

OM Deze reden

pic basic code:

If Char = 0 Then Break ' Exit when null found

Deze zoekt naar een 0, met de ,0 word een 0 achter de text gezet.

[Bericht gewijzigd door flamingo op maandag 7 november 2011 14:27:31 (39%)

Arco

Special Member

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com