Electronic Projects, forums and more.

Go Back   Electronic Circuits Projects Diagrams Free > Electronics Categories > Micro Controllers


Micro Controllers Discuss all aspects of micro controllers - building them, coding them, etc. All controllers are welcome - PIC, BASIC, Z8 Encore!, etc.

Reply
 
Thread Tools Display Modes
Old 9th April 2005, 01:16 AM   (permalink)
Default compiling with MPLAB

I am trying to compile this program in MPLAB. (attached... rename to .asm)I didn't write it, it's from EPE magazine; it's the code for their 16F877 based function generator. The article is from 1999 I believe...

MPLAB won't compile it.

I'll spare you the full error log, but here's a sample

Code:
Error[113]   D:\MY DOCUMENTS\PROJECTS\EPE FUNCTION GENERATOR\PICGN220.ASM 372 : Symbol not previously defined (ANSA2)
Error[113]   D:\MY DOCUMENTS\PROJECTS\EPE FUNCTION GENERATOR\PICGN220.ASM 373 : Symbol not previously defined (OUT6)
Error[113]   D:\MY DOCUMENTS\PROJECTS\EPE FUNCTION GENERATOR\PICGN220.ASM 374 : Symbol not previously defined (ANSA1)
Error[113]   D:\MY DOCUMENTS\PROJECTS\EPE FUNCTION GENERATOR\PICGN220.ASM 375 : Symbol not previously defined (OUT5)
Error[113]   D:\MY DOCUMENTS\PROJECTS\EPE FUNCTION GENERATOR\PICGN220.ASM 376 : Symbol not previously defined (DEC1)
Error[113]   D:\MY DOCUMENTS\PROJECTS\EPE FUNCTION GENERATOR\PICGN220.ASM 377 : Symbol not previously defined (OUT4)
Error[113]   D:\MY DOCUMENTS\PROJECTS\EPE FUNCTION GENERATOR\PICGN220.ASM 380 : Symbol not previously defined (RSLINE)
Error[113]   D:\MY DOCUMENTS\PROJECTS\EPE FUNCTION GENERATOR\PICGN220.ASM 381 : Symbol not previously defined (MARK1)
Error[113]   D:\MY DOCUMENTS\PROJECTS\EPE FUNCTION GENERATOR\PICGN220.ASM 383 : Symbol not previously defined (OUT7)
Error[113]   D:\MY DOCUMENTS\PROJECTS\EPE FUNCTION GENERATOR\PICGN220.ASM 384 : Symbol not previously defined (FSR)
Error[113]   D:\MY DOCUMENTS\PROJECTS\EPE FUNCTION GENERATOR\PICGN220.ASM 386 : Symbol not previously defined (LOOPA)
Error[113]   D:\MY DOCUMENTS\PROJECTS\EPE FUNCTION GENERATOR\PICGN220.ASM 387 : Symbol not previously defined (INDF)
Error[113]   D:\MY DOCUMENTS\PROJECTS\EPE FUNCTION GENERATOR\PICGN220.ASM 388 : Symbol not previously defined (STATUS)
Error[113]   D:\MY DOCUMENTS\PROJECTS\EPE FUNCTION GENERATOR\PICGN220.ASM 388 : Symbol not previously defined (Z)
Error[113]   D:\MY DOCUMENTS\PROJECTS\EPE FUNCTION GENERATOR\PICGN220.ASM 390 : Symbol not previously defined (MARK1)
that goes on for pages. I don't do anything in assembly... I'm just trying to verify that my board will work to some degree before i go wading through tons of C code to write my own firmware. Am I doing something wrong? (I tried quickbuild, and then making a project with the wizard... with equal results)

or is it because i'm using a relatively recent version of MPLAB (6.61) and the code is from last millenium?

Thanks in advance... I hate to be asking such a dumb question, but the only time I touch assembly (or MPLAB) is when I need to compile someone else's program...
Attached Files
File Type: txt picgn220.asm.txt (22.4 KB, 64 views)
__________________
EEgeek.net
evandude is offline  
Reply With Quote
Old 9th April 2005, 02:05 AM   (permalink)
Default

Hmm you see that massive listing of equ's. it means 'equates'. Just makes it easier to write the program.

it's a bit like developing slang for assembly language (assembly language is full of wierd words like "movlw") , and the table of equ's tells the compiler which slang word means which compiler word.

I personally never use equ's because it 'loosens' the human mind. I like to stay sharp with mental memory juggling.

sorry this post probably hasn't helped but i'll guarantee that the problem lies in the table of equ's

Code:
INDF:    .EQU $00  ;page 0, 1, 2, 3
TMR0:    .EQU $01  ;page 0, 2
OPTION:  .EQU $01  ;page 1, 3
PCL:     .EQU $02  ;page 0, 1, 2, 3
STATUS:  .EQU $03  ;page 0, 1, 2, 3
FSR:     .EQU $04  ;page 0, 1, 2, 3

PORTA:   .EQU $05  ;page 0
TRISA:   .EQU $05  ;page 1
PORTB:   .EQU $06  ;page 0, 2
TRISB:   .EQU $06  ;page 1, 3
PORTC:   .EQU $07  ;page 0
TRISC:   .EQU $07  ;page 1
PORTD:   .EQU $08  ;page 0
TRISD:   .EQU $08  ;page 1
PORTE:   .EQU $09  ;page 0
TRISE:   .EQU $09  ;page 1

INTCON:  .EQU $0B  ;page 0, 1, 2, 3
ADCON0:  .EQU $1F  ;page 0
ADCON1:  .EQU $1F  ;page 1

LOOPA:   .EQU $20       ;loop used by LCD send routine
LOOPB:   .EQU $21       ;general loop
STORE:   .EQU $22       ;general store
STORE1:  .EQU $23       ;general store
STORE2:  .EQU $24       ;general store
STORE3:  .EQU $25       ;general store
RSLINE:  .EQU $26       ;LCD function flag store
SWITCH:  .EQU $27       ;switch status store
MARK1:   .EQU $28       ;freq count polarity marker 1
MARK2:   .EQU $29       ;freq count polarity marker 2

DEC1:    .EQU $2A       ;decimalisation byte 1
DEC2:    .EQU $2B       ; byte 2
DEC3:    .EQU $2C       ; byte 3
DEC4:    .EQU $2D       ; byte 4
DEC5:    .EQU $2E       ; byte 5
DEC6:    .EQU $2F       ; byte 6 (dummy)      

ANSA1:   .EQU $30       ;decimalisation answer store 1
ANSA2:   .EQU $31       ; answer 2
ANSA3:   .EQU $32       ; answer 3
ANSA4:   .EQU $33       ; answer 4
ANSA5:   .EQU $34       ; answer 5

FREQ0:   .EQU $35       ;frequency counter lsb
FREQ1:   .EQU $36       ;frequency counter nsb
FREQ2:   .EQU $37       ;frequency counter nsb
FREQ3:   .EQU $38       ;frequency counter nsb
FREQ4:   .EQU $39       ;frequency counter msb
CLKCNT:  .EQU $3A       ;timing counter
SLOWIT:  .EQU $3B       ;delay factor for PAUSE
LOOPX:   .EQU $3C       ;delay loop for LCDOUT

OUT7:    .EQU $3D       ;8 bytes for freq store and output to LCD
OUT6:    .EQU $3E
OUT5:    .EQU $3F
OUT4:    .EQU $40
OUT3:    .EQU $41
OUT2:    .EQU $42
OUT1:    .EQU $43
OUT0:    .EQU $44
LCDSTOR1: .EQU $45
LCDSTOR2: .EQU $46
STOREC:   .EQU $47
STORED:   .EQU $48
TENFLG:   .EQU $49
TENCNT:   .EQU $4A
RANGE:    .EQU $4B      ;frequency cap selection
SHAPE:    .EQU $4C      ;waveform shape selection
SAMPLE:   .EQU $4D      ;1sec/10sec flag
CLKVAL1:  .EQU $4E
CLKVAL2:  .EQU $4F

                    ;extends to $7F (max limit)

W:       .EQU 0
F:       .EQU 1
C:       .EQU 0
DC:      .EQU 1
Z:       .EQU 2

RP0:     .EQU 5         ;STATUS reg
RP1:     .EQU 6         ;STATUS reg
GIE:     .EQU 7         ;INTCON reg
This is the equ table.
__________________
www.winpicprog.co.uk - Great PIC language tutorials.
pike is offline  
Reply With Quote
Old 9th April 2005, 02:55 AM   (permalink)
Default

Here you have it.

Just compare the diferent in my code.

Make sure you disabble the case sensivity in MPLAB, under "project ", "Build Option".

Have fun !

STEVE
Attached Files
File Type: zip webtest.zip (26.2 KB, 23 views)
__________________
I'm could be wrong many time's, at least I know what I'm doing.
csaba911 is offline  
Reply With Quote
Old 9th April 2005, 04:01 AM   (permalink)
Default

at first glance, it appears you just took out a bunch of periods and semicolons. whatever the case may be, it seems to have worked! at least, the code compiles now.

thanks!
__________________
EEgeek.net
evandude is offline  
Reply With Quote
Old 9th April 2005, 08:08 AM   (permalink)
Default

You need to be careful with EPE code, much of it doesn't use the MicroChip assembler MPASM - the editor of EPE had never heard of MPASM when he started with PIC's (which is really unbelievable!), and he used a shareware assembler, which isn't MPASM compatible.

Their Toolkit Mk3 includes a facility to convert between the two source file types, it's a free download from their website.
__________________
PIC programmer software, and PIC Tutorials at:
http://www.winpicprog.co.uk
Nigel Goodwin is offline  
Reply With Quote
Reply

Bookmarks

Thread Tools
Display Modes




All times are GMT. The time now is 11:21 PM.


Electronic Circuits  |  Electronics Wiki
Powered by vBulletin® Version 3.7.0
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.