LMS 2012
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
p5.c
Go to the documentation of this file.
1 
8 UBYTE prg[] = // p5.c
9 { //
10  PROGRAMHeader(0,1,0), // 0 VersionInfo,NumberOfObjects,GlobalBytes
11  VMTHREADHeader(0,3), // 12 OffsetToInstructions,LocalBytes
12  //
13  // 24 VMTHREAD1
14  // {
15  opUI_WRITE,LC0(PUT_STRING),LCS, // UI_WRITE(STRING," LineFollower\r\n")
16  ' ',' ',' ',' ', //
17  'L','i','n','e','F','o','l', //
18  'l','o','w','e','r', //
19  '\r','\n',0, //
20  opUI_FLUSH, // UI_FLUSH
21  //
22  opINPUT_READ,LC0(0),LC0(1), // INPUT_READ(0,0,2,LV0) // Read light sensor
23  LC1(2),LC0(1),LV0(0), //
24  opDIV8,LV0(0),LC0(2),LV0(0), // LV0 /= 2
25  opADD8,LV0(0),LC0(15),LV0(0), // LV0 += 15
26  //
27  // do
28  // {
29  opINPUT_READ,LC0(0),LC0(1), // INPUT_READ(0,0,2) // Read light sensor
30  LC1(2),LC0(1),LV0(1), //
31  opSUB8,LV0(1),LV0(0),LV0(1), // LV1 -= LV0
32  opDIV8,LV0(1),LC0(2),LV0(1), // LV1 /= 2
33  opADD8,LC1(40),LV0(1),LV0(2), // LV2 = 40 + LV1
34  opSUB8,LC1(40),LV0(1),LV0(3), // LV3 = 40 - LV1
35  //
36  opOUTPUT_POWER,LC0(0),LC0(1),LV0(3), // OUTPUT_POWER(0,0x1,LV3) // Motor 1 = LV3
37  opOUTPUT_POWER,LC0(0),LC0(2),LV0(2), // OUTPUT_POWER(0,0x2,LV2) // Motor 2 = LV2
38  //
39  opOUTPUT_START,LC0(0),LC0(3), // OUTPUT_START(0,0x3)
40  //
41  // }
42  opJR,LC1(-39), // while (TRUE)
43  opOBJECT_END // }
44 };
45 
46 /* \endverbatim
47 */
48 
49 
50 /*
51 // Connections
52 #define OUTPUT_A LC0(0),LC0(1)
53 #define OUTPUT_B LC0(0),LC0(2)
54 #define OUTPUT_AB LC0(0),LC0(3)
55 #define INPUT_1 LC0(0),LC0(0)
56 
57 // Types
58 #define LIGHT_TYPE LC0(2),LC0(1)
59 
60 // Labels
61 #define _LOOP opLABEL,LC0(1)
62 #define LOOP LAB1(1)
63 
64 // Constants
65 #define MID_PWR LC1(40)
66 #define OFFSET LC0(15)
67 #define HALF LC0(2)
68 
69 // Globals
70 #define GLOBALS 0
71 
72 // Locals 1
73 #define LOCALS_1 4
74 #define Offset LV0(0)
75 #define Light LV0(1)
76 #define Power_A LV0(2)
77 #define Power_B LV0(3)
78 
79 IMGDATA prg[] = // p5.c
80 {
81  PROGRAMHeader(0,1,GLOBALS),
82  VMTHREADHeader(0,LOCALS_1), // Object 1
83 
84  // Object 1 (VMTHREAD)
85 
86  opUI_WRITE,LC0(PUT_STRING),LCS,' ',' ',' ',' ','L','i','n','e','F','o','l','l','o','w','e','r','\r','\n',0,
87  opUI_FLUSH,
88 
89  // Calibrate
90  opINPUT_READ, INPUT_1, LIGHT_TYPE, Offset,
91  opDIV8, Offset, HALF, Offset,
92  opADD8, Offset, OFFSET, Offset,
93  opOUTPUT_START, OUTPUT_AB,
94 
95  _LOOP,
96  //
97  // Read input
98  opINPUT_READ, INPUT_1, LIGHT_TYPE, Light,
99 
100  // Calculate power
101  opSUB8, Light, Offset, Light,
102  opDIV8, Light, HALF, Light,
103  opADD8, MID_PWR, Light, Power_B,
104  opSUB8, MID_PWR, Light, Power_A,
105 
106  // Set outputs
107  opOUTPUT_POWER, OUTPUT_A, Power_A,
108  opOUTPUT_POWER, OUTPUT_B, Power_B,
109  //
110  opJR, LOOP,
111 
112  opOBJECT_END
113 };
114 */
#define LC1(v)
Definition: bytecodes.h:1616
UBYTE prg[]
Definition: p0.c:1
#define VMTHREADHeader(OffsetToInstructions, LocalBytes)
Definition: bytecodes.h:1573
#define PROGRAMHeader(VersionInfo, NumberOfObjects, GlobalBytes)
Definition: bytecodes.h:1570
#define LCS
Definition: bytecodes.h:1611
#define LC0(v)
Definition: bytecodes.h:1615
#define LV0(i)
Definition: bytecodes.h:1621
unsigned char UBYTE
Basic Type used to symbolise 8 bit unsigned values.
Definition: lmstypes.h:29