Hola gente! Pues estoy empezando a entrar en el mundo de los microcontroladores y soy estudiante.
Tengo una practica (para ir aprendiendo a usar el programa) y es hacer un ping pong con el pic16f886 en una matriz de leds de 8x8 y controlar las barras que son laterales con push boton.
Hasta ahora solo he podido hacer que se muevan las barras laterales pero no se como hacer para que la pelota se mueva y lleve su trayectoria y que al momento de chocar con el borde rebote.
¿Alguien me puede ayudar?
Hasta ahora este es el código que llevo:
Tengo una practica (para ir aprendiendo a usar el programa) y es hacer un ping pong con el pic16f886 en una matriz de leds de 8x8 y controlar las barras que son laterales con push boton.
Hasta ahora solo he podido hacer que se muevan las barras laterales pero no se como hacer para que la pelota se mueva y lleve su trayectoria y que al momento de chocar con el borde rebote.
¿Alguien me puede ayudar?
Hasta ahora este es el código que llevo:
Código:
#include <xc.h>
#define _XTAL_FREQ 8000000
// CONFIG1
#pragma config FOSC = INTRC_NOCLKOUT// Oscillator Selection bits (INTOSC oscillator: CLKOUT function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled and can be enabled by SWDTEN bit of the WDTCON register)
#pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled)
#pragma config MCLRE = ON // RE3/MCLR pin function select bit (RE3/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 = ON // Brown Out Reset Selection bits (BOR enabled)
#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)
#pragma config LVP = OFF // Low Voltage Programming Enable bit (RB3 pin has digital I/O, HV on MCLR must be used for programming)
// CONFIG2
#pragma config BOR4V = BOR40V // Brown-out Reset Selection bit (Brown-out Reset set to 4.0V)
#pragma config WRT = OFF
int main(void) {
unsigned char i;
int jugador1,jugador2;
int bolitax,bolitay;
OSCCONbits.SCS=1;
OSCCONbits.IRCF=0b111;
PORTA=0; //limpia puerto A
PORTB=0; //Limpia puerto B
PORTC=0; // Limpia el puerto C
ANSEL=0; //Configura como digital el puerto A
ANSELH=0; //Configura como digital el puerto B
TRISA=0b00000000; // Todo el puerto A como salida
TRISB=0b00000000; // Todo el puerto B como entrada
TRISC=0b00001111;
jugador1=28;
jugador2=28;
bolitax=0b00001000;
bolitay=0b11110111;
while(1)
{
if(PORTCbits.RC0==1 && jugador1 < 224)jugador1=jugador1<<1;
__delay_ms(20);
if(PORTCbits.RC1==1 && jugador1 > 7)jugador1=jugador1>>1;
__delay_ms(20);
if(PORTCbits.RC2==1 && jugador2 < 224)jugador2=jugador2<<1;
__delay_ms(20);
if(PORTCbits.RC3==1 && jugador2 > 7)jugador2=jugador2>>1;
__delay_ms(20);
PORTA=jugador1;
PORTB=0b11111110;
__delay_ms(20);
PORTA=bolitax;
PORTB=bolitay;
__delay_ms(20);
PORTA=jugador2;
PORTB=0b01111111;
__delay_ms(20);
}
return;
}
Última edición por un moderador: