Sida 3 av 5
Postat: 2 november 2006, 20:56:02
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.
Postat: 2 november 2006, 23:04:02
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.
Postat: 3 november 2006, 08:40:18
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?

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)..
Postat: 3 november 2006, 08:41:42
av Icecap
TRISA är redan döpt om ju! Därför INC-filen!
Postat: 3 november 2006, 08:47:24
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?
Postat: 3 november 2006, 09:55:16
av Icecap
Men snälla! LÄS i filen och kolla innehållet!
Postat: 3 november 2006, 12:56:14
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
Postat: 3 november 2006, 13:18:38
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?
Postat: 3 november 2006, 13:54:42
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...
Postat: 3 november 2006, 16:26:13
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
Postat: 3 november 2006, 16:49:14
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...
Postat: 3 november 2006, 16:56:21
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.
Postat: 3 november 2006, 17:06:48
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...

Postat: 3 november 2006, 17:12:58
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.

Postat: 3 november 2006, 17:17:01
av sodjan
Japp, så vid närmare eftertanke så var ditt exempel riktigt bra !
