add led state off

This commit is contained in:
Wolfgang Hottgenroth 2019-01-24 22:57:41 +01:00
parent be38a8b7d0
commit 459ad36b0d
Signed by: wn
GPG Key ID: B586EAFCDF2F65F4
2 changed files with 104 additions and 75 deletions

177
led.c
View File

@ -58,79 +58,109 @@ static inline void selectRow(uint8_t row) {
col3, red: P1.6 col3, red: P1.6
*/ */
typedef enum { BLUE = 0, RED = 1 } tColor;
void selectCol(uint8_t column, tColor color) { void selectCol(uint8_t column, tColor color) {
if (color == BLUE) { switch (color) {
switch (column) { case BLUE:
case 0: switch (column) {
P1DIR &= ~(BIT6); case 0:
P1OUT &= ~(BIT6); P1DIR &= ~(BIT6);
P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5); P1OUT &= ~(BIT6);
P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5); P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P1DIR |= BIT5; P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P1OUT &= ~BIT5; P1DIR |= BIT5;
break; P1OUT &= ~BIT5;
case 1: break;
P1DIR &= ~(BIT5 | BIT6); case 1:
P1OUT &= ~(BIT5 | BIT6); P1DIR &= ~(BIT5 | BIT6);
P2DIR &= ~(BIT0 | BIT1 | BIT4 | BIT3 | BIT5); P1OUT &= ~(BIT5 | BIT6);
P2OUT &= ~(BIT0 | BIT1 | BIT4 | BIT3 | BIT5); P2DIR &= ~(BIT0 | BIT1 | BIT4 | BIT3 | BIT5);
P2DIR |= BIT2; P2OUT &= ~(BIT0 | BIT1 | BIT4 | BIT3 | BIT5);
P2OUT &= ~BIT2; P2DIR |= BIT2;
break; P2OUT &= ~BIT2;
case 2: break;
P1DIR &= ~(BIT5 | BIT6); case 2:
P1OUT &= ~(BIT5 | BIT6); P1DIR &= ~(BIT5 | BIT6);
P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT3 | BIT5); P1OUT &= ~(BIT5 | BIT6);
P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT3 | BIT5); P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT3 | BIT5);
P2DIR |= BIT4; P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT3 | BIT5);
P2OUT &= ~BIT4; P2DIR |= BIT4;
break; P2OUT &= ~BIT4;
case 3: break;
P1DIR &= ~(BIT5 | BIT6); case 3:
P1OUT &= ~(BIT5 | BIT6); P1DIR &= ~(BIT5 | BIT6);
P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT3 | BIT4); P1OUT &= ~(BIT5 | BIT6);
P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT3 | BIT4); P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT3 | BIT4);
P2DIR |= BIT5; P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT3 | BIT4);
P2OUT &= ~BIT5; P2DIR |= BIT5;
break; P2OUT &= ~BIT5;
} break;
} else { }
switch (column) { break;
case 0: case RED:
P1DIR &= ~(BIT5 | BIT6); switch (column) {
P1OUT &= ~(BIT5 | BIT6); case 0:
P2DIR &= ~(BIT2 | BIT1 | BIT4 | BIT3 | BIT5); P1DIR &= ~(BIT5 | BIT6);
P2OUT &= ~(BIT2 | BIT1 | BIT4 | BIT3 | BIT5); P1OUT &= ~(BIT5 | BIT6);
P2DIR |= BIT0; P2DIR &= ~(BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P2OUT &= ~BIT0; P2OUT &= ~(BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
break; P2DIR |= BIT0;
case 1: P2OUT &= ~BIT0;
P1DIR &= ~(BIT5 | BIT6); break;
P1OUT &= ~(BIT5 | BIT6); case 1:
P2DIR &= ~(BIT0 | BIT2 | BIT4 | BIT3 | BIT5); P1DIR &= ~(BIT5 | BIT6);
P2OUT &= ~(BIT0 | BIT2 | BIT4 | BIT3 | BIT5); P1OUT &= ~(BIT5 | BIT6);
P2DIR |= BIT1; P2DIR &= ~(BIT0 | BIT2 | BIT4 | BIT3 | BIT5);
P2OUT &= ~BIT1; P2OUT &= ~(BIT0 | BIT2 | BIT4 | BIT3 | BIT5);
break; P2DIR |= BIT1;
case 2: P2OUT &= ~BIT1;
P1DIR &= ~(BIT5 | BIT6); break;
P1OUT &= ~(BIT5 | BIT6); case 2:
P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT5); P1DIR &= ~(BIT5 | BIT6);
P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT5); P1OUT &= ~(BIT5 | BIT6);
P2DIR |= BIT3; P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT5);
P2OUT &= ~BIT3; P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT5);
break; P2DIR |= BIT3;
case 3: P2OUT &= ~BIT3;
P1DIR &= ~(BIT5); break;
P1OUT &= ~(BIT5); case 3:
P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5); P1DIR &= ~(BIT5);
P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5); P1OUT &= ~(BIT5);
P1DIR |= BIT6; P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P1OUT &= ~BIT6; P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
break; P1DIR |= BIT6;
} P1OUT &= ~BIT6;
break;
}
break;
case OFF:
switch (column) {
case 0:
P1DIR &= ~(BIT5 | BIT6);
P1OUT &= ~(BIT5 | BIT6);
P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
break;
case 1:
P1DIR &= ~(BIT5 | BIT6);
P1OUT &= ~(BIT5 | BIT6);
P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
break;
case 2:
P1DIR &= ~(BIT5 | BIT6);
P1OUT &= ~(BIT5 | BIT6);
P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
break;
case 3:
P1DIR &= ~(BIT5 | BIT6);
P1OUT &= ~(BIT5 | BIT6);
P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5);
break;
}
break;
} }
} }
@ -160,8 +190,5 @@ void ledExec() {
} }
void ledInit() { void ledInit() {
//selectRow(0); schAdd(ledExec, NULL, 0, 50);
//selectCol(0, BLUE);
schAdd(ledExec, NULL, 0, 10);
} }

2
led.h
View File

@ -8,6 +8,8 @@
#ifndef LED_H_ #ifndef LED_H_
#define LED_H_ #define LED_H_
typedef enum { BLUE = 0, RED = 1, OFF = 2 } tColor;
void ledExec(); void ledExec();
void ledInit(); void ledInit();