a5906f6dd52796a690550c45dce159587b88e0bb
[fw/altos] / blink.c
1
2 sfr at 0x80 P0;
3 sfr at 0x90 P1;
4 sfr at 0xA0 P2;
5
6 #define PERCFG  SFR(0xF1)
7 #define ADCCFG  SFR(0xF2)
8 #define P0SEL   SFR(0xF3)
9 #define P1SEL   SFR(0xF4)
10 #define P2SEL   SFR(0xF5)
11
12 sfr at 0xFD P0DIR;
13 sfr at 0xFE P1DIR;
14 sfr at 0xFF P2DIR;
15 sfr at 0x8F P0INP;
16 sfr at 0xF6 P1INP;
17 sfr at 0xF7 P2INP;
18
19 #define P0IFG   SFR(0x89)
20 #define P1IFG   SFR(0x8A)
21 #define P2IFG   SFR(0x8B)
22
23 #define nop()   _asm \
24                 nop \
25                 _endasm;
26
27 #if 0
28 void
29 delay (int n)
30 {
31         int i, j, k;
32
33         for (k = 0; k < n; k++) {
34                 for (j = 0; j < 50; j++)
35                         for (i = 0; i < 1000; i++)
36                                 nop();
37         }
38 }
39
40 void
41 dit() {
42         P1 = 0xff;
43         delay(1);
44         P1 = 0xfd;
45         delay(1);
46 }
47
48 void
49 dah () {
50         P1 = 0xff;
51         delay(3);
52         P1 = 0xfd;
53         delay(1);
54 }
55
56 void
57 charspace () {
58         delay(2);
59 }
60
61 void
62 wordspace () {
63         delay(8);
64 }
65
66 #define _ dit();
67 #define ___ dah();
68 #define C charspace();
69 #define W wordspace();
70
71 #endif
72
73 main ()
74 {
75 #if 0
76         /* Set p1_1 to output */
77         P1DIR = 0x02;
78         P1INP = 0x00;
79         P2INP = 0x00;
80         for (;;) {
81                 ___ _ ___ _ C ___ ___ _ ___ W   /* cq */
82                 ___ _ _ C _ W                   /* de */
83                 ___ _ ___ C ___ _ _ C           /* kd */
84                 ___ ___ _ _ _ C _ _ _ C         /* 7s */
85                 ___ ___ _ ___ C ___ ___ _ W     /* qg */
86         }
87 #else
88         P1DIR = 0x02;
89         for (;;);
90 #endif
91 }