gir
16 years ago
7 changed files with 150 additions and 14 deletions
@ -0,0 +1,45 @@ |
|||||
|
#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_DDR_DS DDR(NES_PAD_PIN_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_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; |
||||
|
} |
Loading…
Reference in new issue