Uhr/15cmZahl/15cmZahl.c
2012-10-13 16:28:41 +00:00

70 lines
1.1 KiB
C

#include <avr/io.h>
#include <util/delay.h>
#define S0 0b01111011
#define S1 0b00000011
#define S2 0b01101110
#define S3 0b01001111
#define S4 0b00010111
#define S5 0b01011101
#define S6 0b01111101
#define S7 0b00001011
#define S8 0b01111111
#define S9 0b01011111
#define Sa 0b00111111
#define Sb 0b01110101
#define Sc 0b01111000
#define Sd 0b01100111
#define Se 0b01111100
#define Sf 0b00111100
volatile uint8_t segs[16] = {S0,S1,S2,S3,S4,S5,S6,S7,S8,S9,Sa,Sb,Sc,Sd,Se,Sf};
volatile uint8_t ind = 0;
volatile uint8_t dim = 0;
void show() {
uint8_t i = ind;
uint8_t j = dim;
for(uint8_t l=0;l<20;l++) {
for(uint8_t k=0;k<j;k++) {
PORTB = segs[i];
_delay_us(1);
}
for(uint8_t k=0;k<255-j;k++) {
PORTB = 0;
_delay_us(1);
}
}
}
void dimup() {
for(uint8_t j=0;j<250;j++) {
dim = j;
show();
}
}
void dimdown() {
for(uint8_t i=250;i>0;i--) {
dim = i;
show();
}
}
int main(void) {
DDRB = 0b01111111;
//dim = 1;
while(1){
for(uint8_t i=0;i<16;i++) {
ind = i;
dimup();
dimdown();
//show();
//_delay_ms(500);
}
}
}