AC/DrieC
Den Dries www.hulens.be
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.
AC/DrieC
Den Dries www.hulens.be
Anonieme Gebruiker
Hier kan ook uw advertentie staan!
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%)]
AC/DrieC
Den Dries www.hulens.be
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>
AC/DrieC
Den Dries www.hulens.be
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!
AC/DrieC
Den Dries www.hulens.be
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.
AC/DrieC
Den Dries www.hulens.be
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%)]
AC/DrieC
Den Dries www.hulens.be
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 .
