Stap 2: Hoe de controller werkt
Internaly de controller wat wij noemen in digitale Busak parallel-naar-serieel register, een geïntegreerde schakeling dat winkel de status van elke knop (ingedrukt of niet) wanneer een puls "lacth" krijgt, dan het register sturen elke staat alwaysa klok-puls wordt gegeven.
Dus het is duidelijk dat de controller 5 draad hebben, ze zijn: GND, VCC, hendel, gegevens, klok.
Zo is de algorithym te lezen van de Staten van de knoppen heel eenvoudig:
1 - Geef een klink puls;
2a - Controleer of de gegevens draad;
2b - geven een klok-puls;
3 - Herhaal 2a en 2b totdat alle knoppen Staten werden gelezen;
Hier zijn de code monster heks bevatten de functie Lees controller:
Foreign de leitura doen controle
int8 LER_CTRL()
{
#define LATCH_CH pin_c0
#define CLK_CH pin_c1
#define DATA_CH pin_c2
sequencia de leitura
Een B Se St U D L R
INT16 val; //combinação dos botões
int i, //variavel de indexação
Žera een variavel
Val = 0;
ativa o pulso de klink
Lê o primeiro botãodireito
output_high(LATCH_CH);
delay_us(12);
output_low(LATCH_CH);
Val = (input(DATA_CH) << 0) |val;
delay_us(6);
Ativa o kanaal de klok e Lê os 7 botões restantes
voor (ik = 1; ik < 8; i ++)
{
output_high(CLK_CH);
delay_us(6);
output_low(CLK_CH);
Val = (input(DATA_CH) << ik) |val;
delay_us(6);
}
oitavo pulso
output_high(CLK_CH);
delay_us(6);
output_low(CLK_CH);
delay_us(6);
terug val; retorna een combinação
}
De code in C zijn en werd geschreven op PICC CCS compiler maar is zo eenvoudig te begrijpen.
De lengte van de intervallen kan gemakkelijker worden gezien in de afbeelding hieronder.
Het is gemakkelijker vinden het diagram van de pin-out van de originele NES controller connector op het internet, dus in de afbeelding is ook laten zien in het diagram van de pin-out NES controller connector kloon.
PS: 3 controllers gebroken was om te ontdekken dit :(