asm problem

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
marcla
Inlägg: 311
Blev medlem: 19 juli 2006, 11:36:38
Ort: Gislaved

asm problem

Inlägg av marcla »

hej har försökt kompilera denna kod:

Kod: Markera allt

; File STEP508.ASM
; ... for PIC12C508A microcontroller
; Program to use PIC as a step and direction controller for a unipolar
; step motor.  Step and direction pins are GPIO-5, GPIO-3; GPIO_0, GPIO_1, GPIO_2, GPIO_4,  are ; the windings; in order (driven by NPN small sig transistors or MOSFETS)
; Steps on negative going edge of step pulse.

; CPU configuration
; 	(It's a 12C508A, Internal RC oscillator,
; 	watchdog timer off, power-up timer on)
	LIST   P=12C508A
	processor 12c508A
	include	  <p12c508A.inc>
;	__config  _IntRC_OSC & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF

; Declare variables

pattA	equ	H'0D'	;Current step pattern number (0-7) for axis A
lastA	equ	H'0E'   ;Last state of step pin on axis A (1 is high, 0 is low)
inport	equ	H'11'	;Value of port A when read (stored for later access)
temp	equ	H'12'

#DEFINE STEP	inport,5	; Step pulse input
#DEFINE DIR	inport,3	; Direction Input

OPMASK	EQU	B'11000000'
IOMASK	EQU	B'00101000'	; all bits output (except GP3 and GP5)
                                ; GP0 , GP1 , GP2 , GP4  controls The stepper Coils
                                ; GP3 controls direction
				; GP5 Controls Step Pulses


	
	ORG 0
	
; start of main code
;***************************************************
;
;	START OF PIC 12c508A CODE FOR STEP;
;
;***************************************************
;

;------------------------------------------
;****Power on reset startpoint
;------------------------------------------

;***Initialization of program	
	MOVWF	OSCCAL
	
	MOVLW	OPMASK
	OPTION	

; Set GPIO for input & output	
	
	MOVLW	IOMASK
	TRIS	GPIO		




;Clear port and zero motors


	movlw	B'00000001'
	movwf	GPIO
	clrf	lastA
	clrf	pattA

;Loop around for a while to let everything stabilize

	movlw	d'255'
	movwf	inport
loop:	decfsz	inport, f
;	goto loop

;***Basic program loop

;Main routine - check pin states and step on negative edge
;Get port data and store, then check axis A
;A10 checks if old is 0, new is 1 (update register)
;A01 checks if old is 1, new is 0 (step and update register)
;Similarly for axis B

main:	movf	GPIO, w
	movwf	inport
	CLRWDT
A10:	btfsc	lastA, 0
	goto A01
	btfss	STEP
	goto A01
	bsf	lastA, 0
A01:	btfss	lastA, 0
	goto B10
	btfsc	STEP
	goto B10
	bcf	lastA, 0
	goto stepA

B10:	goto main

;------------------------------------------
;***stepA - sub to cycle axis A one Full step
;  Dir of 1 is increase, else decrease

stepA:	btfss	DIR
	decf	pattA, f
	btfsc	DIR
	incf	pattA, f

;Check for pattern overflow and fix


	movf	pattA, w
	XORLW	D'255'
	movlw	D'07'
	btfsc	STATUS, Z
	movwf	pattA

	movf	pattA, w
	XORLW	D'08'
	btfsc	STATUS, Z
	clrf	pattA	

;Get step pattern and send to GPIO on bits 0-1-2-4

	movf	pattA, w
	call 	dcode
	movwf	GPIO

  goto main



;------------------------------------------
;***stepcode - sub to generate bit pattern for number in w (!!MUST BE 0-7!!)
;  pattern is stored in w register 

dcode:	addwf	PCL, f		;     Use below column for the half Step
	retlw	B'00000001'	;0	retlw	B'00000001'	;0
	retlw	B'00000010'	;1	retlw	B'00000011'	;1
	retlw	B'00000100'	;2	retlw	B'00000010'	;2
	retlw	B'00010000'	;3	retlw	B'00000110'	;3
	retlw	B'00000001'	;4	retlw	B'00000100'	;4
	retlw	B'00000010'	;5	retlw	B'00010100'	;5
	retlw	B'00000100'	;6	retlw	B'00010000'	;6
	retlw	B'00010000'	;7	retlw	B'00010001'	;7


;Mandatory end of program command

	end

med kompilatorn MPASM men jag får ett dussin felkoder:

Kod: Markera allt

Warning[215] C:\USERS\MARTIN\DESKTOP\EL-PROJEKT\STEP12C.ASM 10 : Processor superseded by command line.  Verify processor symbol.
Warning[215] C:\USERS\MARTIN\DESKTOP\EL-PROJEKT\STEP12C.ASM 11 : Processor superseded by command line.  Verify processor symbol.
Error[105]   C:\USERS\MARTIN\DESKTOP\EL-PROJEKT\STEP12C.ASM 12 : Cannot open file (Include File "p12c508A.inc" not found)
Error[113]   C:\USERS\MARTIN\DESKTOP\EL-PROJEKT\STEP12C.ASM 48 : Symbol not previously defined (OSCCAL)
Warning[207] C:\USERS\MARTIN\DESKTOP\EL-PROJEKT\STEP12C.ASM 51 : Found label after column 1. (OPTION)
Warning[207] C:\USERS\MARTIN\DESKTOP\EL-PROJEKT\STEP12C.ASM 56 : Found label after column 1. (TRIS)
Error[122]   C:\USERS\MARTIN\DESKTOP\EL-PROJEKT\STEP12C.ASM 56 : Illegal opcode (GPIO)
Error[113]   C:\USERS\MARTIN\DESKTOP\EL-PROJEKT\STEP12C.ASM 65 : Symbol not previously defined (GPIO)
Error[113]   C:\USERS\MARTIN\DESKTOP\EL-PROJEKT\STEP12C.ASM 84 : Symbol not previously defined (GPIO)
Error[113]   C:\USERS\MARTIN\DESKTOP\EL-PROJEKT\STEP12C.ASM 116 : Symbol not previously defined (Z)
Error[113]   C:\USERS\MARTIN\DESKTOP\EL-PROJEKT\STEP12C.ASM 116 : Symbol not previously defined (STATUS)
Error[113]   C:\USERS\MARTIN\DESKTOP\EL-PROJEKT\STEP12C.ASM 121 : Symbol not previously defined (Z)
Error[113]   C:\USERS\MARTIN\DESKTOP\EL-PROJEKT\STEP12C.ASM 121 : Symbol not previously defined (STATUS)
Error[113]   C:\USERS\MARTIN\DESKTOP\EL-PROJEKT\STEP12C.ASM 128 : Symbol not previously defined (GPIO)
Error[113]   C:\USERS\MARTIN\DESKTOP\EL-PROJEKT\STEP12C.ASM 138 : Symbol not previously defined (PCL)

vad är fel?
Användarvisningsbild
jojje
Gått bort
Inlägg: 6380
Blev medlem: 20 januari 2006, 01:53:33
Ort: Stockholms utkant
Kontakt:

Inlägg av jojje »

Tex att filen p12c508A.inc inte finns där den bör vara.
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

+ att projektet i MPLAB inte har fått angivit rätt processor.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Laddade in din kod och tryckte F10.
Gick perfekt (nästan) direkt, glömde plocka bort LKR filen från den gamla projektet...

Se över dina inställningar.

Men varför bygga för en C krets från stenåldern !!??
Tänker du verkligen använda den ???

Jag ändade till 12F508 och det gick precis lika bra...
Användarvisningsbild
marcla
Inlägg: 311
Blev medlem: 19 juli 2006, 11:36:38
Ort: Gislaved

Inlägg av marcla »

Ok...
skall ladda ner den senaste versionen och för söka igen. (Var tyfligen en gammal version...)

Helt ny inom det här pic så om en 12F508 är bättre så kör jag på den...
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

Bättre och bättre... C-versionen kan programmeras 1 gång, F-versionen många gånger.
bos
Inlägg: 2314
Blev medlem: 24 februari 2007, 23:29:15
Kontakt:

Inlägg av bos »

Om du är helgrön på PIC så kan du vänta med det här förslaget: Koden är skriven med absolute mode (hårdkodade registerplatser). En nyttig (och inte särskilt svår) övning är att skriva om den till relocatable mode, vilket gör att länkprogrammet själv väljer lämpliga register åt dig, och du behöver bara bry dig om att döpa dem till lagoma bra namn.

Men som sagt, vänta med det tills du blir varm i kläderna :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> skall ladda ner den senaste versionen och för söka igen. (Var tyfligen en gammal version...)

Eftersom 12C508 är en *jättegammal* PIC-modell så är jag ganska säker
på att det i alla fall inte var *det* som var problemet... :-)

Förrutom att skriva om det i relocatable mode, så skulle man samtidigt
kunna flytta det till en *modern* 12F, d.v.s i princip vilken som helst av
"Midrange" (14-bitars) modellerna. Så vitt jag såg så är det bara några
rader som eventuellt behöver justeras.

Men, om det är till ett färdigt projekt, så kan man skaffa en 12F508 och
bara köra det rakt av...
Skriv svar