Olá, sou completamente novo na área e essa e minha primeira programação completamente original, poderiam me afirmar se há erros muito graves, e o que eu poderia fazer para consertar, já que na simulação no Proteus sempre ocorrem problemas.
//Definicoes de Sistema
#define B1 RA0_bit
#define B2 RA1_bit
#define B3 RA2_bit
#define B4 RA3_bit
#define B5 RA4_bit
#define B6 RA5_bit
#define MotorCarEsq RB0_bit
#define MotorCarDir RB1_bit
#define MotorEstEsq RB2_bit
#define MotorEstDir RB3_bit
#define PrimEntrPasso RC0_bit
#define SeguEntrPasso RC1_bit
#define TercEntrPasso RC2_bit
#define QuarEntrPasso RC3_bit
#define FimCurso1 RD0_bit
#define FimCurso2 RD1_bit
#define FimCurso3 RD2_bit
#define FimCurso4 RD3_bit
void motorcarrinho();
void motorestrutura();
void motorpasso();
//Inicializacao dos Pinos
void main() {
//PINOS A
PORTA = 0;
TRISA = 0b11111111;
//PINOS B
PORTB = 0;
TRISB = 0b00000000;
//PINOS C
PORTC = 0;
TRISB = 0b00000000;
//PINOS D
PORTD = 0;
TRISD = 0b11110000;
//A/D
ADCON1 = 0;
//Voids do programa
while(1)
{
void motorcarrinho();
void motorestrutura();
void motorpasso();
}
}
//Controle do motor do carrinho
void motorcarrinho()
{
if (B1 == 1 && FimCurso1 == 0)
{
MotorCarEsq = 1;
MotorCarDir = 0;
MotorEstEsq = 0;
MotorEstDir = 0;
PrimEntrPasso = 0;
SeguEntrPasso = 0;
TercEntrPasso = 0;
QuarEntrPasso = 0;
}
else
{
MotorCarEsq = 0;
}
if (B2 == 1 && FimCurso2 == 0)
{
MotorCarDir = 1;
MotorCarEsq = 0;
MotorEstEsq = 0;
MotorEstDir = 0;
PrimEntrPasso = 0;
SeguEntrPasso = 0;
TercEntrPasso = 0;
QuarEntrPasso = 0;
}
else
{
MotorCarDir = 0;
}
}
//Controle do motor da estrutura
void motorestrutura()
{
if (B3 == 1 && FimCurso3 == 0)
{
MotorCarDir = 0;
MotorCarEsq = 0;
MotorEstEsq = 1;
MotorEstDir = 0;
PrimEntrPasso = 0;
SeguEntrPasso = 0;
TercEntrPasso = 0;
QuarEntrPasso = 0;
}
else
{
MotorEstEsq = 0;
}
if (B4 == 1 && FimCurso4 == 0)
{
MotorCarDir = 0;
MotorCarEsq = 0;
MotorEstEsq = 0;
MotorEstDir = 1;
PrimEntrPasso = 0;
SeguEntrPasso = 0;
TercEntrPasso = 0;
QuarEntrPasso = 0;
}
else
{
MotorEstDir = 0;
}
}
adicionado 15 minutos depois
Só modificando, eu resolvi ainda colocar um motor de passo usando o clock interno do PIC, aliás estou utilizando o PIC 16f887a.
//Definicoes de Sistema
#define B1 RA0_bit
#define B2 RA1_bit
#define B3 RA2_bit
#define B4 RA3_bit
#define B5 RA4_bit
#define B6 RA5_bit
#define MotorCarEsq RB0_bit
#define MotorCarDir RB1_bit
#define MotorEstEsq RB2_bit
#define MotorEstDir RB3_bit
#define PrimEntrPasso RC0_bit
#define SeguEntrPasso RC1_bit
#define TercEntrPasso RC2_bit
#define QuarEntrPasso RC3_bit
#define FimCurso1 RD0_bit
#define FimCurso2 RD1_bit
#define FimCurso3 RD2_bit
#define FimCurso4 RD3_bit
#define delay (clock = 4000000)
void motorcarrinho();
void motorestrutura();
void motorpasso();
//Inicializacao dos Pinos
void main() {
//PINOS A
PORTA = 0;
TRISA = 0b11111111;
//PINOS B
PORTB = 0;
TRISB = 0b00000000;
//PINOS C
PORTC = 0;
TRISB = 0b00000000;
//PINOS D
PORTD = 0;
TRISD = 0b11110000;
//A/D
ADCON1 = 0;
//Voids do programa
while(1)
{
void motorcarrinho();
void motorestrutura();
void motorpasso();
}
}
//Controle do motor do carrinho
void motorcarrinho()
{
if (B1 == 1 && FimCurso1 == 0)
{
MotorCarEsq = 1;
MotorCarDir = 0;
MotorEstEsq = 0;
MotorEstDir = 0;
PrimEntrPasso = 0;
SeguEntrPasso = 0;
TercEntrPasso = 0;
QuarEntrPasso = 0;
}
else
{
MotorCarEsq = 0;
}
if (B2 == 1 && FimCurso2 == 0)
{
MotorCarDir = 1;
MotorCarEsq = 0;
MotorEstEsq = 0;
MotorEstDir = 0;
PrimEntrPasso = 0;
SeguEntrPasso = 0;
TercEntrPasso = 0;
QuarEntrPasso = 0;
}
else
{
MotorCarDir = 0;
}
}
//Controle do motor da estrutura
void motorestrutura()
{
if (B3 == 1 && FimCurso3 == 0)
{
MotorCarDir = 0;
MotorCarEsq = 0;
MotorEstEsq = 1;
MotorEstDir = 0;
PrimEntrPasso = 0;
SeguEntrPasso = 0;
TercEntrPasso = 0;
QuarEntrPasso = 0;
}
else
{
MotorEstEsq = 0;
}
if (B4 == 1 && FimCurso4 == 0)
{
MotorCarDir = 0;
MotorCarEsq = 0;
MotorEstEsq = 0;
MotorEstDir = 1;
PrimEntrPasso = 0;
SeguEntrPasso = 0;
TercEntrPasso = 0;
QuarEntrPasso = 0;
}
else
{
MotorEstDir = 0;
}
}
void motorpasso()
{
if (B5 == 1)
{
PrimEntrPasso = 0;
SeguEntrPasso = 0;
TercEntrPasso = 0;
QuarEntrPasso = 1;
delay_ms (100);
PrimEntrPasso = 0;
SeguEntrPasso = 0;
TercEntrPasso = 1;
QuarEntrPasso = 0;
delay_ms (100);
PrimEntrPasso = 0;
SeguEntrPasso = 1;
TercEntrPasso = 0;
QuarEntrPasso = 0;
delay_ms (100);
PrimEntrPasso = 1;
SeguEntrPasso = 0;
TercEntrPasso = 0;
QuarEntrPasso = 0;
}
else
{
PrimEntrPasso = 0;
SeguEntrPasso = 0;
TercEntrPasso = 0;
QuarEntrPasso = 0;
}
if (B6 == 1)
{
PrimEntrPasso = 1;
SeguEntrPasso = 0;
TercEntrPasso = 0;
QuarEntrPasso = 0;
delay_ms (100);
PrimEntrPasso = 0;
SeguEntrPasso = 1;
TercEntrPasso = 0;
QuarEntrPasso = 0;
delay_ms (100);
PrimEntrPasso = 0;
SeguEntrPasso = 0;
TercEntrPasso = 1;
QuarEntrPasso = 0;
delay_ms (100);
PrimEntrPasso = 0;
SeguEntrPasso = 0;
TercEntrPasso = 0;
QuarEntrPasso = 1;
}
else
{
PrimEntrPasso = 0;
SeguEntrPasso = 0;
TercEntrPasso = 0;
QuarEntrPasso = 0;
}
}