ASM för svårt för mig...

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Jag vill också bättre på min inläggsstatistik här:
OM du vill använda en form av högnivåspråk vill jag avråda från BASIC och dess varianter, ta C, Pascal eller annat vettigt.

Men just PIC är effektivast med ASM, snabblärt och enkel.

Och databladet för den grej man håller på med är livsviktig, på den Fujitsu processor jag använder mycket är hårdvarumanualen på 564 sidor, programmeringsmanualen på 336 och sedan är det lite addendum, application notes osv.

Gissa varför jag köpte en laserskrivare som kan skriva dubbelsidigt.....
Användarvisningsbild
Logan
Inlägg: 630
Blev medlem: 5 januari 2005, 21:31:53
Ort: Jönköping
Kontakt:

Inlägg av Logan »

sodjan: ok ska läsaigenom det så se om det kommer lite nya frågor..
Jo en redan nu. Måste Wisp628 vara inkopplad efter att man har skickat över koden? För min blik a led funkar bra så länge den gula kablen är på MCRL.

Hittade vad felet var: :roll:
This pin is used to erase the memory locations inside the PIC (i.e. when we want to re-program it). In normal use it is connected to the positive supply rail.

Icecap: Lite och läsa då :P Jag har jobbat mycket med C men vad för kompelator ska jag använda?
Senast redigerad av Logan 26 augusti 2005, 16:53:04, 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 »

Ja, Wisp628 kan vara inkopplad efter att koden är överskickad.
Wisp628 sätter MCLR "hög" (så att processorn körs) och övriga
kablar i högimpedansläge, så i princip kopplas de bort.

Det är det som är finessen med ICSP (In Curcuit Serial Programming).

Om du vill köra utan Wisp628 inkopplad, så gäller det
som sägs i datablad om MCLR och enentuella andra pinnar.
Normalt sätt finns det ingen anledning att koppla bort Wisp628'an
innan allt är klart och fungerar som det ska.

Sätt ett 10 kohm motstånd mellan MCLR och +5V, så spelar det ingen
roll om du kör med eller utan Wisp628 ansluten...
Maalobs
Inlägg: 1304
Blev medlem: 3 februari 2005, 14:35:15
Ort: Stockholm

Inlägg av Maalobs »

Icecap skrev:Och databladet för den grej man håller på med är livsviktig, på den Fujitsu processor jag använder mycket är hårdvarumanualen på 564 sidor, programmeringsmanualen på 336 och sedan är det lite addendum, application notes osv.

Gissa varför jag köpte en laserskrivare som kan skriva dubbelsidigt.....
Men Ctrl-F funkar ju inte på papper...
När man väl har vant sig av från pappersbläddrandet är approachen med omedelbar fritextsökning överlägsen.
Tycker jag.

Undantaget är rent utbildningsmaterial när man går på kurser, då måste man ha bok, så man kan anteckna lärarens smarta kommentarer och tillägg i marginalerna...
Användarvisningsbild
lgrfbs
Inlägg: 7310
Blev medlem: 28 januari 2005, 15:48:53
Ort: X-län
Kontakt:

Inlägg av lgrfbs »

Logan skrev:sodjan: ok ska läsaigenom det så se om det kommer lite nya frågor..
Jo en redan nu. Måste Wisp628 vara inkopplad efter att man har skickat över koden? För min blik a led funkar bra så länge den gula kablen är på MCRL.

Hittade vad felet var: :roll:
This pin is used to erase the memory locations inside the PIC (i.e. when we want to re-program it). In normal use it is connected to the positive supply rail.

Icecap: Lite och läsa då :P Jag har jobbat mycket med C men vad för kompelator ska jag använda?
Kolla högnivås språk för pic C, Pascal, Basic tror att C & Pascal
har stöd för inlineASM så att man kan programmera ASM i själva
högnivå språket.
Användarvisningsbild
Logan
Inlägg: 630
Blev medlem: 5 januari 2005, 21:31:53
Ort: Jönköping
Kontakt:

Inlägg av Logan »

Hittade en mycket bättre pic sida
http://www.mstracey.btinternet.co.uk/pi ... icmain.htm

Läste igenom de första sidorna och kan nu snart gör min egen blink a led :P
och databladet på var allt låg
Men nu kommer det till att jag använder en 10Hz kristall med, och där stog det inget om hur man stälde in det.

Men iallafall så har jag gjort denna kod som ska tända pinne 2

Kod: Markera allt

;****Ställer in Constants**** 

STATUS equ 03h
TRISA equ 85h
PORTA equ 05h

;****Ställer in portarna**** 

	bsf STATUS,5
	movlw 00h
	movwf TRISA
	bcf STATUS,5

;****Startar programet**** 

Start movlw 02h
	movwf PORTA
	goto Start

;****Avlutar programet****
End

Får dessa fel:

Make: The target "C:\PIC\Kod\led.o" is out of date.
Executing: "C:\Program\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F877A "led.asm" /l"led.lst" /e"led.err" /o"led.o" /c-
Error[152] C:\PIC\KOD\LED.ASM 9 : Executable code and data must be defined in an appropriate section
Error[152] C:\PIC\KOD\LED.ASM 10 : Executable code and data must be defined in an appropriate section
Message[302] C:\PIC\KOD\LED.ASM 11 : Register in operand not in bank 0. Ensure that bank bits are correct.
Error[152] C:\PIC\KOD\LED.ASM 11 : Executable code and data must be defined in an appropriate section
Error[152] C:\PIC\KOD\LED.ASM 12 : Executable code and data must be defined in an appropriate section
Error[150] C:\PIC\KOD\LED.ASM 16 : Labels must be defined in a code or data section when making an object file
Error[152] C:\PIC\KOD\LED.ASM 16 : Executable code and data must be defined in an appropriate section
Error[152] C:\PIC\KOD\LED.ASM 17 : Executable code and data must be defined in an appropriate section
Error[151] C:\PIC\KOD\LED.ASM 18 : Operand contains unresolvable labels or is too complex
Error[152] C:\PIC\KOD\LED.ASM 18 : Executable code and data must be defined in an appropriate section
Warning[205] C:\PIC\KOD\LED.ASM 21 : Found directive in column 1. (END)
Halting build on first failure as requested.
BUILD FAILED: Fri Aug 26 18:18:26 2005
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> "Hittade en mycket bättre pic sida"

Bättre än vadå ?

Jag har kollat runt lite, och tyvärr är den inget vidare, vilket sysns på din kodsnutt du har lagt med. Så snabbt går det att lära sig dålig kodning ! :-)
Jag har lagt in lite komentarer nedan.

> "och databladet på var allt låg"

Kan du skriva om det så att går att förstå ?

> "jag använder en 10Hz kristall"

Tror jag inte. 10 Mhz kanske...

> "och där stog det inget om hur man stälde in det."

Var är "där" ? På sidan du hittade eller i databladet ?

Och nu äöver till din kod :

> "TRISA equ 85h "

Alla SFRs är definierade i den processor specifika inklude filen. T.ex för 16F84A (fast man ska inte använda den) heter den P16F84A.INC. Definierade aldrig upp register själv med EQU !

Felen nedan beror på att du försöker bygga en "absolute mode" kod i "relocatable mode". Du har alltså lagt till en LNK fil i ditt projekt. Du kan antingen plocka bort LNK filen från projektet, eller (bättre!) skriva koden rätt.

Ditt exempel nedan skulle t.ex kunna se ut så här :

Kod: Markera allt

            list    p=16F877A
#include    "p16f877a.inc"

 __config   _cp_off & _debug_off & _wrt_off & _cpd_off & _boden_off & _pwrte_off & _wdt_off & _hs_osc
 
main  code

   bsf STATUS, RP0  ; Till Bank 1
   movlw 00h
   movwf TRISA      ; Hela PORTA = output.
   bcf STATUS, RP0  ; Tillbaka till Bank 0

   bsf PORTA, 2     ; "Sätt" bit 2 i PORTA.
   
loop
   goto loop        ; Loop..........

   end
Bygger OK i MPLAB, men naturligtsvis inte testat på hårdvaran...
Senast redigerad av sodjan 26 augusti 2005, 20:05:48, redigerad totalt 1 gång.
Användarvisningsbild
Logan
Inlägg: 630
Blev medlem: 5 januari 2005, 21:31:53
Ort: Jönköping
Kontakt:

Inlägg av Logan »

Okej, kanske det inte var den bästa sida då...
Det jag menade med "och databladet på var allt låg" eftersom i den kod jag skrev så skulle man sätta att STATUS equ 03h och då kollade jag upp i databladet för PIC om det var 03h på STATUS.
10 Mhz Var det ja men bra att du förstog vad jag menade i allafall.

Vissa saker jag inte förstog i koden:
1. "__config _cp_off & _pwrte_off & _wdt_off & _hs_osc"
2. RP0

Testade koden men fick lite fel, tror det beror på att den inte hittar "p16f877a.inc"

Make: The target "C:\PIC\Kod\test.o" is out of date.
Executing: "C:\Program\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F877A "test.asm" /l"test.lst" /e"test.err" /c-
Warning[205] C:\PIC\KOD\TEST.ASM 1 : Found directive in column 1. (LIST)
Error[105] C:\PIC\KOD\TEST.ASM 3 : Cannot open file (Include File "16F877a.inc" not found)
Error[113] C:\PIC\KOD\TEST.ASM 5 : Symbol not previously defined (_CP_OFF)
Error[113] C:\PIC\KOD\TEST.ASM 5 : Symbol not previously defined (_PWRTE_OFF)
Error[113] C:\PIC\KOD\TEST.ASM 5 : Symbol not previously defined (_WDT_OFF)
Error[113] C:\PIC\KOD\TEST.ASM 5 : Symbol not previously defined (_HS_OSC)
Error[149] C:\PIC\KOD\TEST.ASM 7 : Directive only allowed when generating an object file
Error[113] C:\PIC\KOD\TEST.ASM 9 : Symbol not previously defined (STATUS)
Error[113] C:\PIC\KOD\TEST.ASM 9 : Symbol not previously defined (RP0)
Error[113] C:\PIC\KOD\TEST.ASM 11 : Symbol not previously defined (TRISA)
Error[113] C:\PIC\KOD\TEST.ASM 12 : Symbol not previously defined (STATUS)
Error[113] C:\PIC\KOD\TEST.ASM 12 : Symbol not previously defined (RP0)
Error[113] C:\PIC\KOD\TEST.ASM 14 : Symbol not previously defined (PORTA)
Halting build on first failure as requested.
BUILD FAILED: Fri Aug 26 19:49:46 2005
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> "sätta att STATUS equ 03h"

Just det, det är det man inte ska göra !

> "p16f877a.inc"

OK, jag fick för mig att det var en F84A som du byggde för.
Jag har ändrat till exemplet i förra inlägget.

> "1. "__config _cp_off & _pwrte_off & _wdt_off & _hs_osc""

OBS ! Ändrad till 16F877A i min kod nedan !

Se : CONFIG delen i databladet och slutet på P16F877A.INC för förklaringar.

> "2. RP0"

Se beskrivningen av STATUS registret i databladet och RP0 i P16F877A.INC.

> "Warning[205] C:\PIC\KOD\TEST.ASM 1 : Found directive in column 1. (LIST)"

"list" skall inte stå i col 1, kolla din kod !
Resten är nog bara följdfel...
Användarvisningsbild
Logan
Inlägg: 630
Blev medlem: 5 januari 2005, 21:31:53
Ort: Jönköping
Kontakt:

Inlägg av Logan »

Din ändring hjälpte inte så mycket samma fel som förut, men nu hittar den inc filen iallafall.
Vad menar du med list saken?
Det står ju så i din kod :?
list p=16F877A
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Jo, men "list" skall inte stå först på raden, utan en bit in.
Minst ett mellenslag, men man brukar försöka hålla saker rakt och snyggt.

Det är lite konstigt, när jag tittar på mitt kodexempel här ovan, så ligger "list" en bra bit in på raden. Gör det inte det i din browser ?

De rader som skall ligga först på sin rad i exemplet är "#include", "main" och "loop", resten måste vara minst ett mellanslag in på raden (men oftast lägger med det en bit in så att det blir rakt och snyggt).

Att man har detta fel ser man på att man får "Warning[205]" som du fick. Oftast ger detta en massa följdfel, som du också fick.
Användarvisningsbild
Logan
Inlägg: 630
Blev medlem: 5 januari 2005, 21:31:53
Ort: Jönköping
Kontakt:

Inlägg av Logan »

Jo det gör den, kör med ff. Men har det betydelse mer än utsendet och lättläsheten?
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Det som börjar i första bokstav på en rad uppfattar kompilern som ett label, är det minst 1 blanksteg uppfattas det som kommandon.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> "Din ändring hjälpte inte så mycket samma fel som förut, men nu hittar den inc filen iallafall. "

Någonting stämmer inte här.

Om MPASM nu *hittar* INC filen, så borde du inte få "samma fel som förut", kan du förtydliga ! T.ex alla "Error[113]". Visa vilka fel du får *nu*.

> "Det som börjar i första bokstav på en rad uppfattar kompilern som ett label, är det minst 1 blanksteg uppfattas det som kommandon."

Det är lite rörigt...

Directivet "list" t.ex måste stå minst ett steg in på raden.
Directivet "#include" verkar kunna stå både först och längre in på raden.
Vanligtsvis ser man direktiven #include, #define och #undefine först på raden...

Jag ser ingen tydlig logik i det, men om bara fel- och varnings-meddelanderna försvinner så är väll allt bra... :-) :-)
Användarvisningsbild
Logan
Inlägg: 630
Blev medlem: 5 januari 2005, 21:31:53
Ort: Jönköping
Kontakt:

Inlägg av Logan »

Hej igen, nu har jag testat mig fram men får det inte att funka även med mellanslag och allt :(

Detta får jag som fel, samma som förut....

Kod: Markera allt

Make: The target "C:\PIC\Kod\3321.o" is out of date.
Executing: "C:\Program\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F877A "3321.asm" /l"3321.lst" /e"3321.err"
Error[113]   C:\PIC\KOD\3321.ASM 5 : Symbol not previously defined (_cp_off)
Error[113]   C:\PIC\KOD\3321.ASM 5 : Symbol not previously defined (_debug_off)
Error[113]   C:\PIC\KOD\3321.ASM 5 : Symbol not previously defined (_wrt_off)
Error[113]   C:\PIC\KOD\3321.ASM 5 : Symbol not previously defined (_cpd_off)
Error[113]   C:\PIC\KOD\3321.ASM 5 : Symbol not previously defined (_boden_off)
Error[113]   C:\PIC\KOD\3321.ASM 5 : Symbol not previously defined (_pwrte_off)
Error[113]   C:\PIC\KOD\3321.ASM 5 : Symbol not previously defined (_wdt_off)
Error[113]   C:\PIC\KOD\3321.ASM 5 : Symbol not previously defined (_hs_osc)
Error[149]   C:\PIC\KOD\3321.ASM 7 : Directive only allowed when generating an object file
Message[302] C:\PIC\KOD\3321.ASM 11 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Halting build on first failure as requested.
BUILD FAILED: Sat Aug 27 21:20:50 2005
Skriv svar