Hallo iedereen ik krijg volgensde foutmelding als ik mijn code wil assembleren.


Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p16F627 "hoovercraft2.asm" /l"hoovercraft2.lst" /e"hoovercraft2.err"
Message[302] F:\MPLAB_V8\HOOVERCRAFT2.ASM 126 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] F:\MPLAB_V8\HOOVERCRAFT2.ASM 130 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Message[302] F:\MPLAB_V8\HOOVERCRAFT2.ASM 133 : Register in operand not in bank 0.  Ensure that bank bits are correct.
Error[113]   F:\MPLAB_V8\HOOVERCRAFT2.ASM 138 : Symbol not previously defined (TXSTA)
Error[113]   F:\MPLAB_V8\HOOVERCRAFT2.ASM 140 : Symbol not previously defined (SPBRG)
Error[113]   F:\MPLAB_V8\HOOVERCRAFT2.ASM 151 : Symbol not previously defined (TXREG)
Halting build on first failure as requested.
BUILD FAILED: Mon Mar 10 17:52:52 2008

Weet iemand hoe dit komt en hoe ik het kan oplossen , dit is mijn code :


 

W                            EQU     H'0000'
F                            EQU     H'0001'

;----- Register Files------------------------------------------------------

INDF                         EQU     H'0000'
TMR0                         EQU     H'0001'
PCL                          EQU     H'0002'
STATUS                       EQU     H'0003'
FSR                          EQU     H'0004'
PORTA                        EQU     H'0005'
PORTB                        EQU     H'0006'

INTCON                       EQU     H'000B'
OPTION_REG                   EQU     H'0081'
TRISA                        EQU     H'0085'
TRISB                        EQU     H'0086'
CMCON                        EQU     H'001F'


;----- STATUS Bits --------------------------------------------------------
IRP                          EQU     H'0007'
RP1                          EQU     H'0006'
RP0                          EQU     H'0005'
NOT_TO                       EQU     H'0004'
NOT_PD                       EQU     H'0003'
Z                            EQU     H'0002'
DC                           EQU     H'0001'
C                            EQU     H'0000'

;==========================================================================
;
;       RAM Definition
;
;==========================================================================

    __MAXRAM H'01FF'
    __BADRAM H'07'-H'09', H'0D', H'13'-H'14', H'1B'-H'1E'
    __BADRAM H'87'-H'89', H'8D', H'8F'-H'91', H'93'-H'97', H'9E'
    __BADRAM H'105', H'107'-H'109', H'10C'-H'11F', H'150'-H'16F'
    __BADRAM H'185', H'187'-H'189', H'18C'-H'1EF'

;==========================================================================
;
;       Configuration Bits
;
;==========================================================================

_BODEN_ON                    EQU     H'3FFF'
_BODEN_OFF                   EQU     H'3FBF'
_CP_ALL                      EQU     H'03FF'
_CP_75                       EQU     H'17FF'
_CP_50                       EQU     H'2BFF'
_CP_OFF                      EQU     H'3FFF'
_DATA_CP_ON                  EQU     H'3EFF'
_DATA_CP_OFF                 EQU     H'3FFF'
_PWRTE_OFF                   EQU     H'3FFF'
_PWRTE_ON                    EQU     H'3FF7'
_WDT_ON                      EQU     H'3FFF'
_WDT_OFF                     EQU     H'3FFB'
_LVP_ON                      EQU     H'3FFF'
_LVP_OFF                     EQU     H'3F7F'
_MCLRE_ON                    EQU     H'3FFF'
_MCLRE_OFF                   EQU     H'3FDF'
_ER_OSC_CLKOUT               EQU     H'3FFF'
_ER_OSC_NOCLKOUT             EQU     H'3FFE'
_INTRC_OSC_CLKOUT            EQU     H'3FFD'
_INTRC_OSC_NOCLKOUT          EQU     H'3FFC'
_EXTCLK_OSC                  EQU     H'3FEF'
_LP_OSC                      EQU     H'3FEC'
_XT_OSC                      EQU     H'3FED'
_HS_OSC                      EQU     H'3FEE'

	__CONFIG        _BODEN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC

;==========================================================================
;       Variable Definition
;==========================================================================
;INPUTS
SW1		EQU     H'00'					;SW1 is triggering RA0
SW2		EQU     H'01'					;SW2 is triggering RA1
SW3		EQU     H'02'					;SW3 is triggering RA2
SW4		EQU     H'03'					;SW4 is triggering RA3
TIMER1		EQU	H'20'					;Used in delay routine
TIMER2		EQU	H'21'					; "	"	"	
PATERN		EQU	H'22'					;Pattern data for effect's

		

		ORG	0							;Reset vector address
		GOTO	RESET					;goto RESET routine when boot.


;		*********************************************
;		*  Example of a delay routine               *
;		*********************************************

DELAY_ROUTINE   MOVLW   D'12'         ;1khz
                MOVWF   TIMER2
DEL_LOOP1       MOVLW   D'12'	       ;60	
                MOVWF   TIMER1
DEL_LOOP2       
		DECFSZ  TIMER1,F
                GOTO    DEL_LOOP2
                DECFSZ  TIMER2,F
                GOTO    DEL_LOOP1
		RETLW   0

;	     	   **********************************
;              **  RESET :  main boot routine  **
;              **********************************

RESET	MOVLW	B'00000111'				;Disable Comparator module's
		MOVWF	CMCON
		;
		BSF	STATUS,RP0					;Switch to register bank 1
										;Disable pull-ups
										;INT on rising edge
										;TMR0 to CLKOUT
										;TMR0 Incr low2high trans.
										;Prescaler assign to Timer0
										;Prescaler rate is 1:256
		MOVLW	B'11010111'				;Set PIC options (See datasheet).
		MOVWF	OPTION_REG				;Write the OPTION register.
		;
		CLRF	INTCON					;Disable interrupts
		MOVLW	B'00000000'
		MOVWF	TRISB					;RB7 & RB6 are inputs.
										;RB5...RB0 are outputs.
		MOVLW	B'11111111'				;all RA ports are inputs
		MOVWF	TRISA
		BCF	STATUS,RP0					;Switch Back to reg. Bank 0
		CLRF	PORTB

		MOVLW B'00100110'				;USART register setten
		MOVWF TXSTA
		MOVLW D'51'						;instellen baud-rate op 1.2 KHz
		MOVWF SPBRG						;register setten

		GOTO	test		
		;

		

test

		btfss 	PORTA,SW1        'wanneer sw word ingeduwd
		movlw	B'11111111'      'data naar register sturen en hopen dat het er serieel uit komt
		movwf	TXREG
		

		btfss 	PORTA,SW2
		bcf   	PORTB,4
		btfsc 	PORTA,SW2
		bsf   	PORTB,4

		btfss 	PORTA,SW3
		bcf   	PORTB,5
		btfsc 	PORTA,SW3
		bsf   	PORTB,5
		
		bcf   	PORTB,7
		call	DELAY_ROUTINE
		bsf		PORTB,7
		call	DELAY_ROUTINE
		GOTO	test


		
			
			
	
		END

De bedoeling is eig om een serieel signaal te versturen via de pic , Ik denk dat ik mijn USART register juist heb gezet , kan iemand dit nakijken ? Moet je je start en stopbit zelf in het 8 bit getal zetten ?

Je hebt in het begin van je progje een aantal registers gedefinieerd.
TXSTA, SPBERG en TXREG heb je er niet bij staan. Daarom krijg je de 3 errors 113.

Meestal wordt een include-file aangeroepen waarin al de registernamen en bitnamen gedefinieerd zijn.

en mag ik die op eender welk adres defigneren (buiten die die albezet zijn ) ?? Alvast bedankt.

De betreffende registernamen zijn namen voor registers met een bepaalde functie (bijv. USART-instellingen). Deze zou mplab moeten herkennen mits je de juiste pic heb ingesteld en de pic deze functies ondersteunt. Met een includefile (bijv. #include "picxxfxxxx.inc" )zorg je dat mplab deze namen herkent. Het is niet de bedoeling zomaar vrije registers hieraan te hangen aangezien je dan gewoon nietsbetekenende waardes inschrijft.

[Bericht gewijzigd door Anonieme Gebruiker op (12%)]

het is een 16f627, deze ondersteunt usart, dus normaal zou mplab deze dan moeten herkennen maar dit doet hij blijkbaar niet , of moet ik nog iets doen ?

Als je met MPLAB werkt kan je bovenaan in het progje, nog boven de config, de volgende regel toevoegen:

include <C:\Program Files\Microchip\MPASM Suite\p16f627.inc>

Zet boven je code #include <p16f627.inc>

voeg even een regeltje toe:


#include pic16f627.inc

dan ben je die meldinegn wel kwijt.

oke bedankt nu werkt dit al , ik ben nog maar bas bezig met asm dus kan nog niet zo goed programmeren met dit programma zou ik normaal met SW1 de serieele data 11111111 op pin2 van poort B moeten zetten ,heb ik dit juist gedaan ?
Bedankt!

Zet eens commmentaar achter elke programmaregel.
Dan wordt het allemaal een stuk duidelijker.

Voila heb bij het programma "test" bijgezet wat het moet doen , je moet alleen maar kijken naar de eerste paar regels. De rest is gewoon om een uitgang laag te maken wanneer ik een SW induw.
Alvast bedankt.

En wat gebeurt er als sw1 niet wordt ingedrukt ;)

moet ik dan bit clear doen op de pin 2 van poort B ? als sw1 niet wordt ingeduwd ?


btfss 	PORTA,SW1        
movlw	B'11111111'      
movwf	TXREG
btfsc 	PORTA,SW1
bcf   	PORTB,2

[Bericht gewijzigd door AC/DrieC op (42%)]

als ik data doorstuur moet mijn eerste bit dan 1 of 0 zijn ? Het lukt niet goed om alles te programmeren , ik denk dat ik nog ergens een fout heb gemaakt .