47 lines
1008 B
C
47 lines
1008 B
C
#include <avr/io.h>
|
|
#include <util/delay.h>
|
|
#include "../makros.h"
|
|
#include "../config.h"
|
|
|
|
#define NES_PAD_DDR_PL DDR(NES_PAD_PORT_PL)
|
|
#define NES_PAD_DDR_CLK DDR(NES_PAD_PORT_CLK)
|
|
#define NES_PAD_PIN_DS PIN(NES_PAD_PORT_DS)
|
|
#define NES_PAD_DDR_DS DDR(NES_PAD_PORT_DS)
|
|
volatile unsigned char fakeport;
|
|
unsigned char waitForFire;
|
|
|
|
|
|
void joy_init(){
|
|
|
|
NES_PAD_DDR_PL |= 1<<NES_PAD_BIT_PL;
|
|
NES_PAD_DDR_CLK |= 1<<NES_PAD_BIT_CLK;
|
|
NES_PAD_PORT_DS |= (1<<NES_PAD_BIT_DS);//pullup
|
|
NES_PAD_DDR_DS &= ~(1<<NES_PAD_BIT_DS);
|
|
|
|
}
|
|
|
|
void readButtons(){
|
|
|
|
NES_PAD_PORT_PL |= 1<<NES_PAD_BIT_PL;
|
|
asm volatile("nop\r\t");
|
|
asm volatile("nop\r\t");
|
|
asm volatile("nop\r\t");
|
|
|
|
NES_PAD_PORT_PL &= ~ (1<<NES_PAD_BIT_PL);
|
|
|
|
uint8_t i, port=0;
|
|
for(i=0; i<8; i++){
|
|
|
|
port >>= 1;
|
|
_delay_us(1);
|
|
if(NES_PAD_PIN_DS & (1 << NES_PAD_BIT_DS))
|
|
port |=0x80;
|
|
|
|
NES_PAD_PORT_CLK |= 1<<NES_PAD_BIT_CLK;
|
|
asm volatile("nop\r\t");
|
|
asm volatile("nop\r\t");
|
|
NES_PAD_PORT_CLK &= ~(1<<NES_PAD_BIT_CLK);
|
|
}
|
|
fakeport= ~port;
|
|
}
|