Timer/Timer/Timer.c
2012-11-28 17:37:19 +00:00

87 lines
1.6 KiB
C

#include <avr/io.h>
#include <util/delay.h>
volatile uint8_t segs[15] = {
0b00111111, //0
0b00000110, //1
0b01011011, //2
0b01001111, //3
0b01100110, //4
0b01101101, //5
0b01111101, //6
0b00000111, //7
0b01111111, //8
0b01101111, //9
0b01000000, //-
0b01110000, //+
0b01000110, //-1
0b01110110, //+1
0b00000000 //Blank
};
volatile uint8_t frame[6] = {14,14, 14,14, 14,14};
void display(uint8_t z, uint8_t p) {
DDRB = (segs[z]<<1);
PORTB = (segs[z]<<1);
for(uint8_t i = 1;i<=p;i++) {
if(DDRB & (1<<i)) {
DDRB |= (1<<(i-1));
} else {
DDRB &= ~(1<<(i-1));
}
}
for(uint8_t i = 1;i<=p;i++) {
if(PORTB & (1<<i)) {
PORTB |= (1<<(i-1));
} else {
PORTB &= ~(1<<(i-1));
}
}
DDRB |= (1<<p);
PORTB &= ~(1<<p);
}
void render() {
for(uint8_t f = 0;f<6;f++) {
display(frame[f],(5-f)+2);
_delay_us(2000);
}
}
int main(void) {
DDRB = 0;
while(1){
//frame = {14,5, 14,5, 14,5};
frame[0] = 11;
for(uint8_t l=0;l<10;l++) {
frame[2] = 9-l;
for(uint8_t k=0;k<10;k++) {
frame[3] = 9-k;
for(uint8_t j=0;j<10;j++) {
frame[4] = 9-j;
for(uint8_t i=0;i<10;i++) {
frame[5] = 9-i;
render();
}
}
}
}
/*DDRB = 0b11100110;
PORTB = 0b11000110;
_delay_ms(5);
DDRB = 0b11111101;
PORTB = 0b11101101;
_delay_ms(5);
DDRB = 0b10111011;
PORTB = 0b10110011;
_delay_ms(5);
DDRB = 0b01111111;
PORTB = 0b01111011;*/
/*display(0,2);
_delay_ms(10);
display(0,3);
_delay_ms(10);
display(10,7);
_delay_ms(10);*/
}
}