Witam,
1 plik to main.c
2 plik klawisze.h
3 plik klawisze.c
Kod:
/*
* main.c
*
* Created on: 11 gru 2016
* Author: Marcin
*/
#include <avr/io.h>
#include <util/delay.h>
#include "klawisze.h"
int main(void)
{
DDRA |= 0xff; //cały port A jako wyjście
PORTA |= 0xff; //cały port a wystawine 1 (stan wysoki czyli VCC)
//*********INICJALIZACJA******************//
while(1)
{
for( uint8_t i=0; i<8; i++ )
{
PORTA &= ~(1<<i);
if(i>0) PORTA |= (1<<(i-1));
//_delay_ms(200);
moja_zmiana_czasu(zmiana_czasu);
}
for( int8_t i=8; i>-1; i-- )
{
PORTA &= ~(1<<i);
PORTA |= (1<<(i+1));
//_delay_ms(200);
moja_zmiana_czasu(zmiana_czasu);
}
}
}
Kod:
/*
* klawisze.h
*
* Created on: 11 gru 2016
* Author: Marcin
*/
#ifndef KLAWISZE_H_
#define KLAWISZE_H_
#define LED1 (1<<PA0)
#define LED1 (1<<PA0)
#define LED_TOG1 PORTA ^= LED1
#define LED_TOG2 PORTA ^= LED2
#define KEY1 (1<<PD0)
#define KEY2 (1<<PD1)
void moja_zmiana_czasu(uint16_t ms);
uint16_t key_lock1=0;
uint16_t key_lock2=0;
uint16_t zmiana_czasu = 500;
#endif /* KLAWISZE_H_ */
Kod:
#include <avr/io.h>
#include <util/delay.h>
#include "klawisze.h"
void moja_zmiana_czasu(uint16_t ms)
{
while( ms-- ){
//Klawiasz 1
if(!key_lock1 && !(PIND & KEY1))
{
key_lock1=500;
zmiana_czasu += 100;
if(zmiana_czasu > 800 ) zmiana_czasu = 800;
}else if (key_lock1 && (PIND & KEY1))key_lock1--;
//klawisz 2
if(!key_lock2 && !(PIND & KEY2))
{
key_lock2=500;
zmiana_czasu -= 50;
if(zmiana_czasu <50) zmiana_czasu =50;
}else if (key_lock2 && (PIND & KEY2)) key_lock2--;
_delay_ms(0.95);
}
}