Você está na página 1de 2

#pragma config FOSC = HS

#pragma config WDTE = OFF


#pragma config CP = OFF
#pragma config BOREN = OFF
#pragma config LVP = OFF
#pragma config PWRTE = OFF
#pragma config CPD = OFF
#pragma config WRT = OFF

#include <xc.h>

#define _XTAL_FREQ 20000000

#define ESQUERDA 1
#define DIREITA 0
#define tempo 2

// 0 1 2 3 4 5 6 7
short int linha1[] = {0,0,0,0,0,1,1,1};
short int linha2[] = {0,0,0,1,1,1,0,0};
short int linha3[] = {0,1,1,1,0,0,0,0};
short int linha4[] = {1,1,0,0,0,0,0,1};

void inicializacao(){
TRISD = 0;
TRISB = 0X0F;
PORTD = 0x00;
}

void passos(int direcao){


if(direcao==ESQUERDA){
for(int i=0; i<8; i++){
__delay_ms(tempo);
RD0 = linha1[i];
RD1 = linha2[i];
RD2 = linha3[i];
RD3 = linha4[i];

}
}
else if(direcao==DIREITA){
for(int i=7; i>-1; i--){
__delay_ms(tempo);
RD0 = linha1[i];
RD1 = linha2[i];
RD2 = linha3[i];
RD3 = linha4[i];
}
}
else{
RD0 = 0;
RD1 = 0;
RD2 = 0;
RD3 = 0;

}
}
void main(){
inicializacao();
while(1){
if(RB0==0){
passos(ESQUERDA);
}
if(RB1==0){
passos(DIREITA);
}
PORTD &= 0b11110000;

}
}

Você também pode gostar