PDA

View Full Version : PIC16f877 code crosses boundary @800h



inventosrl
- 3rd April 2009, 13:23
Hello, on a PIC16f877 have this warnibg while compile with MC Studio Plus and PBP

Warn 877_0.ASM : [102] code crosses boundary @800h

Success 2134 word used

It's over the limit?s ?

It's possible to use PIC16F877A instead PIC16F877 without a bootloader?
If yes, double the program space?

Thanks a lot

giorgio

******** code *********

'************************************************* ***************
'* Name : 877_0.BAS *
'* Author : Giorgio Rossi *
'* Notice : Copyright (c) 2009 Invento S.r.l. *
'* : All Rights Reserved *
'* Date : 05/03/2009 *
'* Version : 1.0 *
'* Notes : *
'* PIC : PIC16F877 *
'************************************************* ***************
DEFINE OSC 8
INCLUDE "MODEDEFS.BAS"

@ DEVICE pic16F877, RC_OSC
@ DEVICE pic16F877, WDT_OFF ' Watchdog Timer
@ DEVICE pic16F877, PWRT_OFF ' Power-On Timer
@ DEVICE pic16F877, BOD_ON ' Brown-Out Detect
TRISA = %11111111
TRISB = %00000000
TRISC = %00010000
TRISD = %11111011
TRISE = %00000111

' ADC definitions 16F877 - (8) 10bit channels
'*****************************
DEFINE ADC_BITS 10 ' (8) 10 Bit channels
DEFINE ADC_CLOCK 3 ' tell the us per osc clock tick?
DEFINE ADC_SAMPLEUS 50 ' how long to sample the pin

'INIT ADC
ADCON1 = %10000000 ' All available analog pins are ON for input
ADCON0 = %11000001 ' Analog converter Fosc/32, ADC module is ON
ADCON0.7 = 1

' VARIABLES ************************************************** **********
ADVAL0 VAR WORD
ADVAL1 VAR WORD
ADVAL2 VAR WORD
ADVAL3 VAR WORD
ADVAL4 VAR WORD
ADVAL5 VAR WORD
ADVAL10 VAR WORD
ADVAL11 VAR WORD
ADVAL12 VAR WORD
ADVAL13 VAR WORD
ADVAL14 VAR WORD
ADVAL15 VAR WORD

DIVAL0 VAR BYTE
DIVAL1 VAR BYTE
DIVAL2 VAR BYTE
DIVAL3 VAR BYTE
DIVAL4 VAR BYTE
DIVAL5 VAR BYTE
DIVAL6 VAR BYTE
DIVAL7 VAR BYTE
DIVAL8 VAR BYTE
DIVAL10 VAR BYTE
DIVAL11 VAR BYTE
DIVAL12 VAR BYTE
DIVAL13 VAR BYTE
DIVAL14 VAR BYTE
DIVAL15 VAR BYTE
DIVAL16 VAR BYTE
DIVAL17 VAR BYTE
DIVAL18 VAR BYTE
DIVAL19 VAR BYTE
DIVAL20 VAR BYTE
DIVAL21 VAR BYTE
DIVAL22 VAR BYTE
DIVAL23 VAR BYTE
DIVAL24 VAR BYTE
DIVAL25 VAR BYTE
DIVAL26 VAR BYTE
DIVAL27 VAR BYTE
DIVAL28 VAR BYTE
DIVAL30 VAR BYTE
DIVAL31 VAR BYTE
DIVAL32 VAR BYTE
DIVAL33 VAR BYTE
DIVAL34 VAR BYTE
DIVAL35 VAR BYTE
DIVAL36 VAR BYTE
DIVAL37 VAR BYTE
DIVAL38 VAR BYTE
DATIAN VAR WORD
'serout PORTC.5,t9600, [124, 155]
serout PORTC.5,t9600, [$FE, 1]
serout PORTC.5,t9600, [124, 3, 5]
pause 100

PAUSE 200

mainloop:



adcin 0, ADVAL0
ADVAL0 = ADVAL0 *5
adcin 1, ADVAL1
ADVAL1 = ADVAL1 *5
adcin 2, ADVAL2
ADVAL2 = ADVAL2 *5
adcin 3, ADVAL3
ADVAL3 = ADVAL3 *5
adcin 4, ADVAL4
ADVAL4 = ADVAL4 *5
adcin 5, ADVAL5
ADVAL5 = ADVAL5 *5
'adcin 6, ADVAL6
'ADVAL6 = ADVAL6 *5
'adcin 7, ADVAL7
'ADVAL7 = ADVAL7 *5
'pause 100



'serout PORTC.5,t9600, [124, 3, 5]
pause 200

DIVAL0 = ADVAL0 DIG 0
DIVAL1 = ADVAL0 DIG 1
DIVAL2 = ADVAL0 DIG 2
DIVAL3 = ADVAL1 DIG 0
DIVAL4 = ADVAL1 DIG 1
DIVAL5 = ADVAL1 DIG 2
DIVAL6 = ADVAL2 DIG 0
DIVAL7 = ADVAL2 DIG 1
DIVAL8 = ADVAL2 DIG 2

DIVAL10 = ADVAL3 DIG 0
DIVAL11 = ADVAL3 DIG 1
DIVAL12 = ADVAL3 DIG 2
DIVAL13 = ADVAL4 DIG 0
DIVAL14 = ADVAL4 DIG 1
DIVAL15 = ADVAL4 DIG 2
DIVAL16 = ADVAL5 DIG 0
DIVAL17 = ADVAL5 DIG 1
DIVAL18 = ADVAL5 DIG 2
serin PORTC.4,t9600, ["DIVAL20"] , DIVAL20
serin PORTC.4,t9600, ["DIVAL21"] , DIVAL21
serin PORTC.4,t9600, ["DIVAL22"] , DIVAL22
serin PORTC.4,t9600, ["DIVAL23"] , DIVAL23
serin PORTC.4,t9600, ["DIVAL24"] , DIVAL24
serin PORTC.4,t9600, ["DIVAL25"] , DIVAL25
serin PORTC.4,t9600, ["DIVAL26"] , DIVAL26
serin PORTC.4,t9600, ["DIVAL27"] , DIVAL27

serin PORTC.4,t9600, ["DIVAL28"] , DIVAL28
serin PORTC.4,t9600, ["DIVAL30"] , DIVAL30
serin PORTC.4,t9600, ["DIVAL31"] , DIVAL31
serin PORTC.4,t9600, ["DIVAL32"] , DIVAL32
serin PORTC.4,t9600, ["DIVAL33"] , DIVAL33
serin PORTC.4,t9600, ["DIVAL34"] , DIVAL34
serin PORTC.4,t9600, ["DIVAL35"] , DIVAL35
serin PORTC.4,t9600, ["DIVAL36"] , DIVAL36
serin PORTC.4,t9600, ["DIVAL37"] , DIVAL37
serin PORTC.4,t9600, ["DIVAL38"] , DIVAL38

serout PORTC.5,t9600, [254,128, "a ", #DIVAL2, "." , #DIVAL1, #DIVAL0]
serout PORTC.5,t9600, [254,135, "b ", #DIVAL5, "." , #DIVAL4, #DIVAL3]
serout PORTC.5,t9600, [254,142, "c ", #DIVAL8, "." , #DIVAL7, #DIVAL6]
serout PORTC.5,t9600, [254,192, "d ", #DIVAL12, "." , #DIVAL11, #DIVAL10]
serout PORTC.5,t9600, [254,199, "e ", #DIVAL15, "." , #DIVAL14, #DIVAL13]
serout PORTC.5,t9600, [254,206, "f ", #DIVAL18, "." , #DIVAL17, #DIVAL16]
serout PORTC.5,t9600, [254,148, "g ", #DIVAL22, "." , #DIVAL21, #DIVAL20]
serout PORTC.5,t9600, [254,155, "h ", #DIVAL25, "." , #DIVAL24, #DIVAL23]
serout PORTC.5,t9600, [254,162, "i ", #DIVAL28, "." , #DIVAL27, #DIVAL26]
serout PORTC.5,t9600, [254,212, "l ", #DIVAL32, "." , #DIVAL31, #DIVAL30]
serout PORTC.5,t9600, [254,219, "m ", #DIVAL35, "." , #DIVAL34, #DIVAL33]
serout PORTC.5,t9600, [254,226, "n ", #DIVAL38, "." , #DIVAL37, #DIVAL36]

' INVIO DATI AL PIC 877_1 PER SITEPLAYER
serout PORTC.5,t9600, [124, 2, 4]
serout PORTD.2,t9600, ["DATIAN", #DIVAL2, #DIVAL1, #DIVAL0, #DIVAL5, #DIVAL4, #DIVAL3, #DIVAL8, #DIVAL7, #DIVAL6, #DIVAL12, #DIVAL11, #DIVAL10, #DIVAL15, #DIVAL14, #DIVAL13, #DIVAL18, #DIVAL17, #DIVAL16]
serout PORTD.2,t9600, ["DATIAN", DIVAL2, DIVAL1, DIVAL0, DIVAL5, DIVAL4, DIVAL3, DIVAL8, DIVAL7, DIVAL6, DIVAL12, DIVAL11, DIVAL10, DIVAL15, DIVAL14, DIVAL13, DIVAL18, DIVAL17, DIVAL16]



goto mainloop
END

mat janssen
- 3rd April 2009, 13:30
It's just a warning, no problem. You chip is big enough for your program now.
Try it and you will see that (if you mean what you programmed) your progam works.

inventosrl
- 3rd April 2009, 13:50
It's just a warning, no problem. You chip is big enough for your program now.
Try it and you will see that (if you mean what you programmed) your progam works.

Thanks Mat,
do you how many word I can program with success with this chip (datasheet speek about 8K) ?

thanks and regards

giorgio

mat janssen
- 3rd April 2009, 14:07
The 8 K are the assembled words/
I cannot tell you how much that is in PBP.
It depends on the pbp instructions you use.
Each instruction has some overhead code in asm. LCDout has more code then x=0
If you use a gosub for your serout and serin instructions I think your code will also be shorter.

xxxxxx
- 6th April 2009, 08:24
It's just a warning, no problem. You chip is big enough for your program now.
Try it and you will see that (if you mean what you programmed) your progam works.

are you sure about this????????

xxxxxx
- 6th April 2009, 09:01
It's just a warning, no problem. You chip is big enough for your program now.
Try it and you will see that (if you mean what you programmed) your progam works.

melanie rules :D

http://picbasic.co.uk/forum/showthread.php?t=555&highlight=code+crosses+boundary+%40800h

HYETİK
- 6th April 2009, 13:20
you see this warning because you reach the end of first memory page.
4 page x 2K = 8 Kiloword memory:)

Archangel
- 6th April 2009, 22:03
It makes a difference if you are using the <B>BRANCH</B> Statement, in which case you would use BRANCHL , BranchL takes up more space than BRANCH and that is why you wouldn't use BranchL only.