You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
961 B
48 lines
961 B
10 years ago
|
#include <avr/io.h>
|
||
|
#include <avr/pgmspace.h>
|
||
|
#include <avr/interrupt.h>
|
||
|
#include <stdint.h>
|
||
|
|
||
|
#include "lib/uart.h"
|
||
|
#include "lib/stream.h"
|
||
|
|
||
|
//
|
||
|
// Example of asynchronous UART key handling
|
||
|
//
|
||
|
// It recognizes special keys like arrows and some F keys,
|
||
9 years ago
|
// check uart.h file for full list.
|
||
10 years ago
|
|
||
|
ISR(USART_RX_vect)
|
||
|
{
|
||
|
char c = uart_rx();
|
||
|
vt_handle_key(c);
|
||
|
// we can do anything further with the received byte
|
||
|
}
|
||
|
|
||
|
|
||
|
// Our custom key handler function
|
||
|
void key_handler(uint8_t code, bool special)
|
||
|
{
|
||
|
put_str_P(uart, special ? PSTR("Special: ") : PSTR("Char: "));
|
||
9 years ago
|
put_c(uart, code); // the actual character
|
||
|
put_c(uart, ' '); // space
|
||
10 years ago
|
put_u8(uart, code); // as number
|
||
|
put_nl(uart); // crlf
|
||
|
}
|
||
|
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
uart_init(9600); // set BAUD-rate
|
||
|
uart_isr_rx(1); // enable the ISR
|
||
|
vt_init(); // initialize uart_ansi library
|
||
|
|
||
|
vt_set_key_handler(&key_handler); // assign our custom handler
|
||
|
|
||
|
sei();
|
||
|
|
||
|
put_str_P(uart, PSTR("UART key handler test!\r\n"));
|
||
|
|
||
|
while(1);
|
||
|
}
|