Я использую компилятор MPLAB C18 для написания кода C для PIC18F2550, который должен управлять игрой памяти. Пользователь должен повторить последовательность мигания светодиодов, нажимая соответствующие кнопки. Немного похоже на старую игру про Саймона, но последовательность действий происходит только один раз.
До сих пор я боролся, и мне удалось включить только несколько светодиодов, но кнопки выключают светодиоды только на долю секунды, а затем снова включаются.
Вот мой код:
#include <stdio.h>
#include <stdlib.h>
#include <p18f2550.h>
#include <delays.h>
//#pragma config WDT = OFF //Disable watchdog timer
// LED Configuration
#define LED_PIN_0 LATAbits.LATA0 //RA0
#define LED_PIN_1 LATAbits.LATA1 //RA1
#define LED_PIN_2 LATAbits.LATA2 //RA2
#define LED_PIN_3 LATAbits.LATA3 //RA3
#define LED_PIN_4 LATAbits.LATA4 //RA4
#define LED_PIN_5 LATAbits.LATA5 //RA5
#define LED_PIN_6 LATAbits.LATA6 //RA6
// Push Button Configuration
#define PUSH_BUTTON_0 PORTBbits.RB0 //RB0
#define PUSH_BUTTON_1 PORTBbits.RB1 //RB1
#define PUSH_BUTTON_2 PORTBbits.RB2 //RB2
#define PUSH_BUTTON_3 PORTBbits.RB3 //RB3
#define PUSH_BUTTON_4 PORTBbits.RB4 //RB4
#define PUSH_BUTTON_5 PORTBbits.RB5 //RB5
#define PUSH_BUTTON_6 PORTBbits.RB6 //RB6
// Global Variables
int led_array[7] ; // array storing the pin outs
int button_array[7] ;
void main()
{
int i;
ADCON1 = 0b11111111;
TRISA = 0; // sets the LED pins to output
TRISB = 1; // sets pushbutton pins to input
PORTA = 0;
PORTB = 0;
//sequence
led_array[0] = 1 ;
led_array[1] = 0 ;
led_array[2] = 1 ;
led_array[3] = 0 ;
led_array[4] = 1 ;
led_array[5] = 1 ;
led_array[6] = 0 ;
// Configure the LEDs
LED_PIN_0 = led_array[0] ;
LED_PIN_1 = led_array[1] ;
LED_PIN_2 = led_array[2] ;
LED_PIN_3 = led_array[3] ;
LED_PIN_4 = led_array[4] ;
LED_PIN_5 = led_array[5] ;
LED_PIN_6 = led_array[6] ;
// Configure the push button array
PUSH_BUTTON_0 = button_array[0] ;
PUSH_BUTTON_1 = button_array[1] ;
PUSH_BUTTON_2 = button_array[2] ;
PUSH_BUTTON_3 = button_array[3] ;
PUSH_BUTTON_4 = button_array[4] ;
PUSH_BUTTON_5 = button_array[5] ;
PUSH_BUTTON_6 = button_array[6] ;
if ( PUSH_BUTTON_0 == 1 )
{
led_array[0] = 0;
}
if ( PUSH_BUTTON_1 == 1 )
{
led_array[1] = 1;
}
if ( PUSH_BUTTON_2 == 1 )
{
led_array[2] = 0;
}
if ( PUSH_BUTTON_3 == 1 )
{
led_array[3] = 1;
}
if ( PUSH_BUTTON_4 == 1 )
{
led_array[4] = 0;
}
if ( PUSH_BUTTON_5 == 1 )
{
led_array[5] = 0;
}
if ( PUSH_BUTTON_6 == 1 )
{
led_array[6] = 1;
}
}
Любая помощь приветствуется!