-
Notifications
You must be signed in to change notification settings - Fork 0
/
shifter_595.c
125 lines (105 loc) · 2.77 KB
/
shifter_595.c
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include <msp430G2553.h>
/*------]]]]-------------------------------------------
74HC595
-----------------
-->|Q1 VCC|<-- Ground
| |
-->|Q2 Q0|--> unused
| |
-->|Q3 DIN|--> unused
| |
<--|Q4 OE|--> Open
| |
<--|Q5 LTCH|<-- Pulled high
| |
<--|Q6 SCLK|--> SIN_595
| |
<--|Q7 MR|--> unused
| |
<--|GND DOUT|<-- unused
| |
-----------------
-------------------------------------------------*/
//PIN 595
#define SIN595 BIT7
#define SCL595 BIT4
#define LTCH595 BIT5
unsigned char disp_arr[2]={0xAA,0x55};
void InitializeClocks(void);
void SendData(void);
void main(void)
{
char temp_disp;
WDTCTL = WDTPW + WDTHOLD;
//595 initialization
P1DIR = 0;
P1DIR |= (SIN595 + SCLK595 + LTCH595);
P1OUT=0;
InitializeClocks(); // Setup clock
// IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt
_bis_SR_register(GIE);
while (1)
{
SendData(); // Send current Step data to TLC5940
P1OUT|=LTCH595;
P1OUT&=~(LTCH595);
_delay_cycles(100000);
temp_disp=disp_arr[0];
disp_arr[0]=disp_arr[1];
disp_arr[1]=temp_disp;
}
}
void SendData(void)
{
char i,temp;
P1OUT &= ~(SIN595 + LTCH595 + SCLK595);
for (i = 0; i < 2; i++)
{
temp=disp_arr[i];
P1OUT&=~(SIN595);
P1OUT|=SIN595&temp;
P1OUT|=SCLK595;
P1OUT&=~SCLK595;
temp=temp<<1;
P1OUT&=~(SIN595);
P1OUT|=SIN595&temp;
P1OUT|=SCLK595;
P1OUT&=~SCLK595;
temp=temp<<1;
P1OUT&=~(SIN595);
P1OUT|=SIN595&temp;
P1OUT|=SCLK595;
P1OUT&=~SCLK595;
temp=temp<<1;
P1OUT&=~(SIN595);
P1OUT|=SIN595&temp;
P1OUT|=SCLK595;
P1OUT&=~SCLK595;
temp=temp<<1;
P1OUT&=~(SIN595);
P1OUT|=SIN595&temp;
P1OUT|=SCLK595;
P1OUT&=~SCLK595;
temp=temp<<1;
P1OUT&=~(SIN595);
P1OUT|=SIN595&temp;
P1OUT|=SCLK595;
P1OUT&=~SCLK595;
temp=temp<<1;
P1OUT&=~(SIN595);
P1OUT|=SIN595&temp;
P1OUT|=SCLK595;
P1OUT&=~SCLK595;
temp=temp<<1;
P1OUT&=~(SIN595);
P1OUT|=SIN595&temp;
P1OUT|=SCLK595;
P1OUT&=~SCLK595;
temp=temp<<1;
}
}
void InitializeClocks(void)
{
BCSCTL1 = CALBC1_1MHZ;
DCOCTL = CALDCO_1MHZ;
}