summaryrefslogtreecommitdiff
path: root/support/regression/tests/sfr16.c
blob: 5b97eebe78d142dc882e3a2f8c87ebb2072e950a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/*
   sfr16.c
*/

#include <testfwk.h>

#if defined (__SDCC_mcs51)
  __sfr __at 0x8A SFR_LSB;        //timer 0 low byte
  __sfr __at 0x8C SFR_MSB;        //timer 0 high byte
  __sfr16 __at 0x8C8A SFR_16;     //timer 0
  __sfr32 __at 0x8C8ACDCC SFR_32; //timer 0 & 2
#elif defined (__SDCC_ds390)
  __sfr __at 0x8B SFR_LSB;        //timer 1 low byte
  __sfr __at 0x8D SFR_MSB;        //timer 1 high byte
  __sfr16 __at 0x8D8B SFR_16;     //timer 1
  __sfr32 __at 0x8D8B8090 SFR_32; //timer 1 & P4 & P1
#endif

void
test_sfr (void)
{
#if defined (__SDCC_mcs51) || defined (__SDCC_ds390)
  SFR_16 = 0x00FE;
  ASSERT (SFR_MSB == 0x00);
  ASSERT (SFR_LSB == 0xFE);

  SFR_16++;
  ASSERT (SFR_MSB == 0x00);
  ASSERT (SFR_LSB == 0xFF);

  SFR_16++;
  ASSERT (SFR_MSB == 0x01);
  ASSERT (SFR_LSB == 0x00);

  SFR_LSB++;
  ASSERT (SFR_16 == 0x0101);

  SFR_32 = 0x12345678;
  SFR_32 -= 0x02040608;
  ASSERT (SFR_32 == 0x10305070);
#endif
}