do??

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Murre
Inlägg: 30
Blev medlem: 2 januari 2005, 00:31:02

do??

Inlägg av Murre »

Någon som kan förklara?
I = 0

do
I = I + 1 ' execute these 2 statements
PORTB = I ' until i equals 10 (ten)
loop until I = 10
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Jovars.

I = 0 betyder att variablen I sätts till noll i värde (innehåll).

Gör sedan följande:
I = I+1 betyder läg 1 till I
PORTB = I skicker värdet av I ut på PORTB
loop until I=10 betyder att allt mellan do...loop until ska göras så länge I'värde är olika 10.

Programmet kommer att skicka det binära mönster ut på PORTB enligt detta:
0000 0001 ' Binärt 1
0000 0010 ' Binärt 2
0000 0011 ' 3
0000 0100 ' 4
0000 0101 ' 5
0000 0110 ' 6
0000 0111 ' 7
0000 1000 ' 8
0000 1001 ' 9
0000 1010 ' 10

och sen köra vidare i programmet.

Jag hade föredragit att göra det såhär men jag är också rätt petig:
I = 0 ' Samma
do ' Samma
I = I + 1 ' Samma
PORTB = I ' Samma
loop until I >= 10 ' Här skiljer det sig

Skillnaden består av att om en extern händelse i programmet ändrar I kommer denna loop att stoppa när värdet på I är lile med eller överstiger 10, den originala stoppade enbart om I var just 10.

Spetsfundighet osv och i normala fall totalt likgiltigt men med en massa interrupts kan det vara viktigt.
Senast redigerad av Icecap 15 januari 2005, 21:12:48, redigerad totalt 1 gång.
Murre
Inlägg: 30
Blev medlem: 2 januari 2005, 00:31:02

Inlägg av Murre »

Jag får bara detta medelande var gång jag försöker
UNDECLARED IDENTIFIER 'i'
Har jag missuppfattat nåt?
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Inte ved jag vad du uppfattar men du kanske ska definiera I för att få funktionen att köra.

Jag förstår att det är nån sorts BASIC och där brukar man ju att deklarera variabler, exakt hur kan jag inte veta då jag har släppt BASIC sedan länge men jag har för mig att man gjorde såhär (eller liknande):
dim I as integer ' eller kanske
dim I as byte ' eller något liknande. 'Dim' delen är jag ganska säker på.
Murre
Inlägg: 30
Blev medlem: 2 januari 2005, 00:31:02

Inlägg av Murre »

Funkar inte. du har rätt i att det är basic. Programmet jag kör är mikrobasic
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Då så, då är det bara att hitta ett exempel-program och kolla hur variabler deklareras eller hitta fram en manual och kolla det samma.
Murre
Inlägg: 30
Blev medlem: 2 januari 2005, 00:31:02

Inlägg av Murre »

jag kopierade exeplet från manualen
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

i var byte
kanske
Murre
Inlägg: 30
Blev medlem: 2 januari 2005, 00:31:02

Inlägg av Murre »

Nej det funkar inte heller. Ingen som har nåt kod exempel att dela med sig
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Men du.....en del högnivå språk (om man nu kan kalla BASIC för det) skiljer på gemener och versaler i variabler.
'I' är alltså inte det samma som 'i' i det fall (heter 'case sensitive') så var säker på att 'I' är samma bokstav hela vägen.
Murre
Inlägg: 30
Blev medlem: 2 januari 2005, 00:31:02

Inlägg av Murre »

Jag har kollat det redan.
Robert Nielsen
Inlägg: 700
Blev medlem: 23 augusti 2003, 20:42:38

Inlägg av Robert Nielsen »

Murre> "i var byte" Kommer inte att fungera i mikroBasic.

För att deklarera vad "I" ska vara skriver du:

"Dim I as Byte" (Ta bort citationstecknen, ev. kan du behöva sätta di citationstecknen runt "I")
Murre
Inlägg: 30
Blev medlem: 2 januari 2005, 00:31:02

Inlägg av Murre »

UNDERBART!!! Nu funkar det. Tack för all hjälp
Lallas
Inlägg: 463
Blev medlem: 30 november 2003, 18:46:51
Ort: Malmö

Inlägg av Lallas »

Hmm.. Själv vill jag skriva:

for (i = 0; i <= 10; i++) vilket nog inte lär funka i PBP, däremot så ska FOR i = 1 TO 10 fungera enligt manualen :)
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

Robert Nielsen skrev:Murre> "i var byte" Kommer inte att fungera i mikroBasic.

För att deklarera vad "I" ska vara skriver du:

"Dim I as Byte" (Ta bort citationstecknen, ev. kan du behöva sätta di citationstecknen runt "I")
Så mikroBasic gör skillnad på små och stora bokstäver. I alla Basic-varianter jag har testat görs det ingen skillnad alls.
Skriv svar