Imported Upstream version 2.9.0
[debian/cc1111] / device / examples / test3.c
1 /*------------------------------------------------------------------------
2  test3.c - A simple multiple module example, uses itoa() and crc()
3   routines from other modules in same directory.  Compile with:
4     make -f maketest3
5 |------------------------------------------------------------------------*/
6 #if defined(__mcs51)
7 #include <8052.h>
8 #endif
9 #if defined(__ds390)
10 #include <ds390.h>
11 #endif
12 #include <stdio.h>
13
14 typedef unsigned char byte;
15 typedef unsigned int word;
16 typedef unsigned long l_word;
17
18 void uitoa(unsigned int value, char* string, int radix);
19 void itoa(int value, char* string, int radix);
20 byte accum_checksum(byte cs, byte val);
21
22 char tmpstr[30];
23
24 int i;
25
26 #if defined(__mcs51) || defined(__ds390)
27 /*------------------------------------------------------------------------
28   tx_char - transmit(tx) a char out the serial uart.
29 |------------------------------------------------------------------------*/
30 void tx_char(char c)
31 {
32   SBUF = c;
33   while (!TI)
34     ;
35   TI = 0;
36 }
37
38 /*------------------------------------------------------------------------
39   my_puts - 
40 |------------------------------------------------------------------------*/
41 void my_puts(char *str)
42 {
43   
44   while (*str)
45     tx_char(*str++);
46 }
47
48 /*------------------------------------------------------------------------
49   init_mcs51 - 
50 |------------------------------------------------------------------------*/
51 void init_mcs51(void)
52 {
53   PCON = 0x80;  /* power control byte, set SMOD bit for serial port */
54   SCON = 0x50;  /* serial control byte, mode 1, RI active */
55   TMOD = 0x21;  /* timer control mode, byte operation */
56   TCON = 0;     /* timer control register, byte operation */
57
58   TH1 = 0xFA;   /* serial reload value, 9,600 baud at 11.0952Mhz */
59   TR1 = 1;      /* start serial timer */
60
61   EA = 1;       /* Enable Interrupts */
62
63   TI = 0;       /* clear this out */
64 }
65 #else
66 /*------------------------------------------------------------------------
67   my_puts - 
68 |------------------------------------------------------------------------*/
69 void my_puts(char *str)
70 {
71   
72   while (*str)
73     putchar(*str++);  /* putchar() is lib routine which calls simulator trap */
74 }
75 #endif
76
77 /*------------------------------------------------------------------------
78   main - Simple test program to send out something to the serial port.
79 |------------------------------------------------------------------------*/
80 int main(void)
81 {
82   byte ccs;
83   unsigned int tmp;
84
85 #if defined(__mcs51) || defined(__ds390)
86   init_mcs51();
87 #endif
88
89   ccs = 0x3f;
90   tmp = (ccs<<7);
91   my_puts("0x3f<<7 hex=");
92   uitoa(tmp, tmpstr, 10);
93   my_puts(tmpstr);
94   my_puts("\n");
95
96 #if 0
97   byte r,cs,val;
98   unsigned int tmp;
99   cs = 0xff;
100   val = 0;
101   tmp = ((cs<<7) | (cs>>1)) + val;
102   printf("tmp=%xH(0x7fff)\n", tmp);
103   cs = 0xfd;
104   tmp = ((cs<<7) | (cs>>1)) + val;
105   printf("tmp=%xH(0x7efe)\n", tmp);
106   //    return (byte)tmp + ((byte) (tmp>>8) & 1);
107 #endif
108
109
110   my_puts("Test3 - multiple module test\n");
111
112   my_puts("1023 decimal=");
113   uitoa(1023, tmpstr, 10);
114   my_puts(tmpstr);
115   my_puts(" hex=");
116   uitoa(1023, tmpstr, 0x10);
117   my_puts(tmpstr);
118   my_puts("\n");
119
120   my_puts(" chksum=");
121 //  i = accum_checksum(50, 20);
122   uitoa(i, tmpstr, 10);
123   my_puts(tmpstr);
124   my_puts("\n");
125
126   for (;;)
127   {
128   }
129   return 0;
130 }
131