Monday, March 23, 2009

LED Blink on PICKit2 Demoboard

The following code will make LED 1 on PICKit2 demoboard (attached to PICKit2 programmer) to blink for about every 500 mSec. Tools needed are: gputils and sdcc (all of them are open sources), and pk2cmd freely available at Microchip website.

Source code:

__sfr __at (0x2007) CONFIG = _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF &
_CP_OFF & _IESO_OFF & _FCMEN_OFF & _BOR_OFF;



unsigned char delay1val;
unsigned char delay2val;

void delay()
{
__asm
CLRF _delay1val
CLRF _delay2val
loop:
DECFSZ _delay1val,f
GOTO loop
DECFSZ _delay2val,f
GOTO loop
__endasm;
}

void main()
{
// make C0 as output
TRISC0 = 0;
do {
RC0 = 1;
delay();
RC0 = 0;
delay();
} while (1);
}


Makefile:

OBJS=demo1.o
PRJ=demo1
CHIP=690
ARCH=pic14
PLATFORM=16f$(CHIP)
LIBPATH=-I/usr/local/share/gputils/lkr -I/usr/local/share/sdcc/lib/pic
LINKSCRIPTPATH=/usr/local/share/gputils/lkr
LIBS=libsdcc.lib pic$(PLATFORM).lib libm.lib
CC=sdcc -V -m$(ARCH) -p$(PLATFORM)
LINKER=/usr/local/bin/gplink
CFLAGS=--opt-code-speed --stack-auto --main-return --profile --debug-xtra --no-pcode-opt --funsigned-char --Werror
CPPFLAGS=

.c.o:
$(CC) $(CFLAGS) -D_16F$(CHIP) -c $<

$(PRJ).hex: $(OBJS)
$(LINKER) -w -O1 -m -o $(PRJ).hex $(OBJS) $(LIBPATH) -f 0 $(LIBS) -s $(LINKSCRIPTPATH)/$(PLATFORM).lkr
all: $(PRJ).hex
clean:
@echo "cleaning up all generated files..."
@for obj in $(OBJS); do \ if [ -e $$obj ] ; then rm $$obj ; fi \ done
@rm *.lst
@if [ -e $(PRJ).cod ] ; then rm $(PRJ).cod ; fi
@if [ -e $(PRJ).hex ] ; then rm $(PRJ).hex ; fi
@echo "done."
install:
pk2cmd -PPIC$(PLATFORM) -M -F$(PRJ).hex
pk2cmd -PPIC$(PLATFORM) -T



To build:
make demo1.hex

To install:
make install

No comments:

Post a Comment