Hi, I am using following function to display data on LCD:
void table_to_nokialcd(unsigned char charsel)
{
unsigned char i;
for ( i = 0; i < 5; i++ )
{
nokia_write_data(FontLookup[charsel-32][i] << 1);
}
nokia_write_data(0x00);
}
but its not working properly for charsel >='T'. I suspect there is a problem
with FontLookup[charsel-32][i] expression which compiles into this code:
...
MOVLW 0x05
MOVWF STK00
MOVF r0x1003,W ;r0x1003=charsel-32 here
PAGESEL __mulchar
CALL __mulchar
PAGESEL $
BANKSEL r0x1004
MOVWF r0x1004
CLRF r0x1005
CLRF r0x1003
;unsigned compare: left < lit(0x5=5), size=1
_00172_DS_
MOVLW 0x05
BANKSEL r0x1003
SUBWF r0x1003,W
BTFSC STATUS,0
GOTO _00175_DS_
;genSkipc:3057: created from rifx:0xbfead8f0
; .line 165; "nokia.c" nokia_write_data(FontLookup[charsel-32][(int)i]
<<
1);
MOVF r0x1004,W
ADDLW (_FontLookup + 0)
MOVWF r0x1006
MOVLW high (_FontLookup + 0)
MOVWF r0x1007
...
I think so the problem comes from ignoring __mulchar overflow (which can and
will overflow for r0x1003>51). Is this some kind of bug or am I overlooking
something? Thanks.
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Sdcc-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sdcc-user