Hi,
I'm new to piklab and sdcc , when I try to compile some stuff our instructors
gave us I get the following error:
sdcc -mpic14 -p16f877 -V --debug -I/home/duygu/ceng4/ -c
ceng336/hw3_lcd_examples/lcd.c
+ "/usr/bin/sdcpp" -nostdinc -Wall -std=c99 -I"/home/duygu/ceng4/" -obj-ext=.o
-DSDCC_MODEL_SMALL -DSDCC=280 -DSDCC_REVISION=5117 -DSDCC_pic14 -D__pic14
-DSDCC_PROCESSOR="16f877" -I"/usr/bin/../share/sdcc/include/pic14"
-I"/usr/share/sdcc/include/pic14" -I"/usr/bin/../share/sdcc/include"
-I"/usr/share/sdcc/include" -I"/usr/bin/../share/sdcc/include/pic"
-I"/usr/share/sdcc/include/pic" "ceng336/hw3_lcd_examples/lcd.c"
sdcc -mpic14 -p16f877 -V --debug -I/home/duygu/ceng4/ -c
ceng336/hw3_lcd_examples/lcd_demo.c
demo1
glue.c:1956: emitInitVal: Assertion `!"Initialized char-arrays are not yet
supported, assign at runtime instead."' failed.
+ "/usr/bin/sdcpp" -nostdinc -Wall -std=c99 -I"/home/duygu/ceng4/" -obj-ext=.o
-DSDCC_MODEL_SMALL -DSDCC=280 -DSDCC_REVISION=5117 -DSDCC_pic14 -D__pic14
-DSDCC_PROCESSOR="16f877" -I"/usr/bin/../share/sdcc/include/pic14"
-I"/usr/share/sdcc/include/pic14" -I"/usr/bin/../share/sdcc/include"
-I"/usr/share/sdcc/include" -I"/usr/bin/../share/sdcc/include/pic"
-I"/usr/share/sdcc/include/pic" "ceng336/hw3_lcd_examples/lcd_demo.c"
SIGABRT
*** Exited with status: 1 ***
Here're the files:
lcd.h
#define LCDPORT PORTD
#define LCDPORT_TRIS TRISD
#define LCDCONTROL_TRIS TRISC
#define RSLCD RC0
#define ENLCD RC1
void delay1(void);
void delay2(void);
void delay3(void);
void pulse(void);
void lcdInit(void);
void lcdClear(void);
void lcdGoto(unsigned char);
void lcdWrite(unsigned char);
lcd.c
#include <pic/pic16f877.h>
#include "lcd.h"
void delay1(void)
{
int i;
for(i = 0; i < 125; i++);
}
void delay2(void)
{
int i;
for(i = 0; i < 40; i++)
delay1();
}
void delay3(void)
{
int i;
for(i = 0; i < 10; i++)
delay2();
}
void pulse(void)
{
ENLCD = 1;
__asm NOP __endasm;
ENLCD = 0;
delay1();
}
void lcdInit(void)
{
LCDPORT_TRIS = 0;
LCDCONTROL_TRIS = 0;
ENLCD = 0;
RSLCD = 0;
delay1();
LCDPORT = 56;
pulse();
LCDPORT = 15;//1DCB
pulse();
LCDPORT = 1;//clear lcd and return the cursor to the home
pulse();
delay2();
}
void lcdClear(void)
{
ENLCD = 0;
RSLCD = 0;
delay1();
LCDPORT = 1;
pulse();
delay2();
}
void lcdGoto(unsigned char c)
{
LCDPORT = c;
RSLCD = 0;
delay2();
pulse();
}
void lcdWrite(unsigned char c)
{
LCDPORT = c;
RSLCD = 1;
pulse();
}
lcd_demo.c
#include <pic/pic16f877.h>
#include "lcd.h"
typedef unsigned int config;
config at 0x2007 __CONFIG = _CP_OFF &
_WDT_OFF &
_BODEN_ON &
_PWRTE_ON &
_HS_OSC &
_LVP_OFF;
#define START_OF_LINE1 0x80
#define START_OF_LINE2 0xc0
#define START_OF_LINE3 0x90
#define START_OF_LINE4 0xd0
static const char demo1[] = "+--------------+";
static const char demo2[] = "| Ceng 336 |";
static const char demo3[] = "| SDCC LCD demo|";
static const char demo4[] = "+--------------+";
void writeDemo()
{
int i;
lcdGoto(START_OF_LINE1);
for(i = 0; demo1[i]; i++)
lcdWrite(demo1[i]);
lcdGoto(START_OF_LINE2);
for(i = 0; demo2[i]; i++)
lcdWrite(demo2[i]);
lcdGoto(START_OF_LINE3);
for(i = 0; demo3[i]; i++)
lcdWrite(demo3[i]);
lcdGoto(START_OF_LINE4);
for(i = 0; demo4[i]; i++)
lcdWrite(demo4[i]);
for(i = 0; i < 10; i++)
delay3();
lcdClear();
}
void writeChars()
{
int i;
unsigned char c;
for(c = 'A'; c <= 'Z'; c++ )
lcdWrite(c);
for(i = 0; i < 10; i++)
delay3();
lcdClear();
for(c = 'a'; c <= 'z'; c++ )
lcdWrite(c);
for(i = 0; i < 10; i++)
delay3();
lcdClear();
for(c = ' '; c <= '?'; c++ )
lcdWrite(c);
for(i = 0; i < 10; i++)
delay3();
lcdClear();
}
void main(void)
{
lcdInit();
delay3(); // LCD can not work immediately after is is powered.
// We should wait at least 50ms.
while(1)
{
writeDemo();
writeChars();
}
}
I really don't know what the problem is , can somebody help?
------------------------------------------------------------------------------
_______________________________________________
Sdcc-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sdcc-user