Buen dia a todos, saben? estoy trabajando en un proyecto que creo es interesante, ya que tengo que controlar una impresora Zebra modelo TLP2844, esta la puedo controlar por programacion EPL2, estos son comandos o cadenas de strings que le envio al puerto RS232 que tiene la impresora.
Pero el problema no acaba ahi, la tarea de la impresora pues es imprimir etiquetas adheribles, en estas etiquetas hay informacion que hay que estar actualizando cosntantemente, una es el numero del operador que mando imprimir y el otro es la hora y fecha.
Por ser un proyecto poco grande, pues me vi en la necesidad de hacer subsistemas:
* El primero fue mandar imprimir la etiqueta desde el PIC y todo OK!!! Esto consume 30% de la RAM
* El segundo manejar un LCD y teclado lo que se podria llamar una interfaz hombre maquina, esto para poder actualizar los datos del numero de operador y que el usuario pueda ver los datos que tendra la etiqueta OK!! Consume 65% de la RAM
* Actualmente estoy trabajando en la configuracion y lectura del DS1307, creo que todo va bien. Esto consume 50%
Despues de este choro mareador, pueden darse cuenta que todo este programa no cabra en un PIC16F877A, entonces recurri al PIC18F4520, la razon de escoger este PIC es porque aqui tengo uno a la mano. Y para adentrarme en este PIC pues empiezo a hacer un ejemplo muy sencillo, pero cielos!!!!!!! NO FUNCIONA!!!!!!!
Al momento de correr mi circuito en PROTEUS simplemente envia la palabra por RS232, del lcd y teclado no veo nada, pego mi codigo para que por favor, me echen una mano, y saber por donde empezar.
#include <18F4520.h>
#device adc=8
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES WDT128 //Watch Dog Timer uses 1:128 Postscale
#FUSES HS //High speed Osc (> 4mhz)
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES BORV25 //Brownout reset at 2.5V
#FUSES NOPUT //No Power Up Timer
#FUSES NOCPD //No EE protection
#FUSES STVREN //Stack full/underflow will cause reset
#FUSES NODEBUG //No Debug mode for ICD
#FUSES LVP //Low Voltage Programming on B3(PIC16) or B5(PIC18)
#FUSES NOWRT //Program memory not write protected
#FUSES NOWRTD //Data EEPROM not write protected
#FUSES IESO //Internal External Switch Over mode enabled
#FUSES FCMEN //Fail-safe clock monitor enabled
#FUSES PBADEN //PORTB pins are configured as analog input channels on RESET
#FUSES NOWRTC //configuration not registers write protected
#FUSES NOWRTB //Boot block not write protected
#FUSES NOEBTR //Memory not protected from table reads
#FUSES NOEBTRB //Boot block not protected from table reads
#FUSES NOCPB //No Boot Block code protection
#FUSES LPT1OSC //Timer1 configured for low-power operation
#FUSES MCLR //Master Clear pin enabled
#FUSES NOXINST //Extended set extension and Indexed Addressing mode disabled (Legacy mode)
#use delay(clock=20000000) //Reloj
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) //Directivas comunicacion serial
#use i2c(Master,Slow,sda=PIN_C4,scl=PIN_C3) //Directivas comunicacion I2C
#include <LCD.C>
#include <KBD.C>
#define lcd_portb TRUE
char MiTecla=0;
void main()
{
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_OFF|ADC_TAD_MUL_0);
setup_psp(PSP_DISABLED);
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_vref(FALSE);
setup_oscillator(False);
// TODO: USER CODE!!
lcd_init();
kbd_init();
for(;
{
printf(lcd_putc,"NUM OP: XXXX\n"); //Salta al siguiente renglon
printf(lcd_putc,"NUM PART:XXXX");
lcd_gotoxy(8,1);
printf("QUE PASO"); //ESTO SI LO VEO POR LA TERMINAL
do
{
MiTecla=kbd_getc();
} while (MiTecla!='#');
printf(lcd_putc,"\f");
printf(lcd_putc,"YA TERMINO WHILE");
}
}