-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmultiplex_micha.c
50 lines (38 loc) · 1.44 KB
/
multiplex_micha.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
//includes
main ()
{
DDRA = 0b00000000; // (8 dateneingänge 1|0 bis 4|1) alle pins port b als eingang
PORTA = 0x00; // interne Pull-Ups an allen Port-Pins deaktivieren
DDRB = 0b00001111; // (bit 0 bis 3 als ausgang 1Y bis 4Y) (bit 4 als enable und bit 5 als select input) port b pin 0,1,2,3 als ausgang rest eingang
PORTB &= ~( (1<<PB4) (1<<PB5) ); // pullups deaktivieren für enable und select
bool enable = false; //bit4 port b
bool select = false; //bit5 port b
while(1)
{
enable = !(PINB & (1<<PINB4)); //enable ist true wenn portpin low
select = PINB & (1<<PINB5); //select true wenn portpin high
if (select ==true && enable==true)
{
//ausgang 1Y in abhängikeit des eingangs setzten
//das geht bestimmt auch schöner, weiß aber nicht wie
if (PINA & (1 << PA0)) //wenn 1|0 high
{PORTB |= (1<<PB0);} //high output 1Y (PB0)
else //wenn 1|0 low
{PORTB &= ~(1<<PB0);} //low output 1Y (PB0)
//... hier die 3 verbleibenden 2|0 , 3|0 , 4|0
}
else if (select ==false && enable==true)
{
//ausgang 1Y in abhängikeit des eingangs setzten
if (PINA & (1 << PA1)) //wenn 1|1 high
{PORTB |= (1<<PB0);} //high output 1Y (PB0)
else //wenn 1|1 low
{PORTB &= ~(1<<PB1);} //low output 1Y (PB0)
//... hier die 3 verbleibenden 2|1 , 3|1 , 4|1
}
else // enable ist falsch , eingänge sind egal
{
PORTB = 0x00; //alle ausgänge low
}
}
}