From 459ad36b0dd60c711c0b46b70a9ae69cc4bc5259 Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Thu, 24 Jan 2019 22:57:41 +0100 Subject: [PATCH] add led state off --- led.c | 177 +++++++++++++++++++++++++++++++++------------------------- led.h | 2 + 2 files changed, 104 insertions(+), 75 deletions(-) diff --git a/led.c b/led.c index e761aea..cf013e4 100644 --- a/led.c +++ b/led.c @@ -58,79 +58,109 @@ static inline void selectRow(uint8_t row) { col3, red: P1.6 */ -typedef enum { BLUE = 0, RED = 1 } tColor; void selectCol(uint8_t column, tColor color) { - if (color == BLUE) { - switch (column) { - case 0: - P1DIR &= ~(BIT6); - P1OUT &= ~(BIT6); - P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5); - P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5); - P1DIR |= BIT5; - P1OUT &= ~BIT5; - break; - case 1: - P1DIR &= ~(BIT5 | BIT6); - P1OUT &= ~(BIT5 | BIT6); - P2DIR &= ~(BIT0 | BIT1 | BIT4 | BIT3 | BIT5); - P2OUT &= ~(BIT0 | BIT1 | BIT4 | BIT3 | BIT5); - P2DIR |= BIT2; - P2OUT &= ~BIT2; - break; - case 2: - P1DIR &= ~(BIT5 | BIT6); - P1OUT &= ~(BIT5 | BIT6); - P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT3 | BIT5); - P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT3 | BIT5); - P2DIR |= BIT4; - P2OUT &= ~BIT4; - break; - case 3: - P1DIR &= ~(BIT5 | BIT6); - P1OUT &= ~(BIT5 | BIT6); - P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT3 | BIT4); - P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT3 | BIT4); - P2DIR |= BIT5; - P2OUT &= ~BIT5; - break; - } - } else { - switch (column) { - case 0: - P1DIR &= ~(BIT5 | BIT6); - P1OUT &= ~(BIT5 | BIT6); - P2DIR &= ~(BIT2 | BIT1 | BIT4 | BIT3 | BIT5); - P2OUT &= ~(BIT2 | BIT1 | BIT4 | BIT3 | BIT5); - P2DIR |= BIT0; - P2OUT &= ~BIT0; - break; - case 1: - P1DIR &= ~(BIT5 | BIT6); - P1OUT &= ~(BIT5 | BIT6); - P2DIR &= ~(BIT0 | BIT2 | BIT4 | BIT3 | BIT5); - P2OUT &= ~(BIT0 | BIT2 | BIT4 | BIT3 | BIT5); - P2DIR |= BIT1; - P2OUT &= ~BIT1; - break; - case 2: - P1DIR &= ~(BIT5 | BIT6); - P1OUT &= ~(BIT5 | BIT6); - P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT5); - P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT5); - P2DIR |= BIT3; - P2OUT &= ~BIT3; - break; - case 3: - P1DIR &= ~(BIT5); - P1OUT &= ~(BIT5); - P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5); - P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5); - P1DIR |= BIT6; - P1OUT &= ~BIT6; - break; - } + switch (color) { + case BLUE: + switch (column) { + case 0: + P1DIR &= ~(BIT6); + P1OUT &= ~(BIT6); + P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5); + P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5); + P1DIR |= BIT5; + P1OUT &= ~BIT5; + break; + case 1: + P1DIR &= ~(BIT5 | BIT6); + P1OUT &= ~(BIT5 | BIT6); + P2DIR &= ~(BIT0 | BIT1 | BIT4 | BIT3 | BIT5); + P2OUT &= ~(BIT0 | BIT1 | BIT4 | BIT3 | BIT5); + P2DIR |= BIT2; + P2OUT &= ~BIT2; + break; + case 2: + P1DIR &= ~(BIT5 | BIT6); + P1OUT &= ~(BIT5 | BIT6); + P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT3 | BIT5); + P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT3 | BIT5); + P2DIR |= BIT4; + P2OUT &= ~BIT4; + break; + case 3: + P1DIR &= ~(BIT5 | BIT6); + P1OUT &= ~(BIT5 | BIT6); + P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT3 | BIT4); + P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT3 | BIT4); + P2DIR |= BIT5; + P2OUT &= ~BIT5; + break; + } + break; + case RED: + switch (column) { + case 0: + P1DIR &= ~(BIT5 | BIT6); + P1OUT &= ~(BIT5 | BIT6); + P2DIR &= ~(BIT2 | BIT1 | BIT4 | BIT3 | BIT5); + P2OUT &= ~(BIT2 | BIT1 | BIT4 | BIT3 | BIT5); + P2DIR |= BIT0; + P2OUT &= ~BIT0; + break; + case 1: + P1DIR &= ~(BIT5 | BIT6); + P1OUT &= ~(BIT5 | BIT6); + P2DIR &= ~(BIT0 | BIT2 | BIT4 | BIT3 | BIT5); + P2OUT &= ~(BIT0 | BIT2 | BIT4 | BIT3 | BIT5); + P2DIR |= BIT1; + P2OUT &= ~BIT1; + break; + case 2: + P1DIR &= ~(BIT5 | BIT6); + P1OUT &= ~(BIT5 | BIT6); + P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT5); + P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT5); + P2DIR |= BIT3; + P2OUT &= ~BIT3; + break; + case 3: + P1DIR &= ~(BIT5); + P1OUT &= ~(BIT5); + P2DIR &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5); + P2OUT &= ~(BIT0 | BIT2 | BIT1 | BIT4 | BIT3 | BIT5); + 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() { - //selectRow(0); - //selectCol(0, BLUE); - - schAdd(ledExec, NULL, 0, 10); + schAdd(ledExec, NULL, 0, 50); } diff --git a/led.h b/led.h index beac851..5c84bdb 100644 --- a/led.h +++ b/led.h @@ -8,6 +8,8 @@ #ifndef LED_H_ #define LED_H_ +typedef enum { BLUE = 0, RED = 1, OFF = 2 } tColor; + void ledExec(); void ledInit();