skilnad PIC-Basic Stamp

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Inlägg av Kaggen »

Ett tips är också att använda Windows Miniräknare/Kalkylator i avancerat läge. Där kan man omvandla mellan Hex, Dec, Binärt, Oktalt.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> 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.
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

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? :roll: det blir ju lättare att förstå...


Kaggen: det var ett bra förslag funkar ju bra lätt o snapt ( om det är större tal)..
Användarvisningsbild
Icecap
Inlägg: 26662
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

TRISA är redan döpt om ju! Därför INC-filen!
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

va??? om man ska ändra "TRISA" måste man inte då skriva "85h"???

en fråga till om man tar en picF628A istellet för pic16F84, är det nåt i prog.et eller kopplings skemat man behöver ändra? 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?
Användarvisningsbild
Icecap
Inlägg: 26662
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Men snälla! LÄS i filen och kolla innehållet!
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> 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 :

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
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

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?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

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...
Användarvisningsbild
squiz3r
Inlägg: 5424
Blev medlem: 5 september 2006, 20:06:22
Ort: Lund
Kontakt:

Inlägg av squiz3r »

jag menade inte portar :) menade att det fins 7st IO pinar på PORTA.
Skriv alltid ut det med samma antal bitar som registret har, d.v.s 8 !
du menar att han en en gån har gjort fel i sina toturial?

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 
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
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> 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...
bearing
Inlägg: 11677
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

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.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Jag tror att du har blandat ihop bit 7, 6 och 5...

Men i princip har du rätt, även om ditt exempel är fel... :-)
bearing
Inlägg: 11677
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Inlägg av bearing »

Oj, det var en nolla för lite, ändrat. Det är som sagt lätt att göra fel om man inte använder alla bitar. :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Japp, så vid närmare eftertanke så var ditt exempel riktigt bra ! :D :D
Skriv svar