It looks like you have hit the 2k page boundary problem of the 16f's. The fix was to use the "#option lcall" statement prior to Main: Check out the previous discussions in the forum.
The easiest fix is to start using the 18F's for the larger programs. You mentioned that you have an 18f2550, use that.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Are you using T as a variable, or is that GCBasic putting it there? I see T is used in the preprocessor.bi file, maybe a conflict of that type is happening. Somewhere there is a note not to use single characters as variables.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi. I compiled large program,
then don't generated startup code (see below)
(I posted "BANKSEL is incorrect" yesterday )
Thanks (kamiya)
-----------------------------------------------------------------------------------
MPASM 5.14 COMPILED.ASM 5-23-2008 13:46:27 PAGE 1
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
00001 ;Program compiled by Great Cow BASIC (0.9 14/4/2008)
00002 ;Need help? See the GCBASIC forums at
http://sourceforge.net/forum/?group_id=169286,
00003 ;check the documentation or email hconsidine@bigpond.com.
00004
00005 ;********************************************************
00006
00007 ;Set up the assembler options
(Chip type, clock source, other bits and pieces)
00008 LIST P=16F877A, R=DEC
00009 #INCLUDE <P16F877A.INC>
00001 LIST
00002 ; P16F877A.INC Standard Header File, Version 1.00
Microchip Technology, Inc.
00400 LIST
2007 3F7A 00010 __CONFIG _HS_OSC & _WDT_OFF & _LVP_OFF
00011
00012 ;********************************************************
00013
00014 ;Set aside memory locations for variables
000001C5 00015 SYSSTRINGPARAM1 EQU 453 ;Array
00000020 00016 ADREADPORT EQU 32
00000021 00017 CH EQU 33
00000022 00018 DELAYTEMP EQU 34
00000023 00019 DELAYTEMP2 EQU 35
00000024 00020 LCDBYTE EQU 36
00000025 00021 LCDCHAR EQU 37
00000026 00022 LCDCOLUMN EQU 38
00000027 00023 LCDLINE EQU 39
00000028 00024 LCDPUTCOLUMN EQU 40
00000029 00025 LCDPUTLINE EQU 41
0000002A 00026 LCDREADY EQU 42
0000002B 00027 PRINTLEN EQU 43
0000002C 00028 READAD EQU 44
0000002D 00029 SYSCALCTEMPA EQU 45
0000002E 00030 SYSCALCTEMPA_H EQU 46
0000002F 00031 SYSCALCTEMPB EQU 47
00000030 00032 SYSCALCTEMPB_H EQU 48
00000031 00033 SYSCALCTEMPX EQU 49
00000032 00034 SYSCALCTEMPX_H EQU 50
00000033 00035 SYSDIVMULTA EQU 51
00000034 00036 SYSDIVMULTA_H EQU 52
00000035 00037 SYSDIVMULTB EQU 53
00000036 00038 SYSDIVMULTB_H EQU 54
00000037 00039 SYSDIVMULTX EQU 55
00000038 00040 SYSDIVMULTX_H EQU 56
00000039 00041 SYSLCDTEMP EQU 57
0000003A 00042 SYSPRINTTEMP EQU 58
0000003B 00043 SYSSTRINGLENGTH EQU 59
0000003C 00044 STRINGPOINTER EQU 60
0000003D 00045 SYSDIVLOOP EQU 61
0000003E 00046 SYSIFTEMP EQU 62
0000003F 00047 SYSINTOFFCOUNT EQU 63
00000040 00048 SYSPRINTDATAHANDLER EQU 64
00000041 00049 SYSPRINTDATAHANDLER_H EQU 65
00000042 00050 SYSSTATUS EQU 66
00000043 00051 SYSSTRINGA EQU 67
00000044 00052 SYSSTRINGA_H EQU 68
00000045 00053 SYSSTRINGB EQU 69
00000046 00054 SYSSTRINGB_H EQU 70
00000047 00055 SYSTEMP1 EQU 71
00000048 00056 SYSTEMP1_H EQU 72
00000049 00057 SYSW EQU 73
0000004A 00058 SYSWAITTEMP10US EQU 74
0000004B 00059 SYSWAITTEMPMS EQU 75
0000004C 00060 SYSWAITTEMPMS_H EQU 76
0000004D 00061 SYSWAITTEMPS EQU 77
0000004E 00062 T EQU 78
0000004F 00063 T_H EQU 79
00000050 00064 WT EQU 80
00000051 00065 WT_H EQU 81
00000052 00066 WW EQU 82
00067
00068 ;*************************************************
00069
00070 ;Jump to initialisation code when PIC is reset
0000 00071 ORG 0
00072
00073 ;************************************************
00074
00075 ;Interrupt vector
0004 00076 ORG 4
00077 ;Save Context
0004 00C9 00078 MOVWF SYSW
0005 0E03 00079 SWAPF STATUS,W
0006 00C2 00080 MOVWF SYSSTATUS
0007 01BF 00081 CLRF SYSINTOFFCOUNT
0008 0ABF 00082 INCF SYSINTOFFCOUNT,F
00083 ;Call Interrupt sub
0009 2DD6 00084 GOTO INTERRUPT
000A 00085 INTERRUPTDONE
00086 ;Restore Context
000A 01BF 00087 CLRF SYSINTOFFCOUNT
0C40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX
0C80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXX------------- ----------------
2000 : -------X-------- ---------------- ---------------- ----------------
All other memory blocks unused.
Program Memory Words Used: 3205
Program Memory Words Free: 4987
Errors : 0
Warnings : 0 reported, 0 suppressed
Messages : 0 reported, 238 suppressed
It looks like you have hit the 2k page boundary problem of the 16f's. The fix was to use the "#option lcall" statement prior to Main: Check out the previous discussions in the forum.
The easiest fix is to start using the 18F's for the larger programs. You mentioned that you have an 18f2550, use that.
Thanks.
But, I use both "#option bootloader" & "#option lcall"
kamiya
Are you using T as a variable, or is that GCBasic putting it there? I see T is used in the preprocessor.bi file, maybe a conflict of that type is happening. Somewhere there is a note not to use single characters as variables.
Tanks.
so, I found "not to use single characters as variables"
but, in this case not use.
This program, simply copy multipletimes "morse code.txt"
which is example program in this forum.
kamiya