Assembler hjälp

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
DragonOrb
Inlägg: 381
Blev medlem: 16 oktober 2003, 21:57:19
Ort: Flen

Assembler hjälp

Inlägg av DragonOrb »

Hej

Håller på och ska börja experimentera med en PIC18F458.

Har fått lite problem med koden som jag gjort med hjälp av en bok från skolan.

Kod: Markera allt

; and test, ifall RB0 och RB1 är höga så blir RA0 låg och tänder dioden

list p=18f458
_CONFIG _CP_OFF&_WDT_OFF&PWRTE_ON&XT_OSC
org 0

Main: 
movlw 0e  ; flyttar talet 14 till arbetsregistret
tris portA ; flyttar talet 14 till portA´s register
bsf 5,status ; säter bit 0 i status-registret till logiskt hög
Loop: 
movlw 3 ; placerar talet i arbetsregistret
xorwf portB,0 ; gör en xor operation mellan arbetsregistret och portB
btfsc status,2  ; Testar bit 2 i status-registret och hoppar över nästa instruktion om denna är noll
goto on ; Kommer endast utföras om z-flaggan var satt när ovan exekverades
bsf 5,status ; samma som rad 4a
goto loop
on: bcf portA,0 ; gör porta RA0 låg, tänder dioden
goto Loop
; efter restet
org 1ff 
goto Main

end
Men jag hittade ingen information om vilket nummer statusregistret hade så jag skrev status.

MpLab IDE klagar väldigt mycket på denna kod

Kod: Markera allt

Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Program\Microchip\MPASM Suite\MPAsmWin.exe" /q /p18F458 "and test.asm" /l"and test.lst" /e"and test.err"
Warning[205] C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 3 : Found directive in column 1. (list)
Error[122]   C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 4 : Illegal opcode (_CP_OFF)
Warning[205] C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 5 : Found directive in column 1. (org)
Warning[203] C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 8 : Found opcode in column 1. (movlw)
Error[122]   C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 9 : Illegal opcode (portA)
Warning[203] C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 10 : Found opcode in column 1. (bsf)
Error[113]   C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 10 : Symbol not previously defined (status)
Warning[203] C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 12 : Found opcode in column 1. (movlw)
Warning[203] C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 13 : Found opcode in column 1. (xorwf)
Error[113]   C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 13 : Symbol not previously defined (portB)
Warning[203] C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 14 : Found opcode in column 1. (btfsc)
Error[113]   C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 14 : Symbol not previously defined (status)
Warning[203] C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 15 : Found opcode in column 1. (goto)
Warning[203] C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 16 : Found opcode in column 1. (bsf)
Error[113]   C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 16 : Symbol not previously defined (status)
Warning[203] C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 17 : Found opcode in column 1. (goto)
Error[113]   C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 17 : Symbol not previously defined (loop)
Warning[203] C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 19 : Found opcode in column 1. (bcf)
Error[113]   C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 19 : Symbol not previously defined (portA)
Warning[203] C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 20 : Found opcode in column 1. (goto)
Warning[205] C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 21 : Found directive in column 1. (org)
Error[157]   C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 21 : ORG at odd address
Warning[203] C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 22 : Found opcode in column 1. (goto)
Warning[205] C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 23 : Found directive in column 1. (end)
Error[173]   C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 24 : Source file path exceeds 62 characters (C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM)
Halting build on first failure as requested.
BUILD FAILED: Sun Jan 01 19:47:40 2006
Vad har jag gjort helt fel ?
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Inlägg av Kaggen »

Du måste tabba in alla assembler kommandon så dom inte står längst till vänster. Det är bara labels (som Main: och Loop:) som skall stå längst till vänster.

mvh Mats
DragonOrb
Inlägg: 381
Blev medlem: 16 oktober 2003, 21:57:19
Ort: Flen

Inlägg av DragonOrb »

Gjorde om koden lite

Kod: Markera allt

; and test, ifall RB0 och RB1 är höga så blir RA0 låg och tänder dioden

	list P=PIC18F458
	#include <PIC18F458.inc> 
	_CONFIG _CP_OFF&_WDT_OFF&PWRTE_ON&XT_OSC
	org 0

Main: 
	movlw 0e
	tris portA
	bsf 5,status
Loop: 
	movlw 3
	xorwf portB,0
	btfsc status,2
	goto on
	bsf 5,status
	goto loop
on: 
	bcf portA,0
	goto Loop
	org 1ff
	goto Main
end

Men jag får ändå felmedelandet

Kod: Markera allt

Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Program\Microchip\MPASM Suite\MPAsmWin.exe" /q /p18F458 "and test.asm" /l"and test.lst" /e"and test.err"
Error[105]   C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 4 : Cannot open file (Include File "PIC18F458.inc" not found)
Warning[207] C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 5 : Found label after column 1. (_CONFIG)
Error[122]   C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 5 : Illegal opcode (_CP_OFF)
Warning[207] C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 10 : Found label after column 1. (tris)
Error[122]   C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 10 : Illegal opcode (portA)
Error[113]   C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 11 : Symbol not previously defined (status)
Error[113]   C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 14 : Symbol not previously defined (portB)
Error[113]   C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 15 : Symbol not previously defined (status)
Error[113]   C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 17 : Symbol not previously defined (status)
Error[113]   C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 18 : Symbol not previously defined (loop)
Error[113]   C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 20 : Symbol not previously defined (portA)
Error[157]   C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 22 : ORG at odd address
Warning[205] C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 24 : Found directive in column 1. (end)
Error[173]   C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM 25 : Source file path exceeds 62 characters (C:\DOCUMENTS AND SETTINGS\MARCUS\MINA DOKUMENT\TEST\AND TEST.ASM)
Halting build on first failure as requested.
BUILD FAILED: Sun Jan 01 20:36:43 2006
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Cannot open file (Include File "PIC18F458.inc" not found)

Är MPLAB installerat korrekt ? Version ?`
Han du hitta filen för hand ?

> Found label after column 1. (_CONFIG)

Använd gärna det nya CONFIG direktivet (f.o.m MPLAB 7.1, tror jag) till PIC18 serien. Se i slutet av INC filen där det beskrivs (samt i README filen till MPASM).

> Found label after column 1. (tris)

Var i databladet hittade du instruktionen TRIS ?
Det finns ingen instruktion som heter så.

> Symbol not previously defined (status)

En gissning, du har inte slagit av "case sensitive" i MPLAB !?

> Found directive in column 1. (end)

Skall *inte* stå i pos 1.

> Source file path exceeds 62 characters

En god anledning till att *inte* köra i "Absolute Mode" !! :-)
Vissa program som används i Absolute Mode klarar inte längre
paths än 62 tecken. Eftersom Absolute Mode är lite "Hedenhös"
i dag, så sker det ingen utveckling av dessa delar från Microship...

Kör "Relocatable Mode".

Se för övrigt : http://www.jescab.se/Rellocmode.html
DragonOrb
Inlägg: 381
Blev medlem: 16 oktober 2003, 21:57:19
Ort: Flen

Inlägg av DragonOrb »

tack så mycket..
Jag har läst en bok jag lånade från skolan, den är gjord för PIC16C5x så den är lite omodern. Lärde mig mera från ditt inlägg än jag gjort från denna bok ungefär :)

Nu har jag kommit igång lite, ialafall. Har du någon länk till lite exempelkoder ? Dom som fanns på microchips hemsida var lite för advancerade.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Tyvärr finns det inte mycket material till rimligt moderna kretsar.
På min "to-do" lista finns att lägga upp lite exempel och "mallar"
på min web, men har inte hunnit än...
Skriv svar