Steget från en PICkit2 -> "Riktigt projekt"
Re: Steget från en PICkit2 -> "Riktigt projekt"
Fundera lite på hur DECFSZ fungerar så ser du nog att det fungerar utmärkt.
Kör det t.ex i MPALB/SIM och studera värderna i registren.
> Hur blir det då så att det blir 256 loopar?
Från "noll" och tillbaka till "noll" är 256 steg.
> [ 0001 0000 0000 = 256 ]
Det där är fler än 8 bitar. Hur menar du ?
Kör det t.ex i MPALB/SIM och studera värderna i registren.
> Hur blir det då så att det blir 256 loopar?
Från "noll" och tillbaka till "noll" är 256 steg.
> [ 0001 0000 0000 = 256 ]
Det där är fler än 8 bitar. Hur menar du ?
Re: Steget från en PICkit2 -> "Riktigt projekt"
Du har aldeles rätt i att variabler bör ges ett värde explicit, även om vissa register har definierade värden efter en powerup. Detta finns beskrivet i handboken, se tex TABLE 2-1: PIC16F685/687/689/690 SPECIAL REGISTERS SUMMARY BANK 0
Re: Steget från en PICkit2 -> "Riktigt projekt"
> Fundera lite på hur DECFSZ fungerar så ser du nog att det fungerar utmärkt.
Kör det t.ex i MPALB/SIM och studera värderna i registren.
Vet att DECFSZ minskar värdet med 1 tills dess att den blir 0 då den hoppar över, och nu har jag kommit underfund med hur ni menar tror jag ;D
Delay räknas ner från 255-0 -> 256 steg, och sen går den på nästa instruktion. Således borde delay alltså ha binära värdet [ 1111 1111 = 255 ] , och 8 bitar långt?
var det som inte gick in helt i skallen först ;p
OT: Hittade för övrigt en mycket bra förklaring på detta när ja googlade det; http://www.pictutorials.com/INCFSZ-DECFSZ.htm
Är iofs en sida för "PIC16x84 - basics", men tyckte att de förklarade det väldigt lättsamt och lättförståeligt (är alltså själva assembler programmeringen, och en förklaring av kodspråket m.m)!
Edit: hela instruktionsserien http://www.pictutorials.com/Flash_Tutorials.htm
Kör det t.ex i MPALB/SIM och studera värderna i registren.
Vet att DECFSZ minskar värdet med 1 tills dess att den blir 0 då den hoppar över, och nu har jag kommit underfund med hur ni menar tror jag ;D
Delay räknas ner från 255-0 -> 256 steg, och sen går den på nästa instruktion. Således borde delay alltså ha binära värdet [ 1111 1111 = 255 ] , och 8 bitar långt?

OT: Hittade för övrigt en mycket bra förklaring på detta när ja googlade det; http://www.pictutorials.com/INCFSZ-DECFSZ.htm
Är iofs en sida för "PIC16x84 - basics", men tyckte att de förklarade det väldigt lättsamt och lättförståeligt (är alltså själva assembler programmeringen, och en förklaring av kodspråket m.m)!
Edit: hela instruktionsserien http://www.pictutorials.com/Flash_Tutorials.htm
Re: Steget från en PICkit2 -> "Riktigt projekt"
> Således borde delay alltså ha...
Var är "delay" ? Det finns inget som heter så i den kod du postade.
> alltså ha binära värdet [ 1111 1111 = 255 ]...
menar du delay1 och/eller delay2 ?
Flest "varv" i loopen blir det om man startar med [0000 0000] (h'00') från början.
Och det är det ju garanterat f.o.m *andra* varvet och framåt...
> Du har aldeles rätt i att variabler bör ges ett värde explicit,
Ja, om det har någon betydelse, det har det inte i detta fall (i praktiken). Om
inte fördröjningen *första* gången är viktig. I detta fall betyder det bara att
första "blinket" kan bi lite vad som helst, men det borde inte spela någon roll...
Var är "delay" ? Det finns inget som heter så i den kod du postade.
> alltså ha binära värdet [ 1111 1111 = 255 ]...
menar du delay1 och/eller delay2 ?
Flest "varv" i loopen blir det om man startar med [0000 0000] (h'00') från början.
Och det är det ju garanterat f.o.m *andra* varvet och framåt...
> Du har aldeles rätt i att variabler bör ges ett värde explicit,
Ja, om det har någon betydelse, det har det inte i detta fall (i praktiken). Om
inte fördröjningen *första* gången är viktig. I detta fall betyder det bara att
första "blinket" kan bi lite vad som helst, men det borde inte spela någon roll...
Re: Steget från en PICkit2 -> "Riktigt projekt"
Det är helt enkelt "defensive programming" att alltid initiera variabler, även om det inte alltid behövs som i detta fall.Ja, om det har någon betydelse
Re: Steget från en PICkit2 -> "Riktigt projekt"
Älskar det faktum att tredje året på gymnasiet överlag erbjuder ett fantastiskt schema med långa sovmorgnar så man kan sitta och nöta PIC;s 
Jag är helt euforisk just nu! Har lyckats få ihop ett välfungerande program som ger en "ljusvåg" från tredje lampan till höger, så att lamporna i tur och ordning släcks åt vänster för att sedan börja om igen från höger lampa tre" :-D (lite svårt att förklara, måste ses, haha )
Det som känns ännu bättre är att detta har gjorts UTAN att jag har läst igenom mer än den lektionen för hur man satte igång en lampa på PIC-kiten i "manualen" (och förstås med lite trevande hjälp/självlärningsuppmanande om delayloopar härifrån
.), och att jag hade tillgång till ett "kommandoregister", med vad var kommando gör/gjorde. Helt enkelt enligt metoden "trial and failure" förr eller senare lyckas man ju! 
Som sagt, helt euforisk inombords när PIC;en gjorde som jag ville, efter jag vet inte hur många 10-tals minuters arbete (minst en timme i alla fall ;p )
Ska nämnas att jag är mycket medveten om att mitt program knappast är optimalt kodat, och att jag troligen har gjort bra mycket mer jobb än vad som kanske egentligen behövs, men man måste ju börja någonstans
( Tog för övrigt bort delar av "template-koden" från MPLAB, så att det blir en avsevärt kortare post, och bara relevant, egenskriven kod nedan ) :
Wiiieeee! Erik går mot nya höjder!
Nu ska jag sova, lycklig och ännu mer taggad på att fortsätta lära mig!
God natt!

Jag är helt euforisk just nu! Har lyckats få ihop ett välfungerande program som ger en "ljusvåg" från tredje lampan till höger, så att lamporna i tur och ordning släcks åt vänster för att sedan börja om igen från höger lampa tre" :-D (lite svårt att förklara, måste ses, haha )
Det som känns ännu bättre är att detta har gjorts UTAN att jag har läst igenom mer än den lektionen för hur man satte igång en lampa på PIC-kiten i "manualen" (och förstås med lite trevande hjälp/självlärningsuppmanande om delayloopar härifrån


Som sagt, helt euforisk inombords när PIC;en gjorde som jag ville, efter jag vet inte hur många 10-tals minuters arbete (minst en timme i alla fall ;p )
Ska nämnas att jag är mycket medveten om att mitt program knappast är optimalt kodat, och att jag troligen har gjort bra mycket mer jobb än vad som kanske egentligen behövs, men man måste ju börja någonstans

( Tog för övrigt bort delar av "template-koden" från MPLAB, så att det blir en avsevärt kortare post, och bara relevant, egenskriven kod nedan ) :
Kod: Markera allt
; HELT Hemmasnickrat program som blinkar LED;s från tredje lampan till höger åt vänster, och det funkar!!! :-D
main
BSF STATUS,RP0 ; till register 1, där TRISC finns
BCF TRISC,2 ; Gör C2 till output
BCF TRISC,1 ; Gör C1 till output
BCF TRISC,0 ; Gör C0 till output
BCF STATUS,RP0 ; tillbaka till register 0
;Definera variabler/Fil-värden
ADDLW D'2000
ADDWF 0x7C,F
ADDWF 0x7B,F
CLRW ; Rensar ut W-registret.
; Själva "LED-blinkandet"
Lolboll
BCF PORTC,0
BCF PORTC,1
BSF PORTC,2 ; sätter på LED;en vid C2
goto Delay
nasta
BCF PORTC,2 ; borde stänga av LED...
BSF PORTC,1 ; Och sätta på nästa...
goto Annuendelay ; Om "goto nasta" sätts efter att C1 har gjorts till output och man är tillbaka vid register 0, lyers LED två från vänster som planerat...
BCF PORTC,1 ; borde stänga av LED;en efter delay...
Tranbär
goto Mesta
Mesta
BCF PORTC,1
BSF PORTC,0 ; Och sätta på nästa...
goto Forsening ; Om "goto nasta" sätts efter att C1 har gjorts till output och man är tillbaka vid register 0, lyers LED två från vänster som planerat...
BCF PORTC,0 ; borde stänga av LED;en efter delay..
blåbär
goto Lolboll ; gå till starten av blinkandet igen
;----------------------------------------------------------;
;Delayloopar
Delay
DECFSZ 0x7C,F
goto Delaytva
goto nasta
Delaytva ; Förlänger delayen ännu mer
DECFSZ 0x7B,F
goto Delaytva
goto Delay
;--------------------------------------------------------;
;Delayloop för "nasta"
Annuendelay
Trötter
DECFSZ 0x7C,F
goto Prosit ; Födröj delayen lite mera genom att gå till pros.
goto Tranbär
Prosit ; Förlänger delayen ännu mer
DECFSZ 0x7B,F
goto Prosit ; Sackar ner 2000/loopning och sedan går till trötter
goto Trötter
;---------------------------------------------------------------------;
; Delay variant nr två / FÖR "Mesta" .
Forsening
Forseningett
DECFSZ 0x7C,F
goto Forseningtva
goto blåbär ; Tillbaka till blåbär // start efter Elayen
Forseningtva ; Förlänger delayen ännu mer
DECFSZ 0x7B,F
goto Forseningtva
goto Forseningett
;--------------------------------------------------------;
Wiiieeee! Erik går mot nya höjder!
Nu ska jag sova, lycklig och ännu mer taggad på att fortsätta lära mig!

God natt!
Re: Steget från en PICkit2 -> "Riktigt projekt"
Det är kul när grejorna fungerar
Lite av samma känslosvall som infann sig på julafton när man var liten. Det är inte så många saker som berör på det viset när man blir äldre.
Vet inte om jag förstår det där rätt med Tranbär och blåbär, men labels med svenska tecken bör du nog undvika.

Vet inte om jag förstår det där rätt med Tranbär och blåbär, men labels med svenska tecken bör du nog undvika.
Re: Steget från en PICkit2 -> "Riktigt projekt"
Några småsaker...
> ...och bara relevant, egenskriven kod nedan...
Nja, det saknas minst en *mycket* rellevant del i din kod-postning.
Bl.a hela CONFIG delen och rederna där PIC-modell specificeras.
Eftersom du ändå postade ganska mycket så finns det ju ingen
anledning att plocka bort det.
Eller generellt...
Om du inte vill posta hela koden, så redigera och *testkör* det som
du vill visa först, innan det postas. D.v.s att det som du postar fortfarande
är en komplett *körbar* kod. Bara om det gäller specifika frågor kring en
speciell instruktion eller liknande så fungerar det med några enstaka rader.
Att *inte* använda åäö i labels eller liknande är ganska självklart.
> BSF STATUS,RP0 ; till register 1, där TRISC finns
Först så är "register" helt fel.
Notera att på de flesta moderna processorer (där det finns 4 banker)
så är korrekt kommentar "till bank 1 eller 3". Om det blir 1 eller 3
beror på hur RP1 är satt vid detta tillfälle.
Generellt, sätt *aldrig* RP0/RP1 "för hand", använd BANKSEL.
> Gör C2 (C1, C0) till output
Heter RC2, RC1 och RC0 och inget annat.
> ADDLW D'2000
W är ett 8-bitars register och kan *aldrig* ha värdet D'2000 !!!
> goto Mesta
>
> Mesta
Lite onödigt...
> ...och bara relevant, egenskriven kod nedan...
Nja, det saknas minst en *mycket* rellevant del i din kod-postning.
Bl.a hela CONFIG delen och rederna där PIC-modell specificeras.
Eftersom du ändå postade ganska mycket så finns det ju ingen
anledning att plocka bort det.
Eller generellt...
Om du inte vill posta hela koden, så redigera och *testkör* det som
du vill visa först, innan det postas. D.v.s att det som du postar fortfarande
är en komplett *körbar* kod. Bara om det gäller specifika frågor kring en
speciell instruktion eller liknande så fungerar det med några enstaka rader.
Att *inte* använda åäö i labels eller liknande är ganska självklart.
> BSF STATUS,RP0 ; till register 1, där TRISC finns
Först så är "register" helt fel.
Notera att på de flesta moderna processorer (där det finns 4 banker)
så är korrekt kommentar "till bank 1 eller 3". Om det blir 1 eller 3
beror på hur RP1 är satt vid detta tillfälle.
Generellt, sätt *aldrig* RP0/RP1 "för hand", använd BANKSEL.
> Gör C2 (C1, C0) till output
Heter RC2, RC1 och RC0 och inget annat.
> ADDLW D'2000
W är ett 8-bitars register och kan *aldrig* ha värdet D'2000 !!!
> goto Mesta
>
> Mesta
Lite onödigt...

Re: Steget från en PICkit2 -> "Riktigt projekt"
Ska ta åt mig det ni har skrivit
, inte förvånad över att det är mycket fel, men blev bara så lycklig över att det funka haha ;D

Re: Steget från en PICkit2 -> "Riktigt projekt"
Ja, inget av det jag skrev hindrar sannolikt att det skulle fungera. 
Det jag pekade på är mer sådant som ger ett intryck av ett det var
mest tur att det fungerade, inte p.g.a av genomtänkt design...
En annan liten sak förresten... :
> CLRW ; Rensar ut W-registret.
Varför ?

Det jag pekade på är mer sådant som ger ett intryck av ett det var
mest tur att det fungerade, inte p.g.a av genomtänkt design...

En annan liten sak förresten... :
> CLRW ; Rensar ut W-registret.
Varför ?
Re: Steget från en PICkit2 -> "Riktigt projekt"
Ta det inte på fel sätt, vi försöker bara ge konstruktiv kritik.Ska ta åt mig det ni har skrivit