Flera sidor minne med picbasic
Flera sidor minne med picbasic
Har försökt förstå mig på BRANCHL i PicBasic. Har förstått att det är det man ska använda om man vill nyttja mer än en sida av minnet. Pic16F628 ska ju ha 14*2048 byte. Får det inte att fungera, någon som har något tips, eller kan länka till ett bra exempel som ni gärna själva har testat. Det som finns i manualen får jag inte att fungera, går inte att compilera utan fel.
Urklipp ur manualen:
Syntax
BRANCHL Index, [Label1 {,...Labeln }]
Overview
Cause the program to jump to different locations based on a variable index. On a PIC device with more than one page of memory.
Operators
Index is a constant, variable, or expression, that specifies the address to branch to.
Label1,...Labeln are valid labels that specify where to branch to.
Example
DEVICE 16F84
DIM INDEX as BYTE
Start: INDEX = 2 ' Assign INDEX a value of 2
BRANCHL INDEX,[Lab_0, Lab_1, Lab_2] ' Jump to label 2 (Lab_2) because INDEX = 2
Lab_0: INDEX = 2 ' INDEX now equals 2
GOTO Start
Lab_1: INDEX = 0 ' INDEX now equals 0
GOTO Start
Lab_2: INDEX = 1 ' INDEX now equals 1
GOTO Start
The above example we first assign the index variable a value of 2, then we define our labels. Since the first position is considered 0 and the variable index equals 2 the BRANCHL command will cause the program to jump to the third label in the brackets [Lab_2].
Notes
The BRANCHL command is mainly for use with PICmicro devices that have more than one page of memory (greater than 2048). It may also be used on any PIC device, but does produce code that is larger than BRANCH.
Urklipp ur manualen:
Syntax
BRANCHL Index, [Label1 {,...Labeln }]
Overview
Cause the program to jump to different locations based on a variable index. On a PIC device with more than one page of memory.
Operators
Index is a constant, variable, or expression, that specifies the address to branch to.
Label1,...Labeln are valid labels that specify where to branch to.
Example
DEVICE 16F84
DIM INDEX as BYTE
Start: INDEX = 2 ' Assign INDEX a value of 2
BRANCHL INDEX,[Lab_0, Lab_1, Lab_2] ' Jump to label 2 (Lab_2) because INDEX = 2
Lab_0: INDEX = 2 ' INDEX now equals 2
GOTO Start
Lab_1: INDEX = 0 ' INDEX now equals 0
GOTO Start
Lab_2: INDEX = 1 ' INDEX now equals 1
GOTO Start
The above example we first assign the index variable a value of 2, then we define our labels. Since the first position is considered 0 and the variable index equals 2 the BRANCHL command will cause the program to jump to the third label in the brackets [Lab_2].
Notes
The BRANCHL command is mainly for use with PICmicro devices that have more than one page of memory (greater than 2048). It may also be used on any PIC device, but does produce code that is larger than BRANCH.
Nu har jag återupptagit mitt sovande projekt. Har gjort klart hårdvaran och har den viktiga delen av mjukvaran snurrande. Kanske ska berätta vad projektet är, alltid roligare att hjälpa till då. Det ska bli en fläktstyrning till en matkällare, eller så kan man kalla det för miljövänligare kylaggregat. Tanken är att en fläkt ska suga in kall luft till matkällaren vid behov när utomhustempen är tillräckligt låg.
Det är mitt första PIC projekt, jag använder mig av en PIC16F628 som jag kör med PICBASIC Plus http://www.crownhill.co.uk/product.php? ... 71007ca673
Tyvärr är det en "fulversion". Kanske inte bästa valet, men nu är det så.
Mitt problem är att jag vill få in mer "lull lull", vilket betyder att jag har passerat första sidan minne på 2048 tecken.
Har läst o googlat om branch/branchl som jag förstått att man måste använda, men får det inte att fungera. Compileringen klagar fortfarande på att jag passerat 2047 tecken.
Har någon nått tips, eller en bra exempelkod att visa?
Det är mitt första PIC projekt, jag använder mig av en PIC16F628 som jag kör med PICBASIC Plus http://www.crownhill.co.uk/product.php? ... 71007ca673
Tyvärr är det en "fulversion". Kanske inte bästa valet, men nu är det så.
Mitt problem är att jag vill få in mer "lull lull", vilket betyder att jag har passerat första sidan minne på 2048 tecken.
Har läst o googlat om branch/branchl som jag förstått att man måste använda, men får det inte att fungera. Compileringen klagar fortfarande på att jag passerat 2047 tecken.
Har någon nått tips, eller en bra exempelkod att visa?
I databladet står det 2048x14, Vilket jag tolkade som 14 "sidor" a 2048 . Verkar som jag slarvat med läsningen.
http://www.elfa.se/pdf/73/731/07319783.pdf
http://www.elfa.se/pdf/73/731/07319783.pdf
Senast redigerad av ristomemo 3 maj 2005, 00:07:51, redigerad totalt 1 gång.
Tackar för hjälpen. Så det kan gå när man inte är uppmärksam från början. Jag tror dock att jag ska kunna slimma koden rätt ordentligt, råkade visst använda 2 st float variabler i början av kodandet. Var snabbast att få till de formlerjag önskade på det viset. Men det äter minne på så vis, ska koda lite smartare. Annars var Cyrs förslag inte så dumt. Har gjort all hårdvara klar, etsat kort o monterat så byta till någon annan större PIC orkar jag inte. Då lever jag nog utan "lull lull" istället, och börjar på nästa projekt.