Você pode usar o MPLAB e o XC8 para escrever o código para o teclado matricial no PICSim. Aqui está um exemplo de código que pode ajudá-lo a começar vampire survivors:
#include <xc.h>
#include <stdio.h>
// Configuração do microcontrolador
#pragma config FOSC = INTOSCIO // Oscillator Selection bits (INTOSCIO oscillator: I/O function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = ON // MCLR Pin Function Select bit (MCLR pin function is MCLR)
#pragma config CP = OFF // Code Protection bit (Program memory code protection is disabled)
#pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled)
#pragma config BOREN = OFF // Brown Out Reset Selection bits (BOR disabled)
#pragma config IESO = OFF // Internal External Switchover bit (Internal External Switchover mode is disabled)
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is disabled)
#define _XTAL_FREQ 8000000 // Define a frequência do cristal
// Variáveis globais
char senha[10]; // Variável para armazenar a senha digitada
int pos = 0; // Variável para armazenar a posição atual na senha
int digitado = 0; // Variável para armazenar o botão digitado
// Protótipos de função
void init(void); // Função de inicialização
int lerTeclado(void); // Função para ler o teclado matricial
void main(void) {
init();
while(1) {
digitado = lerTeclado();
if (digitado != -1) { // Se algum botão foi pressionado
senha[pos] = digitado + '0'; // Armazene o número na senha
pos++;
printf("*"); // Imprima um asterisco para indicar a entrada do usuário
}
// Adicione aqui o código para verificar se outro botão foi pressionado para exibir a senha digitada
}
}
void init(void) {
// Inicialização do microcontrolador
OSCCON = 0b01110010; // Configura o oscillator interno para 8 MHz
ANSEL = 0; // Configura todos os pinos como digitais
TRISA = 0b11111111; // Configura todos os pinos de entrada
TRISB = 0b