Prosze o pomoc
Jak zmienić ten kod programu by po naciśnięciu konkretnego klawisza klawiatury np. klawisz 'a' ma zaświecić diodę, klawisz 'b' ma zgasić diode.
Po naciśnięciu innych klawiszy dioda ma niereagować
Jak zmienić ten kod programu by po naciśnięciu konkretnego klawisza klawiatury np. klawisz 'a' ma zaświecić diodę, klawisz 'b' ma zgasić diode.
Po naciśnięciu innych klawiszy dioda ma niereagować
#include <avr/io.h> // dostęp do rejestrów
// Zmieniając poniższe definicje można dostosować program do potrzeb
#define F_CPU 16000000ul // częstotliwość zegara w Hz
#define LED_PORT PORTD // port diody LED
#define LED_BIT 4 // bit diody LED
#define DDR(x) _SFR_IO8(_SFR_IO_ADDR(x)-1) // adr. rej. kier. PORTx
#define PIN(x) _SFR_IO8(_SFR_IO_ADDR(x)-2) // adr. rej. wej. PORTx
#define LED_PORT_O LED_PORT // rejestr wyjściowy
#define LED_PORT_D DDR(LED_PORT) // rejestr kierunkowy
#define LED_PORT_I PIN(LED_PORT) // rejestr wejściowy
#define cbi(sfr, b) (sfr &= ~(1<<b)) // bit 0 na pin portu
#define sbi(sfr, b) (sfr |= (1<<b)) // bit 1 na pin portu
// Definicje funkcji
// inicjalizacja portu szeregowego
void UART_Init( unsigned int baud )
{
/* Set baud rate */
UBRRH = 0;
UBRRL = 51;
/* Enable receiver and transmitter */
UCSRB = (1<<RXCIE)|(1<<TXEN)|(1<<RXEN);
/* Set frame format: 8data, 1stop bit */
UCSRC = (1<<URSEL)|(3<<UCSZ0);
}
// wysyła znak podany jako parametr na port szeregowy
void UART_putchar (unsigned char c)
{
/* Wait for empty transmit buffer */
while ( !( UCSRA & _BV(UDRE)) )
;
/* Put data into buffer, sends the data */
UDR = c;
}
// odbiera znak z portu szeregowego i zwraca go jako wartość funkcji
unsigned char UART_getchar (void)
{
/* Wait for data to be received */
while ( !(UCSRA & (1<<RXC)) )
;
/* Get and return received data from buffer */
return UDR;
}
int main(void) // program główny
{
UART_Init(19200); // inicjalizacja portu szeregowego
sbi(LED_PORT_D,LED_BIT); // użyj linii jako wyjścia
while(1) // pętla nieskończona
{
cbi(LED_PORT_O,LED_BIT); // zapal diodę LED
UART_putchar('1'); // wyślij '1' na port szeregowy
UART_getchar(); // czekaj na znak z portu szeregowego
sbi(LED_PORT_O,LED_BIT); // zgaś diodę LED
UART_putchar('0'); // wyślij '0' na port szeregowy
UART_getchar(); // czekaj na znak z portu szeregowego
}
}