blob: 76ea94fb2a115092675d4e876a9b1277e832952e (
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
|
#include "traffic_lights.h"
void init(unsigned char *lights)
{
*lights <<= 4;
}
void turn_on(unsigned char *lights, unsigned char light_num)
{
*lights |= 1 << (light_num - 1);
}
void turn_off(unsigned char *lights, unsigned char light_num)
{
*lights &= ~(1 << (light_num - 1));
}
void next_step(unsigned char *lights)
{
*lights <<= 1;
*lights += *lights >> 4;
}
void reverse(unsigned char *lights)
{
*lights = ~*lights;
}
void swap(unsigned char *lights_1, unsigned char *lights_2)
{
if (lights_1 == lights_2)
{
return;
}
*lights_1 = *lights_2 ^ *lights_1;
*lights_2 = *lights_1 ^ *lights_2;
*lights_1 = *lights_2 ^ *lights_1;
}
|