Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * keyboard.h
- *
- * Created on: 7 maj 2014
- * Author: miszczo
- */
- #ifndef KEYBOARD_H_
- #define KEYBOARD_H_
- #define KEYBOARD_PORT D
- #define KP_UP 0
- #define KP_DOWN 1
- #define KP_LEFT 2
- #define KP_RIGHT 3
- #define KP_OK 4
- #define KP_ESC 5
- // Makra upraszczające dostęp do portów
- // *** PORT
- #define PORT(x) SPORT(x)
- #define SPORT(x) (PORT##x)
- // *** PIN
- #define PIN(x) SPIN(x)
- #define SPIN(x) (PIN##x)
- // *** DDR
- #define DDR(x) SDDR(x)
- #define SDDR(x) (DDR##x)
- void keyboard_init(void);
- void keyboard_get(uint8_t *kp_up ,uint8_t *kp_down, uint8_t *kp_right ,uint8_t *kp_left ,uint8_t *kp_ok ,uint8_t *kp_esc);
- #endif /* KEYBOARD_H_ */
- /*
- * keyboard.c
- *
- * Created on: 7 maj 2014
- * Author: miszczo
- */
- #include <avr/io.h>
- #include <util/delay.h>
- #include "keyboard.h"
- void keyboard_init(void){
- DDR(KEYBOARD_PORT) &= ~((1<<KP_DOWN)|(1<<KP_UP)|(1<<KP_LEFT)|(1<<KP_RIGHT)|(1<<KP_OK)|(1<<KP_ESC));
- PORT(KEYBOARD_PORT) |= ((1<<KP_DOWN)|(1<<KP_UP)|(1<<KP_LEFT)|(1<<KP_RIGHT)|(1<<KP_OK)|(1<<KP_ESC));
- }
- void keyboard_get(uint8_t *kp_up ,uint8_t *kp_down, uint8_t *kp_right ,uint8_t *kp_left ,uint8_t *kp_ok ,uint8_t *kp_esc)
- {
- if(~(PIN(KEYBOARD_PORT)&((1<<KP_DOWN)|(1<<KP_UP)|(1<<KP_LEFT)|(1<<KP_RIGHT)|(1<<KP_OK)|(1<<KP_ESC)))){
- _delay_ms(20);
- if(~(PIN(KEYBOARD_PORT)&((1<<KP_DOWN)|(1<<KP_UP)|(1<<KP_LEFT)|(1<<KP_RIGHT)|(1<<KP_OK)|(1<<KP_ESC))))
- {
- *kp_up = !PIN(KEYBOARD_PORT&(1<<KP_UP));
- *kp_down = !PIN(KEYBOARD_PORT&(1<<KP_DOWN));
- *kp_left = !PIN(KEYBOARD_PORT&(1<<KP_LEFT));
- *kp_right = !PIN(KEYBOARD_PORT&(1<<KP_RIGHT));
- *kp_ok = !PIN(KEYBOARD_PORT&(1<<KP_OK));
- *kp_esc = !PIN(KEYBOARD_PORT&(1<<KP_ESC));
- while(((~PIN(KEYBOARD_PORT)&((1<<KP_DOWN)|(1<<KP_UP)|(1<<KP_LEFT)|(1<<KP_RIGHT)|(1<<KP_OK)|(1<<KP_ESC)))));
- }
- }
- }
- //1010 0000
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement