Som en enkel version av programmet.
Kod: Markera allt
//---------------- standardbibliotek ------------------
#include <avr/io.h>
#include <util/delay.h>
#include <util/delay_basic.h>
#define CLOCK (1<<PB1)
#define ROW0 (1<<PF0) // motsvarar pinne PA0 - dvs rad 0
#define ROW1 (1<<PF1)
#define ROW2 (1<<PF2)
#define ROW3 (1<<PF3)
#define ROW4 (1<<PF4)
#define ROW5 (1<<PF5)
#define RED0 (1<<PA0)
#define RED1 (1<<PA1)
#define RED2 (1<<PA2)
#define RED3 (1<<PA3)
#define RED4 (1<<PA4)
#define RED5 (1<<PA5)
#define RED6 (1<<PA6)
#define RED7 (1<<PA7)
#define GREEN0 (1<<PC0)
#define GREEN1 (1<<PC1)
#define GREEN2 (1<<PC2)
#define GREEN3 (1<<PC3)
#define GREEN4 (1<<PC4)
#define GREEN5 (1<<PC5)
#define GREEN6 (1<<PC6)
#define GREEN7 (1<<PC7)
#define BLUE0 (1<<PD0)
#define BLUE1 (1<<PD1)
#define BLUE2 (1<<PD2)
#define BLUE3 (1<<PD3)
#define BLUE4 (1<<PD4)
#define BLUE5 (1<<PD5)
#define BLUE6 (1<<PD6)
#define BLUE7 (1<<PD7)
void skicka_data(char red, char green, char blue) { // SKRIV ALGORITM HÄR
PORTA = red;
PORTC = green;
PORTD = blue;
_delay_us(1);
}
/**** huvudprogrammet ****/
int main(void) {
// initiering av portar
DDRF = 0b00000000; // alla pinnar på port F ska vara ingångar rad
DDRA = 0b11111111; // alla pinnar på port A ska vara utgångar röd
DDRC = 0b11111111; // alla pinnar på port C ska vara utgångar grön
DDRD = 0b11111111; // alla pinnar på port D ska vara utgångar blå
PORTF = 0b11111111; //aktiverar alla rader
while(1) { // ...loopa för evigt...
for (int y = 0; y < 3; y++){
PORTF = 0b00011000;
skicka_data(0b00011000, 0b00011000, 0b00000000 );// red, green, blue
_delay_ms(500);
for (int i = 0; i < 100; i++){
PORTF = 0b00111100;
skicka_data(0b00011000, 0b00011000, 0b00000000 );// red, green, blue
_delay_ms(1);
PORTF = 0b00011000;
skicka_data(0b00111100, 0b00111100, 0b00000000 );// red, green, blue
_delay_ms(1);
}
}
}
}
MVH
Dragon9226