Beruflich Dokumente
Kultur Dokumente
1. #include<msp430g2553.h>
2.
3. #defineREINICIAP1DIR&=~(BIT0+BIT1+BIT2);P1OUT&=~(BIT0+BIT1+BIT2);
4.
5. void
main
(
void
)
6. {
7.
volatile
unsigned
int
i
;
8. WDTCTL
=
WDTPW
+
WDTHOLD
;
9.
10.
while
(
1
)
11.
{
12.
for
(
i
=
0
;
i
<
40000
;
i
++
)
13.
{
14.
//Acendevermelho1
15.REINICIA
16.P1DIR
|=
BIT0
+
BIT1
;
17.P1OUT
|=
BIT0
;
18.
//Acendeverde2
19.REINICIA
20.P1DIR
|=
BIT1
+
BIT2
;
21.P1OUT
|=
BIT2
;
22.
}
23.
for
(
i
=
0
;
i
<
20000
;
i
++
)
24.
{
25.
//Acendevermelho1
26.REINICIA
27.P1DIR
|=
BIT0
+
BIT1
;
28.P1OUT
|=
BIT0
;
29.
//Acendeverde2
30.REINICIA
31.P1DIR
|=
BIT1
+
BIT2
;
32.P1OUT
|=
BIT2
;
33.
//Acendeamarelo2
34.REINICIA
35.P1DIR
|=
BIT0
+
BIT2
;
36.P1OUT
|=
BIT2
;
37.
}
38.
for
(
i
=
0
;
i
<
40000
;
i
++
)
39.
{
40.
//Acendeverde1
41.REINICIA
42.P1DIR
|=
BIT1
+
BIT2
;
43.P1OUT
|=
BIT1
;
44.
//Acendevermelho2
45.REINICIA
46.P1DIR
|=
BIT0
+
BIT1
;
47.P1OUT
|=
BIT1
;
48.
}
49.
for
(
i
=
0
;
i
<
20000
;
i
++
)
50.
{
51.
//Acendeverde1
52.REINICIA
53.P1DIR
|=
BIT1
+
BIT2
;
54.P1OUT
|=
BIT1
;
55.
//Acendeamarelo1
56.REINICIA
57.P1DIR
|=
BIT0
+
BIT2
;
58.P1OUT
|=
BIT0
;
59.
//Acendevermelho2
60.REINICIA
61.P1DIR
|=
BIT0
+
BIT1
;
62.P1OUT
|=
BIT1
;
63.
}
64.
}
65.}
Cdigoparasemforocomcharlieplexing,commquinadeestados.
1. #include<msp430g2553.h>
2.
3. #defineVM1BIT0
4. #defineVM2BIT1
5. #defineVD1BIT2
6. #defineVD2BIT3
7. #defineAM1BIT4
8. #defineAM2BIT5
9.
10.void
Charlieplex
(
volatile
unsigned
int
tempo
,
volatile
char
LEDs
)
11.{
12.
//VM1,VM2,VD1,VD2,AM1,AM2
13.
volatile
char
catodo
[
{
BIT1
,
BIT0
,
BIT2
,
BIT1
,
BIT2
,
BIT0
}
;
14.
volatile
char
anodo
[
{
BIT0
,
BIT1
,
BIT1
,
BIT2
,
BIT0
,
BIT2
}
;
15.
volatile
char
dirs
[
{
0
,
0
,
0
,
0
,
0
,
0
}
;
16.
volatile
char
outs
[
{
0
,
0
,
0
,
0
,
0
,
0
}
;
17.
volatile
int
i
;
18.
19.
for
(
i
=
0
;
i
<
6
;
i
++
)
20.
{
21.
if
(
LEDs
&
(
BIT0
<<
i
))
22.
{
23.dirs
[
i
]
|=
catodo
[
i
]
+
anodo
[
i
]
;
24.outs
[
i
]
|=
anodo
[
i
]
;
25.
}
26.
}
27.
28.
while
(
tempo
29.
{
30.
for
(
i
=
0
;
i
<
6
;
i
++
)
31.
{
32.P1DIR
&=
~
(
BIT0
+
BIT1
+
BIT2
)
;
33.P1OUT
&=
~
(
BIT0
+
BIT1
+
BIT2
)
;
34.P1DIR
|=
dirs
[
i
]
;
35.P1OUT
|=
outs
[
i
]
;
36.
}
37.
}
38.}
39.
40.void
main
(
void
)
41.{
42.WDTCTL
=
WDTPW
+
WDTHOLD
;
43.
44.
while
(
1
)
45.
{
46.Charlieplex
(
10000
,
VM1
+
VD2
)
;
47.Charlieplex
(
5000
,
VM1
+
VD2
+
AM2
)
;
48.Charlieplex
(
10000
,
VM2
+
VD1
)
;
49.Charlieplex
(
5000
,
VM2
+
VD1
+
AM1
)
;
50.
}
51.}
Outrocdigoparasemforocomcharlieplexing,commquinadeestados.
#include<msp430g2553.h>
//D1=Verm1,D2=Verde2,D3=Am1,D4=Am2,D5=Verde1,D6=Verm2
#defineR11
#defineR22
#defineY13
#defineY24
#defineG15
#defineG26
void
Charlieplex(
volatile
char
num_led)
{
P1DIR&=~(BIT0+BIT1+BIT2)
P1OUT&=~(BIT0+BIT1+BIT2)
switch
(num_led)
{
case
R1:
//Verm1D1
P1DIR|=BIT1+BIT2
P1OUT|=BIT1
break
case
R2:
//Verm2D6
P1DIR|=BIT0+BIT2
P1OUT|=BIT2
break
case
Y1:
//Am1D3
P1DIR|=BIT0+BIT1
P1OUT|=BIT0
break
case
Y2:
//Am2D4
P1DIR|=BIT0+BIT1
P1OUT|=BIT1
break
case
G1:
//Verde1D5
P1DIR|=BIT0+BIT2
P1OUT|=BIT0
break
case
G2:
//Verde2D2
P1DIR|=BIT1+BIT2
P1OUT|=BIT1
break
}
}
void
main(
void
)
{
volatile
unsigned
int
i,est
volatile
char
ch1[]={R1,R1,G1,Y1}
volatile
char
ch2[]={G2,Y2,R2,R2}
volatile
unsigned
int
t[]={50000,25000,50000,25000}
WDTCTL=WDTPW+WDTHOLD
for
()
{
for
(est=0est<4est++)
{
5
for
(i=0i<t[est]i++)
{
Charlieplex(ch1[est])
Charlieplex(ch2[est])
}
}
}
}