// 1 bits for the PC5 factor
// 1 bits for the PC4 factor
// 1 bits for the PC3 factor
// 1 bits for the PC2 factor
// 1 bits for the PD4 factor
// 1 bits for the PD5 factor
// 1 bits for the PD6 factor
// 1 bits for the PD7 factor
// total of 8 bits in the state address
typedef struct FSM_State_s {
unsigned PC5 : 1;
unsigned PC4 : 1;
unsigned PC3 : 1;
unsigned PC2 : 1;
unsigned PD4 : 1;
unsigned PD5 : 1;
unsigned PD6 : 1;
unsigned PD7 : 1;
} FSM_State_t;
typedef unsigned int PTRType;
typedef struct stateEntry_s {
PTRType next;
FSM_State_t state;
} stateEntry_t;
//----------| PC5 |----------
#define off 0
#define on 1
//----------| PC4 |----------
#define off 0
#define on 1
//----------| PC3 |----------
#define off 0
#define on 1
//----------| PC2 |----------
#define off 0
#define on 1
//----------| PD4 |----------
#define off 0
#define on 1
//----------| PD5 |----------
#define off 0
#define on 1
//----------| PD6 |----------
#define off 0
#define on 1
//----------| PD7 |----------
#define off 0
#define on 1
//------------
// PC5 , PC4 , PC3 , PC2 , PD4 , PD5 , PD6 , PD7 ,
stateEntry_t stateTable[] = {
{ 0, { off , off , off , off , off , off , off , off , }} /* index: 0 */
{ 0, { on , off , off , off , off , off , off , off , }} /* index: 1 */
{ 0, { off , on , off , off , off , off , off , off , }} /* index: 2 */
{ 0, { on , on , off , off , off , off , off , off , }} /* index: 3 */
{ 0, { off , off , on , off , off , off , off , off , }} /* index: 4 */
{ 0, { on , off , on , off , off , off , off , off , }} /* index: 5 */
{ 0, { off , on , on , off , off , off , off , off , }} /* index: 6 */
{ 0, { on , on , on , off , off , off , off , off , }} /* index: 7 */
{ 0, { off , off , off , on , off , off , off , off , }} /* index: 8 */
{ 0, { on , off , off , on , off , off , off , off , }} /* index: 9 */
{ 0, { off , on , off , on , off , off , off , off , }} /* index: 10 */
{ 0, { on , on , off , on , off , off , off , off , }} /* index: 11 */
{ 0, { off , off , on , on , off , off , off , off , }} /* index: 12 */
{ 0, { on , off , on , on , off , off , off , off , }} /* index: 13 */
{ 0, { off , on , on , on , off , off , off , off , }} /* index: 14 */
{ 0, { on , on , on , on , off , off , off , off , }} /* index: 15 */
{ 0, { off , off , off , off , on , off , off , off , }} /* index: 16 */
{ 0, { on , off , off , off , on , off , off , off , }} /* index: 17 */
{ 0, { off , on , off , off , on , off , off , off , }} /* index: 18 */
{ 0, { on , on , off , off , on , off , off , off , }} /* index: 19 */
{ 0, { off , off , on , off , on , off , off , off , }} /* index: 20 */
{ 0, { on , off , on , off , on , off , off , off , }} /* index: 21 */
{ 0, { off , on , on , off , on , off , off , off , }} /* index: 22 */
{ 0, { on , on , on , off , on , off , off , off , }} /* index: 23 */
{ 0, { off , off , off , on , on , off , off , off , }} /* index: 24 */
{ 0, { on , off , off , on , on , off , off , off , }} /* index: 25 */
{ 0, { off , on , off , on , on , off , off , off , }} /* index: 26 */
{ 0, { on , on , off , on , on , off , off , off , }} /* index: 27 */
{ 0, { off , off , on , on , on , off , off , off , }} /* index: 28 */
{ 0, { on , off , on , on , on , off , off , off , }} /* index: 29 */
{ 0, { off , on , on , on , on , off , off , off , }} /* index: 30 */
{ 0, { on , on , on , on , on , off , off , off , }} /* index: 31 */
{ 0, { off , off , off , off , off , on , off , off , }} /* index: 32 */
{ 0, { on , off , off , off , off , on , off , off , }} /* index: 33 */
{ 0, { off , on , off , off , off , on , off , off , }} /* index: 34 */
{ 0, { on , on , off , off , off , on , off , off , }} /* index: 35 */
{ 0, { off , off , on , off , off , on , off , off , }} /* index: 36 */
{ 0, { on , off , on , off , off , on , off , off , }} /* index: 37 */
{ 0, { off , on , on , off , off , on , off , off , }} /* index: 38 */
{ 0, { on , on , on , off , off , on , off , off , }} /* index: 39 */
{ 0, { off , off , off , on , off , on , off , off , }} /* index: 40 */
{ 0, { on , off , off , on , off , on , off , off , }} /* index: 41 */
{ 0, { off , on , off , on , off , on , off , off , }} /* index: 42 */
{ 0, { on , on , off , on , off , on , off , off , }} /* index: 43 */
{ 0, { off , off , on , on , off , on , off , off , }} /* index: 44 */
{ 0, { on , off , on , on , off , on , off , off , }} /* index: 45 */
{ 0, { off , on , on , on , off , on , off , off , }} /* index: 46 */
{ 0, { on , on , on , on , off , on , off , off , }} /* index: 47 */
{ 0, { off , off , off , off , on , on , off , off , }} /* index: 48 */
{ 0, { on , off , off , off , on , on , off , off , }} /* index: 49 */
{ 0, { off , on , off , off , on , on , off , off , }} /* index: 50 */
{ 0, { on , on , off , off , on , on , off , off , }} /* index: 51 */
{ 0, { off , off , on , off , on , on , off , off , }} /* index: 52 */
{ 0, { on , off , on , off , on , on , off , off , }} /* index: 53 */
{ 0, { off , on , on , off , on , on , off , off , }} /* index: 54 */
{ 0, { on , on , on , off , on , on , off , off , }} /* index: 55 */
{ 0, { off , off , off , on , on , on , off , off , }} /* index: 56 */
{ 0, { on , off , off , on , on , on , off , off , }} /* index: 57 */
{ 0, { off , on , off , on , on , on , off , off , }} /* index: 58 */
{ 0, { on , on , off , on , on , on , off , off , }} /* index: 59 */
{ 0, { off , off , on , on , on , on , off , off , }} /* index: 60 */
{ 0, { on , off , on , on , on , on , off , off , }} /* index: 61 */
{ 0, { off , on , on , on , on , on , off , off , }} /* index: 62 */
{ 0, { on , on , on , on , on , on , off , off , }} /* index: 63 */
{ 0, { off , off , off , off , off , off , on , off , }} /* index: 64 */
{ 0, { on , off , off , off , off , off , on , off , }} /* index: 65 */
{ 0, { off , on , off , off , off , off , on , off , }} /* index: 66 */
{ 0, { on , on , off , off , off , off , on , off , }} /* index: 67 */
{ 0, { off , off , on , off , off , off , on , off , }} /* index: 68 */
{ 0, { on , off , on , off , off , off , on , off , }} /* index: 69 */
{ 0, { off , on , on , off , off , off , on , off , }} /* index: 70 */
{ 0, { on , on , on , off , off , off , on , off , }} /* index: 71 */
{ 0, { off , off , off , on , off , off , on , off , }} /* index: 72 */
{ 0, { on , off , off , on , off , off , on , off , }} /* index: 73 */
{ 0, { off , on , off , on , off , off , on , off , }} /* index: 74 */
{ 0, { on , on , off , on , off , off , on , off , }} /* index: 75 */
{ 0, { off , off , on , on , off , off , on , off , }} /* index: 76 */
{ 0, { on , off , on , on , off , off , on , off , }} /* index: 77 */
{ 0, { off , on , on , on , off , off , on , off , }} /* index: 78 */
{ 0, { on , on , on , on , off , off , on , off , }} /* index: 79 */
{ 0, { off , off , off , off , on , off , on , off , }} /* index: 80 */
{ 0, { on , off , off , off , on , off , on , off , }} /* index: 81 */
{ 0, { off , on , off , off , on , off , on , off , }} /* index: 82 */
{ 0, { on , on , off , off , on , off , on , off , }} /* index: 83 */
{ 0, { off , off , on , off , on , off , on , off , }} /* index: 84 */
{ 0, { on , off , on , off , on , off , on , off , }} /* index: 85 */
{ 0, { off , on , on , off , on , off , on , off , }} /* index: 86 */
{ 0, { on , on , on , off , on , off , on , off , }} /* index: 87 */
{ 0, { off , off , off , on , on , off , on , off , }} /* index: 88 */
{ 0, { on , off , off , on , on , off , on , off , }} /* index: 89 */
{ 0, { off , on , off , on , on , off , on , off , }} /* index: 90 */
{ 0, { on , on , off , on , on , off , on , off , }} /* index: 91 */
{ 0, { off , off , on , on , on , off , on , off , }} /* index: 92 */
{ 0, { on , off , on , on , on , off , on , off , }} /* index: 93 */
{ 0, { off , on , on , on , on , off , on , off , }} /* index: 94 */
{ 0, { on , on , on , on , on , off , on , off , }} /* index: 95 */
{ 0, { off , off , off , off , off , on , on , off , }} /* index: 96 */
{ 0, { on , off , off , off , off , on , on , off , }} /* index: 97 */
{ 0, { off , on , off , off , off , on , on , off , }} /* index: 98 */
{ 0, { on , on , off , off , off , on , on , off , }} /* index: 99 */
{ 0, { off , off , on , off , off , on , on , off , }} /* index: 100 */
{ 0, { on , off , on , off , off , on , on , off , }} /* index: 101 */
{ 0, { off , on , on , off , off , on , on , off , }} /* index: 102 */
{ 0, { on , on , on , off , off , on , on , off , }} /* index: 103 */
{ 0, { off , off , off , on , off , on , on , off , }} /* index: 104 */
{ 0, { on , off , off , on , off , on , on , off , }} /* index: 105 */
{ 0, { off , on , off , on , off , on , on , off , }} /* index: 106 */
{ 0, { on , on , off , on , off , on , on , off , }} /* index: 107 */
{ 0, { off , off , on , on , off , on , on , off , }} /* index: 108 */
{ 0, { on , off , on , on , off , on , on , off , }} /* index: 109 */
{ 0, { off , on , on , on , off , on , on , off , }} /* index: 110 */
{ 0, { on , on , on , on , off , on , on , off , }} /* index: 111 */
{ 0, { off , off , off , off , on , on , on , off , }} /* index: 112 */
{ 0, { on , off , off , off , on , on , on , off , }} /* index: 113 */
{ 0, { off , on , off , off , on , on , on , off , }} /* index: 114 */
{ 0, { on , on , off , off , on , on , on , off , }} /* index: 115 */
{ 0, { off , off , on , off , on , on , on , off , }} /* index: 116 */
{ 0, { on , off , on , off , on , on , on , off , }} /* index: 117 */
{ 0, { off , on , on , off , on , on , on , off , }} /* index: 118 */
{ 0, { on , on , on , off , on , on , on , off , }} /* index: 119 */
{ 0, { off , off , off , on , on , on , on , off , }} /* index: 120 */
{ 0, { on , off , off , on , on , on , on , off , }} /* index: 121 */
{ 0, { off , on , off , on , on , on , on , off , }} /* index: 122 */
{ 0, { on , on , off , on , on , on , on , off , }} /* index: 123 */
{ 0, { off , off , on , on , on , on , on , off , }} /* index: 124 */
{ 0, { on , off , on , on , on , on , on , off , }} /* index: 125 */
{ 0, { off , on , on , on , on , on , on , off , }} /* index: 126 */
{ 0, { on , on , on , on , on , on , on , off , }} /* index: 127 */
{ 0, { off , off , off , off , off , off , off , on , }} /* index: 128 */
{ 0, { on , off , off , off , off , off , off , on , }} /* index: 129 */
{ 0, { off , on , off , off , off , off , off , on , }} /* index: 130 */
{ 0, { on , on , off , off , off , off , off , on , }} /* index: 131 */
{ 0, { off , off , on , off , off , off , off , on , }} /* index: 132 */
{ 0, { on , off , on , off , off , off , off , on , }} /* index: 133 */
{ 0, { off , on , on , off , off , off , off , on , }} /* index: 134 */
{ 0, { on , on , on , off , off , off , off , on , }} /* index: 135 */
{ 0, { off , off , off , on , off , off , off , on , }} /* index: 136 */
{ 0, { on , off , off , on , off , off , off , on , }} /* index: 137 */
{ 0, { off , on , off , on , off , off , off , on , }} /* index: 138 */
{ 0, { on , on , off , on , off , off , off , on , }} /* index: 139 */
{ 0, { off , off , on , on , off , off , off , on , }} /* index: 140 */
{ 0, { on , off , on , on , off , off , off , on , }} /* index: 141 */
{ 0, { off , on , on , on , off , off , off , on , }} /* index: 142 */
{ 0, { on , on , on , on , off , off , off , on , }} /* index: 143 */
{ 0, { off , off , off , off , on , off , off , on , }} /* index: 144 */
{ 0, { on , off , off , off , on , off , off , on , }} /* index: 145 */
{ 0, { off , on , off , off , on , off , off , on , }} /* index: 146 */
{ 0, { on , on , off , off , on , off , off , on , }} /* index: 147 */
{ 0, { off , off , on , off , on , off , off , on , }} /* index: 148 */
{ 0, { on , off , on , off , on , off , off , on , }} /* index: 149 */
{ 0, { off , on , on , off , on , off , off , on , }} /* index: 150 */
{ 0, { on , on , on , off , on , off , off , on , }} /* index: 151 */
{ 0, { off , off , off , on , on , off , off , on , }} /* index: 152 */
{ 0, { on , off , off , on , on , off , off , on , }} /* index: 153 */
{ 0, { off , on , off , on , on , off , off , on , }} /* index: 154 */
{ 0, { on , on , off , on , on , off , off , on , }} /* index: 155 */
{ 0, { off , off , on , on , on , off , off , on , }} /* index: 156 */
{ 0, { on , off , on , on , on , off , off , on , }} /* index: 157 */
{ 0, { off , on , on , on , on , off , off , on , }} /* index: 158 */
{ 0, { on , on , on , on , on , off , off , on , }} /* index: 159 */
{ 0, { off , off , off , off , off , on , off , on , }} /* index: 160 */
{ 0, { on , off , off , off , off , on , off , on , }} /* index: 161 */
{ 0, { off , on , off , off , off , on , off , on , }} /* index: 162 */
{ 0, { on , on , off , off , off , on , off , on , }} /* index: 163 */
{ 0, { off , off , on , off , off , on , off , on , }} /* index: 164 */
{ 0, { on , off , on , off , off , on , off , on , }} /* index: 165 */
{ 0, { off , on , on , off , off , on , off , on , }} /* index: 166 */
{ 0, { on , on , on , off , off , on , off , on , }} /* index: 167 */
{ 0, { off , off , off , on , off , on , off , on , }} /* index: 168 */
{ 0, { on , off , off , on , off , on , off , on , }} /* index: 169 */
{ 0, { off , on , off , on , off , on , off , on , }} /* index: 170 */
{ 0, { on , on , off , on , off , on , off , on , }} /* index: 171 */
{ 0, { off , off , on , on , off , on , off , on , }} /* index: 172 */
{ 0, { on , off , on , on , off , on , off , on , }} /* index: 173 */
{ 0, { off , on , on , on , off , on , off , on , }} /* index: 174 */
{ 0, { on , on , on , on , off , on , off , on , }} /* index: 175 */
{ 0, { off , off , off , off , on , on , off , on , }} /* index: 176 */
{ 0, { on , off , off , off , on , on , off , on , }} /* index: 177 */
{ 0, { off , on , off , off , on , on , off , on , }} /* index: 178 */
{ 0, { on , on , off , off , on , on , off , on , }} /* index: 179 */
{ 0, { off , off , on , off , on , on , off , on , }} /* index: 180 */
{ 0, { on , off , on , off , on , on , off , on , }} /* index: 181 */
{ 0, { off , on , on , off , on , on , off , on , }} /* index: 182 */
{ 0, { on , on , on , off , on , on , off , on , }} /* index: 183 */
{ 0, { off , off , off , on , on , on , off , on , }} /* index: 184 */
{ 0, { on , off , off , on , on , on , off , on , }} /* index: 185 */
{ 0, { off , on , off , on , on , on , off , on , }} /* index: 186 */
{ 0, { on , on , off , on , on , on , off , on , }} /* index: 187 */
{ 0, { off , off , on , on , on , on , off , on , }} /* index: 188 */
{ 0, { on , off , on , on , on , on , off , on , }} /* index: 189 */
{ 0, { off , on , on , on , on , on , off , on , }} /* index: 190 */
{ 0, { on , on , on , on , on , on , off , on , }} /* index: 191 */
{ 0, { off , off , off , off , off , off , on , on , }} /* index: 192 */
{ 0, { on , off , off , off , off , off , on , on , }} /* index: 193 */
{ 0, { off , on , off , off , off , off , on , on , }} /* index: 194 */
{ 0, { on , on , off , off , off , off , on , on , }} /* index: 195 */
{ 0, { off , off , on , off , off , off , on , on , }} /* index: 196 */
{ 0, { on , off , on , off , off , off , on , on , }} /* index: 197 */
{ 0, { off , on , on , off , off , off , on , on , }} /* index: 198 */
{ 0, { on , on , on , off , off , off , on , on , }} /* index: 199 */
{ 0, { off , off , off , on , off , off , on , on , }} /* index: 200 */
{ 0, { on , off , off , on , off , off , on , on , }} /* index: 201 */
{ 0, { off , on , off , on , off , off , on , on , }} /* index: 202 */
{ 0, { on , on , off , on , off , off , on , on , }} /* index: 203 */
{ 0, { off , off , on , on , off , off , on , on , }} /* index: 204 */
{ 0, { on , off , on , on , off , off , on , on , }} /* index: 205 */
{ 0, { off , on , on , on , off , off , on , on , }} /* index: 206 */
{ 0, { on , on , on , on , off , off , on , on , }} /* index: 207 */
{ 0, { off , off , off , off , on , off , on , on , }} /* index: 208 */
{ 0, { on , off , off , off , on , off , on , on , }} /* index: 209 */
{ 0, { off , on , off , off , on , off , on , on , }} /* index: 210 */
{ 0, { on , on , off , off , on , off , on , on , }} /* index: 211 */
{ 0, { off , off , on , off , on , off , on , on , }} /* index: 212 */
{ 0, { on , off , on , off , on , off , on , on , }} /* index: 213 */
{ 0, { off , on , on , off , on , off , on , on , }} /* index: 214 */
{ 0, { on , on , on , off , on , off , on , on , }} /* index: 215 */
{ 0, { off , off , off , on , on , off , on , on , }} /* index: 216 */
{ 0, { on , off , off , on , on , off , on , on , }} /* index: 217 */
{ 0, { off , on , off , on , on , off , on , on , }} /* index: 218 */
{ 0, { on , on , off , on , on , off , on , on , }} /* index: 219 */
{ 0, { off , off , on , on , on , off , on , on , }} /* index: 220 */
{ 0, { on , off , on , on , on , off , on , on , }} /* index: 221 */
{ 0, { off , on , on , on , on , off , on , on , }} /* index: 222 */
{ 0, { on , on , on , on , on , off , on , on , }} /* index: 223 */
{ 0, { off , off , off , off , off , on , on , on , }} /* index: 224 */
{ 0, { on , off , off , off , off , on , on , on , }} /* index: 225 */
{ 0, { off , on , off , off , off , on , on , on , }} /* index: 226 */
{ 0, { on , on , off , off , off , on , on , on , }} /* index: 227 */
{ 0, { off , off , on , off , off , on , on , on , }} /* index: 228 */
{ 0, { on , off , on , off , off , on , on , on , }} /* index: 229 */
{ 0, { off , on , on , off , off , on , on , on , }} /* index: 230 */
{ 0, { on , on , on , off , off , on , on , on , }} /* index: 231 */
{ 0, { off , off , off , on , off , on , on , on , }} /* index: 232 */
{ 0, { on , off , off , on , off , on , on , on , }} /* index: 233 */
{ 0, { off , on , off , on , off , on , on , on , }} /* index: 234 */
{ 0, { on , on , off , on , off , on , on , on , }} /* index: 235 */
{ 0, { off , off , on , on , off , on , on , on , }} /* index: 236 */
{ 0, { on , off , on , on , off , on , on , on , }} /* index: 237 */
{ 0, { off , on , on , on , off , on , on , on , }} /* index: 238 */
{ 0, { on , on , on , on , off , on , on , on , }} /* index: 239 */
{ 0, { off , off , off , off , on , on , on , on , }} /* index: 240 */
{ 0, { on , off , off , off , on , on , on , on , }} /* index: 241 */
{ 0, { off , on , off , off , on , on , on , on , }} /* index: 242 */
{ 0, { on , on , off , off , on , on , on , on , }} /* index: 243 */
{ 0, { off , off , on , off , on , on , on , on , }} /* index: 244 */
{ 0, { on , off , on , off , on , on , on , on , }} /* index: 245 */
{ 0, { off , on , on , off , on , on , on , on , }} /* index: 246 */
{ 0, { on , on , on , off , on , on , on , on , }} /* index: 247 */
{ 0, { off , off , off , on , on , on , on , on , }} /* index: 248 */
{ 0, { on , off , off , on , on , on , on , on , }} /* index: 249 */
{ 0, { off , on , off , on , on , on , on , on , }} /* index: 250 */
{ 0, { on , on , off , on , on , on , on , on , }} /* index: 251 */
{ 0, { off , off , on , on , on , on , on , on , }} /* index: 252 */
{ 0, { on , off , on , on , on , on , on , on , }} /* index: 253 */
{ 0, { off , on , on , on , on , on , on , on , }} /* index: 254 */
{ 0, { on , on , on , on , on , on , on , on , }} /* index: 255 */
};