On Fri, 5 Sep 2014, r...@remi.lu wrote:

> Hello
>
> SDCC : stm8 3.4.1 #9068 (Sep  5 2014) (Linux)
>
> I dont see the difference between this ( A and B ) :
>
> I have _lcdchar   declared by :
>
> .area OSEG
> _varOne:
> .ds   1
> _lcdchar:
> .db   1
>
> .area CSEG
>
> .
> .which seems not working, at least the way variables
>   are to mee in assembly ...
> .

Assuming you aren't using a custom linker script, I think you should use 
areas DATA and CODE instead of OSEG and CSEG. In particular, OSEG is 
usually used to hold temporary values in functions that do not call other 
functions because all of the OSEG areas overlay (the O in OSEG) each 
other. So if your delay_m function also uses a variable in OSEG (or calls 
some other function that does), this other variable is likely to be at the 
same memory location as lcdchar, and so lcdchar is overwritten.

   Erik



------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user

Reply via email to