#include "ploter.h"
#include <LCD.C>
///////////////////////////////////////////////////////////////////////////////////////////////////
//
// CCS Library dynamic defines. For dynamic configuration of the CCS Library
// for your application several defines need to be made. See the comments
// at usb.h for more information
//
///////////////////////////////////////////////////////////////////////////////////////////////////
#define USB_HID_DEVICE FALSE // deshabilitamos el uso de las directivas HID
#define USB_EP1_TX_ENABLE USB_ENABLE_BULK // turn on EP1(EndPoint1) for IN bulk/interrupt transfers
#define USB_EP1_RX_ENABLE USB_ENABLE_BULK // turn on EP1(EndPoint1) for OUT bulk/interrupt transfers
#define USB_EP1_TX_SIZE 32 // size to allocate for the tx endpoint 1 buffer
#define USB_EP1_RX_SIZE 32 // size to allocate for the rx endpoint 1 buffer
///////////////////////////////////////////////////////////////////////////////////////////////////
//
// Include the CCS USB Libraries. See the comments at the top of these
// files for more information
//
///////////////////////////////////////////////////////////////////////////////////////////////////
#include <pic18_usb.h> // Microchip PIC18Fxx5x Hardware layer for CCS's PIC USB driver
#include ".\include\rr2_USB_Monitor.h" // Configuración del USB y los descriptores para este dispositivo
#include <usb.c> // handles usb setup tokens and get descriptor reports
#define RecCommand recbuf[0]
#define COMMAND_LED 1
#define COMMAND_FIRMWARE 2
#define COMMAND_STRING_RS232 3
const int8 Lenbuf = 32;
char Version[] = "v.1.2";
char ConfOrg = '*';
int i;
int k;
int8 recbuf[Lenbuf];
int8 sndbuf[Lenbuf];
//...Variables
short flag_cambiar_sentidoZ;
short flag_cambiar_sentidoY;
short flag_cambiar_sentidoX;
short flag_Z;
short flag_Y;
short flag_X;
short flag_inicio;
short flag_alarma_X;
short flag_alarma_Y;
short flag_alarma_Z;
short flag_fin_mov_X;
short flag_fin_mov_Y;
short flag_fin_mov_Z;
unsigned int pasoZ;
unsigned int pasoY;
unsigned int pasoX;
unsigned int velocidad;
unsigned int relX;
unsigned int relY;
unsigned int difX;
unsigned int difY;
unsigned int unidadesX;
unsigned int decenasX;
unsigned long centenasX;
unsigned long millaresX;
unsigned long millonX;
unsigned int unidadesY;
unsigned int decenasY;
unsigned long centenasY;
unsigned long millaresY;
unsigned long millonY;
long movX;
long movY;
long movZ;
//prototipos de funciones
void Inicio(void);
void main()
{
Inicio();
printf(lcd_putc,"\fV: %s",Version);
delay_ms(1000);
printf(lcd_putc,"\fusb_init()");
usb_init();
delay_ms(1000);
printf(lcd_putc,"\fusb_task()");
usb_task();
delay_ms(1000);
printf(lcd_putc,"\fusb_enumeration()");
usb_wait_for_enumeration();
delay_ms(1000);
while(1)
{
if(usb_enumerated())
{
if (usb_kbhit(1))
{
for(i = 0; i<Lenbuf; i++)
{
recbuf = '\0';
}
// Recibe Packet
usb_get_packet(1, recbuf, Lenbuf);
//Analizo la trama recivida
if(recbuf[0] == 'i')
{
Inicio();
}
if(recbuf[0] == 'z')
{
flag_cambiar_sentidoZ = recbuf[1];
}
//conformo la X
if(recbuf[0] == 'x')
{
flag_cambiar_sentidoX = (recbuf[1]-48);
relX = 0;
difX = (recbuf[2]-48);
k = 3;
otro: if(recbuf[k] != 'f')
{
k++;
goto otro;
}
k--;
if(k == 7)
{
unidadesX = (recbuf[7]-48);
decenasX = ((recbuf[6]-48)*10);
centenasX = ((recbuf[5]-48)*100);
millaresX = ((recbuf[4]-48)*1000);
millonX = ((recbuf[3]-48)*10000);
}
if(k == 6)
{
unidadesX = (recbuf[6]-48);
decenasX = ((recbuf[5]-48)*10);
centenasX = ((recbuf[4]-48)*100);
millaresX = ((recbuf[3]-48)*1000);
}
if(k == 5)
{
unidadesX = (recbuf[5]-48);
decenasX = ((recbuf[4]-48)*10);
centenasX = ((recbuf[3]-48)*100);
}
if(k == 4)
{
unidadesX = (recbuf[4]-48);
decenasX = ((recbuf[3]-48)*10);
}
if(k == 3)
{
unidadesX = (recbuf[3]-48);
}
movX = millonX + millaresX + centenasX + decenasX + unidadesX;
}
//conformo la Y
if(recbuf[0] == 'y')
{
flag_cambiar_sentidoY = (recbuf[1]-48);
relY = (recbuf[2]-48);
difY = (recbuf[2]-48);
k = 3;
next: if(recbuf[k] != 'f')
{
k++;
goto next;
}
k--;
if(k == 7)
{
unidadesY = (recbuf[7]-48);
decenasY = ((recbuf[6]-48)*10);
centenasY = ((recbuf[5]-48)*100);
millaresY = ((recbuf[4]-48)*1000);
millonY = ((recbuf[3]-48)*10000);
}
if(k == 6)
{
unidadesY = (recbuf[6]-48);
decenasY = ((recbuf[5]-48)*10);
centenasY = ((recbuf[4]-48)*100);
millaresY = ((recbuf[3]-48)*1000);
}
if(k == 5)
{
unidadesY = (recbuf[5]-48);
decenasY = ((recbuf[4]-48)*10);
centenasY = ((recbuf[3]-48)*100);
}
if(k == 4)
{
unidadesY = (recbuf[4]-48);
decenasY = ((recbuf[3]-48)*10);
}
if(k == 3)
{
unidadesY = (recbuf[3]-48);
}
movY = millonY + millaresY + centenasY + decenasY + unidadesY;
}
if(recbuf[0] == 'e')
{
flag_inicio = 1;
for(i = 0; i<Lenbuf; i++)
{
recbuf = '\0';
}
}
}
}
if(flag_inicio == 1)
{
//...Movimiento del motor Z
if(flag_cambiar_sentidoZ == 0)
{
switch(pasoZ) //sentido hacia el origen
{
case 0x01: delay_ms(velocidad);
if(finZ1 == 0)
{
flag_Z = 1;
}
else
{
PORTD = ((PORTD & 0x0F)|0x90);
pasoZ = 2;
}
break;
case 0x02: delay_ms(velocidad);
if(finZ1 == 0)
{
flag_Z = 1;
}
else
{
PORTD = ((PORTD & 0x0F)|0x80);
pasoZ = 3;
}
break;
case 0x03: delay_ms(velocidad);
if(finZ1 == 0)
{
flag_Z = 1;
}
else
{
PORTD = ((PORTD & 0x0F)|0xA0);
pasoZ = 4;
}
break;
case 0x04: delay_ms(velocidad);
if(finZ1 == 0)
{
flag_Z = 1;
}
else
{
PORTD = ((PORTD & 0x0F)|0x20);
pasoZ = 5;
}
break;
case 0x05: delay_ms(velocidad);
if(finZ1 == 0)
{
flag_Z = 1;
}
else
{
PORTD = ((PORTD & 0x0F)|0x60);
pasoZ = 6;
}
break;
case 0x06: delay_ms(velocidad);
if(finZ1 == 0)
{
flag_Z = 1;
}
else
{
PORTD = ((PORTD & 0x0F)|0x40);
pasoZ = 7;
}
break;
case 0x07: delay_ms(velocidad);
if(finZ1 == 0)
{
flag_Z = 1;
}
else
{
PORTD = ((PORTD & 0x0F)|0x50);
pasoZ = 8;
}
break;
case 0x08: delay_ms(velocidad);
if(finZ1 == 0)
{
flag_Z = 1;
}
else
{
PORTD = ((PORTD & 0x0F)|0x10);
pasoZ = 1;
}
break;
case 0x09: pasoZ = 1;
break;
}
}
else
{
switch(pasoZ) //sentido hacia la alarma
{
case 0x00: pasoZ = 8;
break;
case 0x01: delay_ms(velocidad);
if(finZ2 == 0)
{
flag_alarma_Z = 1;
}
else
{
if(movZ != 0)
{
movZ--;
PORTD = ((PORTD & 0x0F)|0x90);
pasoZ = 8;
}
}
break;
case 0x02: delay_ms(velocidad);
if(finZ2 == 0)
{
flag_alarma_Z = 1;
}
else
{
if(movZ != 0)
{
movZ--;
PORTD = ((PORTD & 0x0F)|0x80);
pasoZ = 1;
}
}
break;
case 0x03: delay_ms(velocidad);
if(finZ2 == 0)
{
flag_alarma_Z = 1;
}
else
{
if(movZ != 0)
{
movZ--;
PORTD = ((PORTD & 0x0F)|0xA0);
pasoZ = 2;
}
}
break;
case 0x04: delay_ms(velocidad);
if(finZ2 == 0)
{
flag_alarma_Z = 1;
}
else
{
if(movZ != 0)
{
movZ--;
PORTD = ((PORTD & 0x0F)|0x20);
pasoZ = 3;
}
}
break;
case 0x05: delay_ms(velocidad);
if(finZ2 == 0)
{
flag_alarma_Z = 1;
}
else
{
if(movZ != 0)
{
movZ--;
PORTD = ((PORTD & 0x0F)|0x60);
pasoZ = 4;
}
}
break;
case 0x06: delay_ms(velocidad);
if(finZ2 == 0)
{
flag_alarma_Z = 1;
}
else
{
if(movZ != 0)
{
movZ--;
PORTD = ((PORTD & 0x0F)|0x40);
pasoZ = 5;
}
}
break;
case 0x07: delay_ms(velocidad);
if(finZ2 == 0)
{
flag_alarma_Z = 1;
}
else
{
if(movZ != 0)
{
movZ--;
PORTD = ((PORTD & 0x0F)|0x50);
pasoZ = 6;
}
}
break;
case 0x08: delay_ms(velocidad);
if(finZ2 == 0)
{
flag_alarma_Z = 1;
}
else
{
if(movZ != 0)
{
movZ--;
PORTD = ((PORTD & 0x0F)|0x10);
pasoZ = 7;
}
}
break;
}
}//end del else Z
//...Movimiento del motor Y
if(flag_cambiar_sentidoY == 0)
{
switch(pasoY) //sentido hacia la alarma
{
case 0x01: delay_ms(velocidad);
if(finY1 == 0)
{
flag_alarma_Y = 1;
}
else
{
if(relX == 0)
{
if(movY != 0)
{
relY--;
movY--;
PORTD = ((PORTD & 0xF0)|0x09);
pasoY = 2;
if(relY == 0)
{
relX = difX;
}
}
else
{
flag_fin_mov_Y = 1;
}
}
}
break;
case 0x02: delay_ms(velocidad);
if(finY1 == 0)
{
flag_alarma_Y = 1;
}
else
{
if(relX == 0)
{
if(movY != 0)
{
relY--;
movY--;
PORTD = ((PORTD & 0xF0)|0x08);
pasoY = 3;
if(relY == 0)
{
relX = difX;
}
}
else
{
flag_fin_mov_Y = 1;
}
}
}
break;
case 0x03: delay_ms(velocidad);
if(finY1 == 0)
{
flag_alarma_Y = 1;
}
else
{
if(relX == 0)
{
if(movY != 0)
{
relY--;
movY--;
PORTD = ((PORTD & 0xF0)|0x0A);
pasoY = 4;
if(relY == 0)
{
relX = difX;
}
}
else
{
flag_fin_mov_Y = 1;
}
}
}
break;
case 0x04: delay_ms(velocidad);
if(finY1 == 0)
{
flag_alarma_Y = 1;
}
else
{
if(relX == 0)
{
if(movY != 0)
{
relY--;
movY--;
PORTD = ((PORTD & 0xF0)|0x02);
pasoY = 5;
if(relY == 0)
{
relX = difX;
}
}
else
{
flag_fin_mov_Y = 1;
}
}
}
break;
case 0x05: delay_ms(velocidad);
if(finY1 == 0)
{
flag_alarma_Y = 1;
}
else
{
if(relX == 0)
{
if(movY != 0)
{
relY--;
movY--;
PORTD = ((PORTD & 0xF0)|0x06);
pasoY = 6;
if(relY == 0)
{
relX = difX;
}
}
else
{
flag_fin_mov_Y = 1;
}
}
}
break;
case 0x06: delay_ms(velocidad);
if(finY1 == 0)
{
flag_alarma_Y = 1;
}
else
{
if(relX == 0)
{
if(movY != 0)
{
relY--;
movY--;
PORTD = ((PORTD & 0xF0)|0x04);
pasoY = 7;
if(relY == 0)
{
relX = difX;
}
}
else
{
flag_fin_mov_Y = 1;
}
}
}
break;
case 0x07: delay_ms(velocidad);
if(finY1 == 0)
{
flag_alarma_Y = 1;
}
else
{
if(relX == 0)
{
if(movY != 0)
{
relY--;
movY--;
PORTD = ((PORTD & 0xF0)|0x05);
pasoY = 8;
if(relY == 0)
{
relX = difX;
}
}
else
{
flag_fin_mov_Y = 1;
}
}
}
break;
case 0x08: delay_ms(velocidad);
if(finY1 == 0)
{
flag_alarma_Y = 1;
}
else
{
if(relX == 0)
{
if(movY != 0)
{
relY--;
movY--;
PORTD = ((PORTD & 0xF0)|0x01);
pasoY = 1;
if(relY == 0)
{
relX = difX;
}
}
else
{
flag_fin_mov_Y = 1;
}
}
}
break;
case 0x09: pasoY = 1;
break;
}
}
else
{
switch(pasoY) //sentido hacia el origen
{
case 0x00: pasoY = 8;
break;
case 0x01: delay_ms(velocidad);
if(finY2 == 0)
{
flag_Y = 1;
relY = 0;
}
else
{
if(relX == 0)
{
if(movY != 0)
{
relY--;
movY--;
PORTD = ((PORTD & 0xF0)|0x09);
pasoY = 8;
if(relY == 0)
{
relX = difX;
}
}
else
{
flag_fin_mov_Y = 1;
}
}
}
break;
case 0x02: delay_ms(velocidad);
if(finY2 == 0)
{
flag_Y = 1;
relY = 0;
}
else
{
if(relX == 0)
{
if(movY != 0)
{
relY--;
movY--;
PORTD = ((PORTD & 0xF0)|0x08);
pasoY = 1;
if(relY == 0)
{
relX = difX;
}
}
else
{
flag_fin_mov_Y = 1;
}
}
}
break;
case 0x03: delay_ms(velocidad);
if(finY2 == 0)
{
flag_Y = 1;
relY = 0;
}
else
{
if(relX == 0)
{
if(movY != 0)
{
relY--;
movY--;
PORTD = ((PORTD & 0xF0)|0x0A);
pasoY = 2;
if(relY == 0)
{
relX = difX;
}
}
else
{
flag_fin_mov_Y = 1;
}
}
}
break;
case 0x04: delay_ms(velocidad);
if(finY2 == 0)
{
flag_Y = 1;
relY = 0;
}
else
{
if(relX == 0)
{
if(movY != 0)
{
relY--;
movY--;
PORTD = ((PORTD & 0xF0)|0x02);
pasoY = 3;
if(relY == 0)
{
relX = difX;
}
}
else
{
flag_fin_mov_Y = 1;
}
}
}
break;
case 0x05: delay_ms(velocidad);
if(finY2 == 0)
{
flag_Y = 1;
relY = 0;
}
else
{
if(relX == 0)
{
if(movY != 0)
{
relY--;
movY--;
PORTD = ((PORTD & 0xF0)|0x06);
pasoY = 4;
if(relY == 0)
{
relX = difX;
}
}
else
{
flag_fin_mov_Y = 1;
}
}
}
break;
case 0x06: delay_ms(velocidad);
if(finY2 == 0)
{
flag_Y = 1;
relY = 0;
}
else
{
if(relX == 0)
{
if(movY != 0)
{
relY--;
movY--;
PORTD = ((PORTD & 0xF0)|0x04);
pasoY = 5;
if(relY == 0)
{
relX = difX;
}
}
else
{
flag_fin_mov_Y = 1;
}
}
}
break;
case 0x07: delay_ms(velocidad);
if(finY2 == 0)
{
flag_Y = 1;
relY = 0;
}
else
{
if(relX == 0)
{
if(movY != 0)
{
relY--;
movY--;
PORTD = ((PORTD & 0xF0)|0x05);
pasoY = 6;
if(relY == 0)
{
relX = difX;
}
}
else
{
flag_fin_mov_Y = 1;
}
}
}
break;
case 0x08: delay_ms(velocidad);
if(finY2 == 0)
{
flag_Y = 1;
relY = 0;
}
else
{
if(relX == 0)
{
if(movY != 0)
{
relY--;
movY--;
PORTD = ((PORTD & 0xF0)|0x01);
pasoY = 7;
if(relY == 0)
{
relX = difX;
}
}
else
{
flag_fin_mov_Y = 1;
}
}
}
break;
}
}//end del else Y
//...Movimiento del motor X
if(flag_cambiar_sentidoX == 0)
{
switch(pasoX) //sentido hacia la alarma
{
case 0x01: delay_ms(velocidad);
if(finX1 == 0)
{
flag_alarma_X = 1;
}
else
{
if(relY == 0)
{
if(movX != 0)
{
relX--;
movX--;
PORTA = ((PORTA & 0xF0)|0x09);
pasoX = 2;
if(relX == 0)
{
relY = difY;
}
}
else
{
flag_fin_mov_X = 1;
}
}
}
break;
case 0x02: delay_ms(velocidad);
if(finX1 == 0)
{
flag_alarma_X = 1;
}
else
{
if(relY == 0)
{
if(movX != 0)
{
relX--;
movX--;
PORTA = ((PORTA & 0xF0)|0x08);
pasoX = 3;
if(relX == 0)
{
relY = difY;
}
}
else
{
flag_fin_mov_X = 1;
}
}
}
break;
case 0x03: delay_ms(velocidad);
if(finX1 == 0)
{
flag_alarma_X = 1;
}
else
{
if(relY == 0)
{
if(movX != 0)
{
relX--;
movX--;
PORTA = ((PORTA & 0xF0)|0x0A);
pasoX = 4;
if(relX == 0)
{
relY = difY;
}
}
else
{
flag_fin_mov_X = 1;
}
}
}
break;
case 0x04: delay_ms(velocidad);
if(finX1 == 0)
{
flag_alarma_X = 1;
}
else
{
if(relY == 0)
{
if(movX != 0)
{
relX--;
movX--;
PORTA = ((PORTA & 0xF0)|0x02);
pasoX = 5;
if(relX == 0)
{
relY = difY;
}
}
else
{
flag_fin_mov_X = 1;
}
}
}
break;
case 0x05: delay_ms(velocidad);
if(finX1 == 0)
{
flag_alarma_X = 1;
}
else
{
if(relY == 0)
{
if(movX != 0)
{
relX--;
movX--;
PORTA = ((PORTA & 0xF0)|0x06);
pasoX = 6;
if(relX == 0)
{
relY = difY;
}
}
else
{
flag_fin_mov_X = 1;
}
}
}
break;
case 0x06: delay_ms(velocidad);
if(finX1 == 0)
{
flag_alarma_X = 1;
}
else
{
if(relY == 0)
{
if(movX != 0)
{
relX--;
movX--;
PORTA = ((PORTA & 0xF0)|0x04);
pasoX = 7;
if(relX == 0)
{
relY = difY;
}
}
else
{
flag_fin_mov_X = 1;
}
}
}
break;
case 0x07: delay_ms(velocidad);
if(finX1 == 0)
{
flag_alarma_X = 1;
}
else
{
if(relY == 0)
{
if(movX != 0)
{
relX--;
movX--;
PORTA = ((PORTA & 0xF0)|0x05);
pasoX = 8;
if(relX == 0)
{
relY = difY;
}
}
else
{
flag_fin_mov_X = 1;
}
}
}
break;
case 0x08: delay_ms(velocidad);
if(finX1 == 0)
{
flag_alarma_X = 1;
}
else
{
if(relY == 0)
{
if(movX != 0)
{
relX--;
movX--;
PORTA = ((PORTA & 0xF0)|0x01);
pasoX = 1;
if(relX == 0)
{
relY = difY;
}
}
else
{
flag_fin_mov_X = 1;
}
}
}
break;
case 0x09: pasoX = 1;
break;
}
}
else
{
switch(pasoX) //Sentido hacia el origen
{
case 0x00: pasoX = 8;
break;
case 0x01: delay_ms(velocidad);
if(finX2 == 0)
{
flag_X = 1;
relX = 0;
}
else
{
if(relY == 0)
{
if(movX != 0)
{
relX--;
movX--;
PORTA = ((PORTA & 0xF0)|0x09);
pasoX = 8;
if(relX == 0)
{
relY = difY;
}
}
else
{
flag_fin_mov_X = 1;
}
}
}
break;
case 0x02: delay_ms(velocidad);
if(finX2 == 0)
{
flag_X = 1;
relX = 0;
}
else
{
if(relY == 0)
{
if(movX != 0)
{
relX--;
movX--;
PORTA = ((PORTA & 0xF0)|0x08);
pasoX = 1;
if(relX == 0)
{
relY = difY;
}
}
else
{
flag_fin_mov_X = 1;
}
}
}
break;
case 0x03: delay_ms(velocidad);
if(finX2 == 0)
{
flag_X = 1;
relX = 0;
}
else
{
if(relY == 0)
{
if(movX != 0)
{
relX--;
movX--;
PORTA = ((PORTA & 0xF0)|0x0A);
pasoX = 2;
if(relX == 0)
{
relY = difY;
}
}
else
{
flag_fin_mov_X = 1;
}
}
}
break;
case 0x04: delay_ms(velocidad);
if(finX2 == 0)
{
flag_X = 1;
relX = 0;
}
else
{
if(relY == 0)
{
if(movX != 0)
{
relX--;
movX--;
PORTA = ((PORTA & 0xF0)|0x02);
pasoX = 3;
if(relX == 0)
{
relY = difY;
}
}
else
{
flag_fin_mov_X = 1;
}
}
}
break;
case 0x05: delay_ms(velocidad);
if(finX2 == 0)
{
flag_X = 1;
relX = 0;
}
else
{
if(relY == 0)
{
if(movX != 0)
{
relX--;
movX--;
PORTA = ((PORTA & 0xF0)|0x06);
pasoX = 4;
if(relX == 0)
{
relY = difY;
}
}
else
{
flag_fin_mov_X = 1;
}
}
}
break;
case 0x06: delay_ms(velocidad);
if(finX2 == 0)
{
flag_X = 1;
relX = 0;
}
else
{
if(relY == 0)
{
if(movX != 0)
{
relX--;
movX--;
PORTA = ((PORTA & 0xF0)|0x04);
pasoX = 5;
if(relX == 0)
{
relY = difY;
}
}
else
{
flag_fin_mov_X = 1;
}
}
}
break;
case 0x07: delay_ms(velocidad);
if(finX2 == 0)
{
flag_X = 1;
relX = 0;
}
else
{
if(relY == 0)
{
if(movX != 0)
{
relX--;
movX--;
PORTA = ((PORTA & 0xF0)|0x05);
pasoX = 6;
if(relX == 0)
{
relY = difY;
}
}
else
{
flag_fin_mov_X = 1;
}
}
}
break;
case 0x08: delay_ms(velocidad);
if(finX2 == 0)
{
flag_X = 1;
relX = 0;
}
else
{
if(relY == 0)
{
if(movX != 0)
{
relX--;
movX--;
PORTA = ((PORTA & 0xF0)|0x01);
pasoX = 7;
if(relX == 0)
{
relY = difY;
}
}
else
{
flag_fin_mov_X = 1;
}
}
}
break;
}
}//end del else X
}//end flag_inicio
if((flag_X == 1) && (flag_Y == 1) && (flag_Z == 1))
{
printf(lcd_putc,"\fPunto de Origen");
printf(lcd_putc,"\nEsperando datos");
usb_put_packet(1,ConfOrg,6,USB_DTS_TOGGLE);
}
if((flag_alarma_X == 1) || (flag_alarma_Y == 1))
{
printf(lcd_putc,"\f Alarma");
}
else
{
//printf(lcd_putc,"\f%s %d %d%d%d", recbuf, flag_cambiar_sentidoX, flag_cambiar_sentidoY, flag_cambiar_sentidoZ, flag_inicio);
//printf(lcd_putc,"\n%Ld %Ld %d%d %d%d", movY, movX, difX, difY, relX, relY);
}
if(flag_fin_mov_X == 1)
{
relX = 0;
printf(lcd_putc,"\fFin mov X");
}
if(flag_fin_mov_Y == 1)
{
relY = 0;
printf(lcd_putc,"\nFin mov Y");
}
if((flag_fin_mov_X == 1) && (flag_fin_mov_Y == 1))
{
flag_inicio = 0;
flag_fin_mov_Y = 0;
flag_fin_mov_X = 0;
printf(lcd_putc,"\fEsperando dato");
}
if(tecla1 == 0) //tecla inicio
{
delay_ms(20);
if(tecla1 == 0)
{
pasoZ = 1;
pasoY = 1;
pasoX = 1;
flag_cambiar_sentidoY = 0;
flag_cambiar_sentidoZ = 1;
flag_cambiar_sentidoX = 0;
flag_inicio = 1;
movX = 2000;
movY = 1000;
}
}
if(tecla2 == 0)
{
delay_ms(20);
if(tecla2 == 0)
{
if(flag_cambiar_sentidoZ == 1)
{
flag_cambiar_sentidoZ = 0;
pasoZ += 2;
}
}
}
if(tecla3 == 0)
{
delay_ms(20);
if(tecla3 == 0)
{
if(velocidad <= 100)
{
if(velocidad == 101)
{
velocidad = 4;
}
velocidad++;
}
}
}
}
}
void Inicio(void)
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(FALSE);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_comparator(NC_NC_NC_NC);
setup_low_volt_detect(FALSE);
setup_oscillator(OSC_NORMAL);
//...revisar esto en caso de no funcionar el programa.
set_tris_a(0x00);
set_tris_b(0x03);
set_tris_d(0x00);
set_tris_e(0xFF);
TRISC7 = 1;
enable_interrupts(global);
lcd_init();
flag_inicio = 0;
flag_X = 0;
flag_Y = 0;
flag_Z = 0;
flag_alarma_X = 0;
flag_alarma_Y = 0;
flag_alarma_Z = 0;
flag_cambiar_sentidoX = 1;
flag_cambiar_sentidoY = 1;
flag_cambiar_sentidoZ = 0;
flag_fin_mov_X = 0;
flag_fin_mov_Y = 0;
flag_fin_mov_Z = 0;
PORTD = 0x00;
TR = 0;
velocidad = 4;
pasoZ = 1;
pasoY = 1;
pasoX = 1;
relX = 0;
relY = 1;
difX = 1;
difY = 1;
movX = 65000;
movY = 65000;
movZ = 65000;
unidadesX = 0;
decenasX = 0;
centenasX = 0;
millaresX = 0;
millonX = 0;
unidadesY = 0;
decenasY = 0;
centenasY = 0;
millaresY = 0;
millonY = 0;
}