Pic
- tecno
- Inlägg: 27252
- Blev medlem: 6 september 2004, 17:34:45
- Skype: tecnobs
- Ort: Sparreholm, Södermanland N 59° 4.134', E 16° 49.743'
- Kontakt:
Nu är det dags att gräva fram databladen och kolla. Du har väl databladet på din PIC tillgänglig för att läsa vad som gäller. Nedan länk till Microchip var du kan ladda ner alla databladen.
http://microchip.com/stellent/idcplg?Id ... &nodeId=74
http://microchip.com/stellent/idcplg?Id ... &nodeId=74
> Är dom lika då 877A och min870?
För detta exemepl, ja, i princip...
Här är ett assembler exempel skrivet för och testat på en 16F870 :
Om du har frågor så är det bara att återkomma !!!
Men först är det databladet och manualen till MPASM som gäller,
så klart...
Notera att det är lite hastigt ihopkommet, och exemplet tar ett par
"genvägar", t.ex så bör man spara "context" i sin ISR, se databladet
för detaljer.
Ber också om ursäkt för språkblandingen...
För att bygga projektet :
- skapa ett nytt projekt.
- kopiera koden till katalogen.
- lägg till koden till "source files"
- Lägg till LNK filen till "Linker Scripts".
- Klicka för "case unsensitive" i projekt->options->MPASM
För detta exemepl, ja, i princip...
Här är ett assembler exempel skrivet för och testat på en 16F870 :
Kod: Markera allt
;**********************************************************************
; Enkelt blink-a-led, 16F870. *
; *
;**********************************************************************
; Files required: P16F870.INC *
; 16F870.LNK *
; *
;**********************************************************************
list p=16f870
#include <p16f870.inc>
__CONFIG _CP_OFF & _DEBUG_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _HS_OSC & _LVP_OFF & _CPD_OFF & _WRT_ENABLE_OFF
RESET_VECTOR CODE 0x000 ; processor reset vector
goto start ; go to beginning of program
INT_VECTOR CODE 0x004 ; interrupt vector location
goto isr_routine ; goto main interrupt service routine.
MAIN CODE
start
banksel adcon1
movlw h'06'
movwf adcon1 ; Stäng av ADC.
banksel trisa
clrf trisa
clrf trisb
clrf trisc ; Alla pinnar = utgångar.
banksel t1con
movlw b'00110001'
movwf t1con ; Se datablad...
banksel pie1
movlw b'00000001'
movwf pie1 ; Enable avbrott från TMR1.
banksel intcon
bsf intcon, peie
bsf intcon, gie ; Enable avbrott...
loop
goto loop ; Vänta på avbrott...
ISR_ROUTINE CODE
isr_routine
banksel portb
comf portb ; Blinka !!
banksel pir1
bcf pir1, tmr1if ; clear avbrotts flagga.
retfie
END
Men först är det databladet och manualen till MPASM som gäller,
så klart...

Notera att det är lite hastigt ihopkommet, och exemplet tar ett par
"genvägar", t.ex så bör man spara "context" i sin ISR, se databladet
för detaljer.
Ber också om ursäkt för språkblandingen...
För att bygga projektet :
- skapa ett nytt projekt.
- kopiera koden till katalogen.
- lägg till koden till "source files"
- Lägg till LNK filen till "Linker Scripts".
- Klicka för "case unsensitive" i projekt->options->MPASM
- JimmyAndersson
- Inlägg: 26578
- Blev medlem: 6 augusti 2005, 21:23:33
- Ort: Oskarshamn (En bit utanför)
- Kontakt:
He he,
det verkar *lite* tidigt att fråga efter kodexemempel, du har ganska mycket att läsa på innan det är meningsfullt...
Jag utgår från att du har hämtat och installerat MPLAB !? :
http://www.microchip.com/stellent/idcpl ... t=SW007002
Hämta och studera även :
http://ww1.microchip.com/downloads/en/D ... 33014J.pdf (MPASM/MPLINK user guide)
Det finns en intro-tråd här i forumet också :
http://www.elektronikforumet.com/forum/ ... php?t=3552
> MPASM är en del av MPLAB IDE...
Hm, om man ska vara korrekt, så installeras MPASM samtidigt som MPLAB,
med det är igentligen inte en *del* av MPLAB. MPLAB anropar MPASM
(och MPLINK) när man klickar "Build", men det går precis lika bra att
köra MPASM/MPLINK direkt, t.ex om man använder en annan program-
editor än MPLAB (Emacs, UltraEdit, whatever...)
Så det är separata (men integrerade) verktyg.
det verkar *lite* tidigt att fråga efter kodexemempel, du har ganska mycket att läsa på innan det är meningsfullt...

Jag utgår från att du har hämtat och installerat MPLAB !? :
http://www.microchip.com/stellent/idcpl ... t=SW007002
Hämta och studera även :
http://ww1.microchip.com/downloads/en/D ... 33014J.pdf (MPASM/MPLINK user guide)
Det finns en intro-tråd här i forumet också :
http://www.elektronikforumet.com/forum/ ... php?t=3552
> MPASM är en del av MPLAB IDE...
Hm, om man ska vara korrekt, så installeras MPASM samtidigt som MPLAB,
med det är igentligen inte en *del* av MPLAB. MPLAB anropar MPASM
(och MPLINK) när man klickar "Build", men det går precis lika bra att
köra MPASM/MPLINK direkt, t.ex om man använder en annan program-
editor än MPLAB (Emacs, UltraEdit, whatever...)
Så det är separata (men integrerade) verktyg.
Har du en vägbeskrivning ? 
Men, beskriv vad som är förvirrande så reder vi säkert ut det.
En sak kan vara val av "språk". Om du frågar *mig* så tycker jag att
man ska starta med ASM tills man tycker att man har "greppat" hur
PIC arkitekturen ser ut och hur den fungerar.
Sedan kan man göra som man vill, stanna med ASM därför att
man gillar den totala kontroll man får, eller köra C eller Basic
för att man har bråttom och inte tycker att man behöver ha
kontroll över allting...

Men, beskriv vad som är förvirrande så reder vi säkert ut det.
En sak kan vara val av "språk". Om du frågar *mig* så tycker jag att
man ska starta med ASM tills man tycker att man har "greppat" hur
PIC arkitekturen ser ut och hur den fungerar.
Sedan kan man göra som man vill, stanna med ASM därför att
man gillar den totala kontroll man får, eller köra C eller Basic
för att man har bråttom och inte tycker att man behöver ha
kontroll över allting...

1:Börja med MPLAB för att bygga?
Jag trodde man kunde koda, kompilera och köra direkt i Micro Basic
2:Jag tänkte programera i Basic för det har jag lite vana utav iomed att jag har programmerat i VB.
ASM är inte det mycket svårare?
När jag installerar MicroBasic så frågar den om vad som ska installeras:
PicFlash 2,0
PicFlash 1,0
Vad är det?
Jag har en polare som kör MicroPascal och han köpte en programmerare av dej Sodjan, Kan jan använda samma programvaror som han till min programerare från Elfa?
Isåfall så vore det bra för då kan jag köra samma språk som han och få hjälp IRL.
Jag trodde man kunde koda, kompilera och köra direkt i Micro Basic
2:Jag tänkte programera i Basic för det har jag lite vana utav iomed att jag har programmerat i VB.
ASM är inte det mycket svårare?
När jag installerar MicroBasic så frågar den om vad som ska installeras:
PicFlash 2,0
PicFlash 1,0
Vad är det?
Jag har en polare som kör MicroPascal och han köpte en programmerare av dej Sodjan, Kan jan använda samma programvaror som han till min programerare från Elfa?
Isåfall så vore det bra för då kan jag köra samma språk som han och få hjälp IRL.
> Jag trodde man kunde koda, kompilera och köra direkt i Micro Basic
Jo, *OM* (och det är ett jäkla stort **OM** !!) man vill köra med Micro Basic !!!
En del (jag gissar några % av PIC användarna) gör det, betydligt fler (inkl
mig) skulle aldrig komma på tanken att använda Basic överhuvudtaget.
Du har/hade inte angivit några preferenser när det gäller språk, så
jag tyckte ett assembler exempel var bäst. Det fungerar alltid, miljön
är gratis och fungerar bra, och praktiskt taget *alla* som håller på med
PIC "förstår" assembler.
> Jag tänkte programera i Basic för det har jag lite vana utav iomed att jag har programmerat i VB.
En alldeles utmärkt anledning att undvika Basic på PIC !
"Plattformen" är så fundamentalt annorlunda så du kommer bara
att ställa till det med VB i tankarna...
*OM* du inte har kört lite assembler först så att du "kan" PIC, då
skulle du kanske kunna anpassa ditt sätt att programmera och inte
göra lika många tabbar.
> ASM är inte det mycket svårare?
Det svåra är att lära sig hur PIC processorerna (eller AVR eller någon annan
mikrokontroller) fungerar i grunden, inte att lära sig det ena eller det
andra språket. Och jag påstår att man lär sig PIC arkitekturen snabbare
om man kör assembler, i alla fall under ett tag (säg 6-12 månader, det
beror på hur snabbt man lär sig).
> När jag installerar MicroBasic så frågar den om vad som ska installeras:
> PicFlash 2,0
> PicFlash 1,0
> Vad är det?
Antagligen deras egen programmerare. Finns det ingen dokumentation ?
> Jag har en polare som kör MicroPascal och han köpte en programmerare
> av dej Sodjan, Kan jan använda samma programvaror som han till min
> programerare från Elfa?
Här är det lite oklart vad du menar med "programvaror" ?
Om du menar programvaran till själva *programmeraren*, så är det nej.
Din programerare och Wisp628 använder olika programvara på PC'n.
Om du menar *utvecklingsmiljön*, så är det ja.
Man måste skilja på utvecklingsmijön å ena sidan, och programmeraren å den andra sidan.
Utvecklingsmiljön (MPLAB, MicroBasic, PICBasic, whatever) skapar "HEX filer"
som innehåller maskinkoden i binär form (kodat i HEX).
Programmeraren ser sedan till att en HEX fil (oavsett hur den är skapad)
förs över till "the target PIC" som det brukar kallas. Alltså där
applikationen skall köras.
Wisp628 (med XWisp2) har ingen aning om varifrån HEX filen kommer !
Inte heller din programmerare med *sin* programvara.
> Isåfall så vore det bra för då kan jag köra samma språk som han och få hjälp IRL.
Här menar du utvecklingsmiljön, eller hur ?
Eller vad menar du med "samma språk" ? MicroPascal är inte det samma som MicroBasic...
Personligen tycker jag att det vore bättre om ni hjälper varandra
med assembler...

Jo, *OM* (och det är ett jäkla stort **OM** !!) man vill köra med Micro Basic !!!
En del (jag gissar några % av PIC användarna) gör det, betydligt fler (inkl
mig) skulle aldrig komma på tanken att använda Basic överhuvudtaget.
Du har/hade inte angivit några preferenser när det gäller språk, så
jag tyckte ett assembler exempel var bäst. Det fungerar alltid, miljön
är gratis och fungerar bra, och praktiskt taget *alla* som håller på med
PIC "förstår" assembler.
> Jag tänkte programera i Basic för det har jag lite vana utav iomed att jag har programmerat i VB.
En alldeles utmärkt anledning att undvika Basic på PIC !
"Plattformen" är så fundamentalt annorlunda så du kommer bara
att ställa till det med VB i tankarna...

*OM* du inte har kört lite assembler först så att du "kan" PIC, då
skulle du kanske kunna anpassa ditt sätt att programmera och inte
göra lika många tabbar.
> ASM är inte det mycket svårare?
Det svåra är att lära sig hur PIC processorerna (eller AVR eller någon annan
mikrokontroller) fungerar i grunden, inte att lära sig det ena eller det
andra språket. Och jag påstår att man lär sig PIC arkitekturen snabbare
om man kör assembler, i alla fall under ett tag (säg 6-12 månader, det
beror på hur snabbt man lär sig).
> När jag installerar MicroBasic så frågar den om vad som ska installeras:
> PicFlash 2,0
> PicFlash 1,0
> Vad är det?
Antagligen deras egen programmerare. Finns det ingen dokumentation ?
> Jag har en polare som kör MicroPascal och han köpte en programmerare
> av dej Sodjan, Kan jan använda samma programvaror som han till min
> programerare från Elfa?
Här är det lite oklart vad du menar med "programvaror" ?
Om du menar programvaran till själva *programmeraren*, så är det nej.
Din programerare och Wisp628 använder olika programvara på PC'n.
Om du menar *utvecklingsmiljön*, så är det ja.
Man måste skilja på utvecklingsmijön å ena sidan, och programmeraren å den andra sidan.
Utvecklingsmiljön (MPLAB, MicroBasic, PICBasic, whatever) skapar "HEX filer"
som innehåller maskinkoden i binär form (kodat i HEX).
Programmeraren ser sedan till att en HEX fil (oavsett hur den är skapad)
förs över till "the target PIC" som det brukar kallas. Alltså där
applikationen skall köras.
Wisp628 (med XWisp2) har ingen aning om varifrån HEX filen kommer !
Inte heller din programmerare med *sin* programvara.
> Isåfall så vore det bra för då kan jag köra samma språk som han och få hjälp IRL.
Här menar du utvecklingsmiljön, eller hur ?
Eller vad menar du med "samma språk" ? MicroPascal är inte det samma som MicroBasic...
Personligen tycker jag att det vore bättre om ni hjälper varandra
med assembler...


http://www.mikroelektronika.co.yu/engli ... icbook.htm
Har fått för mig att denna guide är skaplig.
Tyvärr behandlar den mest 16F84:an, sodjans favorit
Har fått för mig att denna guide är skaplig.
Tyvärr behandlar den mest 16F84:an, sodjans favorit

> OK var börjar jag om vi ska välja assambler?
Tja, "nätet" är väll aldrig helt fel. Dock finns det mycket skräp där också.
Här är en kille i US som har gjort en kurs på något
universitet. Ganska bra material, dock har de valt en gammal processor
(16F84A), men om man läser deras material och samtidigt "följer med"
i databladet för sin egen processor, så ger det sig nog. Snyggt material
är det i alla fall... : http://www.amqrp.org/elmer160/lessons/ .
Sedan finns det massor av kod uppdelat i olika kategorier på
www.piclist.com. Välj "PICList.com Source Code Library" från
förstabilden. Massor av kod, mycket skrivet av de bästa PIC
programerana world-wide. En del är *riktigt* avancerade, ifall
man är intresserad av algoritmer och avancerad matematik...
Mikroelektroniska's guide är nog inte heller helt fel, bara man minns
att även den är skriven för en gammal processor...
Så, det finns inte *ett* ställe att starta på.
Se gärna även "PICList.com PIC Beginners Checklist" på www.piclist.com
Se även : http://www.voti.nl/swp/index.html .
Höll på att glömma...
http://www.elektronikforumet.com/forum/index.php
Tja, "nätet" är väll aldrig helt fel. Dock finns det mycket skräp där också.
Här är en kille i US som har gjort en kurs på något
universitet. Ganska bra material, dock har de valt en gammal processor
(16F84A), men om man läser deras material och samtidigt "följer med"
i databladet för sin egen processor, så ger det sig nog. Snyggt material
är det i alla fall... : http://www.amqrp.org/elmer160/lessons/ .
Sedan finns det massor av kod uppdelat i olika kategorier på
www.piclist.com. Välj "PICList.com Source Code Library" från
förstabilden. Massor av kod, mycket skrivet av de bästa PIC
programerana world-wide. En del är *riktigt* avancerade, ifall
man är intresserad av algoritmer och avancerad matematik...

Mikroelektroniska's guide är nog inte heller helt fel, bara man minns
att även den är skriven för en gammal processor...
Så, det finns inte *ett* ställe att starta på.
Se gärna även "PICList.com PIC Beginners Checklist" på www.piclist.com
Se även : http://www.voti.nl/swp/index.html .
Höll på att glömma...
http://www.elektronikforumet.com/forum/index.php
