skilnad PIC-Basic Stamp
> samt komando lista där det står vad alla komandon betyder?
Jag antar att du menar *instruktioner* !?
Som andra har svarat så finns det en lista i *varje* datablad.
Sen finns det en *bättre* lista i "Midrange Reference Manual".
Gå till www.microchip.com.
Klicka på "Technical Documentation" under "Design".
Klicka på "Reference Manuals" i menyn under "Other Documents".
Leta upp "Instruction Set - PICmicro Mid-Range MCU Family"
Ladda ner !
Även en del andra delar av Ref Manual är bra, du kan plocka ner
det i delar (kapitel) eller hela ("Complete Mid-Range Reference Manual").
Sen finns det ytterligare direktiv som MPASM förstår som styr
assembleringen på olika sätt. T.ex för att sätta CONFIG bitarna samt
en del annan. Kolla upp "directives" in MPASM/MPLINK manualen (eller
via HELP filen i MPLAB). Ett som du bör lära dig omgående är BANKSEL,
det kommer att bespara dig många vanliga nybörjarmisstag...
> om "labeln" start ska stå först i programet, kan den då stå på samma rad som (i detta fallet) "wovlw"?
Ja, det kan den, men det blir "snyggare" om den står på en egen rad,
och det blir mindre stök om du ska lägga till en ny instruktion direkt efter
labeln.
> bara två frågor angående programet nedan...
Glöm att du har sett det där programmet !!! Skit program, så där ska det
*absolut* inte skrivas. Använd korrekta symboler för register och bit-namn.
Jag antar att du menar *instruktioner* !?
Som andra har svarat så finns det en lista i *varje* datablad.
Sen finns det en *bättre* lista i "Midrange Reference Manual".
Gå till www.microchip.com.
Klicka på "Technical Documentation" under "Design".
Klicka på "Reference Manuals" i menyn under "Other Documents".
Leta upp "Instruction Set - PICmicro Mid-Range MCU Family"
Ladda ner !
Även en del andra delar av Ref Manual är bra, du kan plocka ner
det i delar (kapitel) eller hela ("Complete Mid-Range Reference Manual").
Sen finns det ytterligare direktiv som MPASM förstår som styr
assembleringen på olika sätt. T.ex för att sätta CONFIG bitarna samt
en del annan. Kolla upp "directives" in MPASM/MPLINK manualen (eller
via HELP filen i MPLAB). Ett som du bör lära dig omgående är BANKSEL,
det kommer att bespara dig många vanliga nybörjarmisstag...

> om "labeln" start ska stå först i programet, kan den då stå på samma rad som (i detta fallet) "wovlw"?
Ja, det kan den, men det blir "snyggare" om den står på en egen rad,
och det blir mindre stök om du ska lägga till en ny instruktion direkt efter
labeln.
> bara två frågor angående programet nedan...
Glöm att du har sett det där programmet !!! Skit program, så där ska det
*absolut* inte skrivas. Använd korrekta symboler för register och bit-namn.
vad menar du? att jag tex inte ska döpa om att jag inte T.EX ska döpa om "85h" till "TRISA"? i såfall varför inte?Glöm att du har sett det där programmet !!! Skit program, så där ska det
*absolut* inte skrivas. Använd korrekta symboler för register och bit-namn.

Kaggen: det var ett bra förslag funkar ju bra lätt o snapt ( om det är större tal)..
> en fråga till kan man "räkna" om HEX tal till Binära tal???
I vilket läge behöver du göra det ? Om det är för konstanter
i koden, så kan du direkt ange dom på "rätt" sätt, vad det nu är.
Decmalt, hex eller binärt.
> va??? om man ska ändra "TRISA" måste man inte då skriva "85h"???
SJÄLVKLART INTE !!
Du ska skriva "TRISA" och inget annat....
> när man ska ställa in TRISA får man väl skriva 7 sifror istellet för 5 som det var här?
TRISA är 8 bitar i båda processorerna.
Förstår inte alls vad du menar, kan du ge ett par exempel ?
Den lilla kodsnutt du hade med bör se ut ungefr så här :
I vilket läge behöver du göra det ? Om det är för konstanter
i koden, så kan du direkt ange dom på "rätt" sätt, vad det nu är.
Decmalt, hex eller binärt.
> va??? om man ska ändra "TRISA" måste man inte då skriva "85h"???
SJÄLVKLART INTE !!
Du ska skriva "TRISA" och inget annat....
> när man ska ställa in TRISA får man väl skriva 7 sifror istellet för 5 som det var här?
TRISA är 8 bitar i båda processorerna.
Förstår inte alls vad du menar, kan du ge ett par exempel ?
Den lilla kodsnutt du hade med bör se ut ungefr så här :
Kod: Markera allt
banksel trisa
movlw h'00'
movwf trisa
banksel porta
Start
movlw h'02'
movwf porta
movlw h'00'
movwf porta
goto Start
vad jag menar med 7 istället för fem är om man inte skriver i hextal utan i binärt så skrev han:
MOVLW b'00011'
eftersom 16F628A har 7 portar istelet för 5 som denna har får man skriva följande (om man ska ha IO 0 & 1 som input):
MOVLW b'0000011'
eller ha jag fattat fel?
jag hänger med på att man ska skriva TRISA direkt då istellet... men banksel?? är det inte corekt med BSF & BCF?? tycker att det är det som står i alla exempel i data bladet osså.. eller har jag missförståt något?
MOVLW b'00011'
eftersom 16F628A har 7 portar istelet för 5 som denna har får man skriva följande (om man ska ha IO 0 & 1 som input):
MOVLW b'0000011'
eller ha jag fattat fel?
jag hänger med på att man ska skriva TRISA direkt då istellet... men banksel?? är det inte corekt med BSF & BCF?? tycker att det är det som står i alla exempel i data bladet osså.. eller har jag missförståt något?
Skriv alltid ut det med samma antal bitar som registret har, d.v.s 8 !
> eftersom 16F628A har 7 portar
*2* portar, PORTA och PORTB.
> men banksel?? är det inte corekt med BSF & BCF??
BANKSEL är bättre än att göra bcf/bsf direkt på bank-bitarna.
Se BANKSEL i MPASM manualen.
> eller har jag missförståt något?
Nej, igentligen inte. Jag bara visar på ett bättre och säkrare sätt att göra det.
Säg inte imot hela tiden !!
Ta och kolla upp det som vi säger och visar på istället...
> eftersom 16F628A har 7 portar
*2* portar, PORTA och PORTB.
> men banksel?? är det inte corekt med BSF & BCF??
BANKSEL är bättre än att göra bcf/bsf direkt på bank-bitarna.
Se BANKSEL i MPASM manualen.
> eller har jag missförståt något?
Nej, igentligen inte. Jag bara visar på ett bättre och säkrare sätt att göra det.
Säg inte imot hela tiden !!

Ta och kolla upp det som vi säger och visar på istället...
jag menade inte portar
menade att det fins 7st IO pinar på PORTA.
så om jag vill ha IO 0 & 1 som input och jag har 5st IO pinnar på PORTA ska jag skriva följande:
vilket betyder att där är tre nollor som betyder "ABSELUT INGENTING"???
(efter som jag har 5st IO pinar och 8st sifror)
har jag fattat rätt??
//Daniel

du menar att han en en gån har gjort fel i sina toturial?Skriv alltid ut det med samma antal bitar som registret har, d.v.s 8 !
så om jag vill ha IO 0 & 1 som input och jag har 5st IO pinnar på PORTA ska jag skriva följande:
Kod: Markera allt
banksel trisa
movlw b'00000011'
movwf trisa
banksel porta
(efter som jag har 5st IO pinar och 8st sifror)
har jag fattat rätt??
//Daniel
> du menar att han en en gån har gjort fel i sina toturial?
Det kanske fungerar, men det är varken snyggt eller tydligt.
Och jag skulle säga att i en *tutorial* så är det "fel"...
> vilket betyder att där är tre nollor som betyder "ABSELUT INGENTING"???
Ja, om databladet säger det så...
Alltså, i princip alla register har 8 bitar. En del kan vara "not used"
eller liknande. Men för att göra det helt tydligt vilka bitar man
hanterar så är det tydligast om man alltid har med 8 bitar i sin kod.
Sen kanske en del av dom inte används, men vad gör det ??
Ibland kan det stå att en del bitar inte används "just nu", men för att
koden inte ska smälla av i framtida processorer så kan det ibland stå
att man i alla fall alltid ska programmera dom som "0" eller "1". Igen,
databladet har alla detaljer...
Det kanske fungerar, men det är varken snyggt eller tydligt.
Och jag skulle säga att i en *tutorial* så är det "fel"...
> vilket betyder att där är tre nollor som betyder "ABSELUT INGENTING"???
Ja, om databladet säger det så...
Alltså, i princip alla register har 8 bitar. En del kan vara "not used"
eller liknande. Men för att göra det helt tydligt vilka bitar man
hanterar så är det tydligast om man alltid har med 8 bitar i sin kod.
Sen kanske en del av dom inte används, men vad gör det ??
Ibland kan det stå att en del bitar inte används "just nu", men för att
koden inte ska smälla av i framtida processorer så kan det ibland stå
att man i alla fall alltid ska programmera dom som "0" eller "1". Igen,
databladet har alla detaljer...
Det fungerar förvisso att skriva t.ex. movlw b'1000000' eftersom assemblern automatiskt lägger in de nollor som saknas till vänster. Men det är svårare att överskåda vilken bit som egentligen sätts. Ser man ovanstående kodrad skulle man kunna tro att bit 7 blir satt eftersom det ligger en etta längst till vänster. Dock är det bit 6 som sätts eftersom det bara är 7 tecken. Därför är det lättare att läsa koden om man alltid skriver alla 8 bitar.
Senast redigerad av bearing 3 november 2006, 17:10:26, redigerad totalt 1 gång.