70 lines
1.1 KiB
C
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);
|
|
}
|
|
|
|
}
|
|
}
|