Hi All,
Perhaps someone can help with the two functions shown below.
The scenario is:
I desire to empty a hardware buffer, and just throw away it's contents.
In both functions the requirement is to read BtRdl1 until the hardware
device at this address shows empty as in (BtRdl1Stat & Rmpty)
Assumption:
Just placing an identifier, BtRdl1, will cause it to be read.
The result:
Function 1 does not work
Function 2 does work
The question:
Why does function 1 not work?
Target:
mcs51
SDCC:
C:\SDCC>sdcc -v
SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08
2.7.4 #5003 (Feb 11 2008) (MINGW32)
volatile __xdata uchar at (Bt8370_Base + 0xA8) BtRdl1;
volatile __xdata uchar at (Bt8370_Base + 0xA9) BtRdl1Stat;
#define Rmpty 0x04
Func 1
---------
void l1_ClrBt8370_DL(void)
{
while (BtRdl1Stat & Rmpty) BtRdl1;
}
Func 2
---------
void l1_ClrBt8370_DL(void)
{
while (BtRdl1Stat & Rmpty)
{
BtRdl1;
}
}
Kind Regards, Mike
Mike Allsworth
Tel: +27 (0)11 794 5273
Cell: +27 (0)82 572 3079
email: [EMAIL PROTECTED]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user