Raphael

I'm trying to get the following assignment to work with the PIC16 port
of sdcc. Is there a reason the sdcc assembler is so complex and more
to the point a reason for it not working?

PORTBbits.RB4 = PORTBbits.RB0

sdcc --version
SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08
2.8.3 #5222 (Aug 25 2008) (UNIX)

The sdcc generated binary doesn't seem to work and generates the
following assembler:
0000d2   6a00     clrf  0, 0                    CLRF    r0x00
0000d4   b081     btfsc 0x81, 0, 0              BTFSC   _PORTBbits, 0
0000d6   2a00     incf  0, 0x1, 0               INCF    r0x00, F
0000d8   5000     movf  0, 0, 0                 MOVF    r0x00, W
0000da   0b01     andlw 0x1                     ANDLW   0x01
0000dc   38e8     swapf 0xe8, 0, 0              SWAPF   WREG, W
0000de   6ef4     movwf 0xf4, 0                 MOVWF   PRODH
0000e0   5081     movf  0x81, 0, 0              MOVF    _PORTBbits, W
0000e2   0bef     andlw 0xef                    ANDLW   0xef
0000e4   10f4     iorwf 0xf4, 0, 0              IORWF   PRODH, W
0000e6   6e81     movwf 0x81, 0                 MOVWF   _PORTBbits

I had a colleague send me the Hi-TECH assembler instruction! which does work.

3FF8    8881     BSF 0xf81, 0x4, ACCESS

Here are my makefile commands:
sdcc -c main.c -mpic16 -p18f248
gplink -w -r -o main.hex -m main.o -I /usr/share/sdcc/lib/pic16
pic18f248.lib libsdcc.lib crt0i.o

:main.c
#pragma stack 0x200 0x100

#include <pic18fregs.h>
code unsigned char at __CONFIG1H _conf0 = _OSCS_OFF_1H & _OSC_HS_PLL_1H;
code unsigned char at __CONFIG2L _conf1 = _PUT_OFF_2L & _BODEN_OFF_2L;
code unsigned char at __CONFIG2H _conf2 = _WDT_OFF_2H & _WDTPS_1_128_2H;
code unsigned char at __CONFIG4L _conf3 = _BACKBUG_OFF_4L &
_LVP_OFF_4L &_STVR_ON_4L;

void main(void) {
        TRISB = 0x09;
        PORTB = 0x14;
        while(1) {
                PORTBbits.RB4 = PORTBbits.RB0;
        }
}


Jonathan

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user

Reply via email to