Puedes hacer un Debug, es lo ideal para averiguar porqué un programa no hace lo que se supone que debe de hacer. También puedes conectar el PIC al PC con un MAX232, y mirar en el hiperterminal que está mandando tu programa.
Yo no me encabezonaría en mirar y remirar el fuente, comprueba con el debug que hace el programa y con el hiperterminal que envía tu PIC, si es que envía algo.
Lo que he dicho es que conectes el PIC al PC con un MAX232, para comprobar que es lo que está mandando tu programa, que seguramente es erroneo.
El Debug te permite, desde MPLAB o MPLABX, ver lo que está haciendo el programa, ver el contenido de variables, poner puntos de ruptura para parar el programa en un punto determinado, etc... Debes de tener un dispositivo adecuado como un Pickit3 o un ICD3.
efectivamente cuando le envías el numero móvil el modem devuelve un ">", en tu programa hay una espera, seguramente ahí llega ese caracter, en los modem de quectel es imprescindible enviarle el caracter equivalente a CTRL+Z , asi que pienso que deberías verificar si estas enviando bien ese 0x1A, con PUTC por ejemplo
Parece que tienes mal configurado el puerto "C", añade la directiva #use standard_io(c), que lo configura de forma automática y pruebas a ver que tal va.
Prueba colocar una resistencia de pull up de 10k desde Vcc a el pin tx. y vuelve a probar en fisico. :mrgreen:
Y nos dices como te fue ;-)
Saludos
//Placa entrenadora PicEBasic (PIC16F876)
//Test puerto RS232
#include <16F876.h>
#device adc=10
#use delay (clock = 20000000) //Reloj a 20Mhz
#FUSES HS //Fast clock
#FUSES PUT //Power-up Timer
#FUSES BROWNOUT //Brown-out reset
#FUSES NOWDT //No, Watchdog Timer
#FUSES NOCPD //No, Data EEPROM Memory Code Protection
#FUSES NOPROTECT //No, (CP) Flash Program Memory Code Protection
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#use standard_io (a)
#use standard_io (b)
#use standard_io (c)
#use rs232 (UART1, BAUD = 9600, PARITY=N, BITS=8, TIMEOUT=1)
void main()
{
//Configuración general Pic EBasic
setup_adc_ports(NO_ANALOGS); //Puerto como I/O
setup_adc(ADC_OFF); //Módulo ADC a Off
setup_ccp1(CCP_OFF); //Módulo CCP a Off
set_tris_a(0b11111111);
set_tris_b(0b11111111);
set_tris_c(0b11111111);
//Constantes (codigos de control ASCII del hyperterminal)
Const int FF = 0x0c; //FF, Avance de pagina
Const int BELL = 0x07; //BELL, Señal sonora
Const int SP = 0x20; //SP, Espacio
Const int BKSP = 0x08; //BKSP, Retroceso
Const int CR = 0x0d; //CR, retorno de carro
Const int LF = 0x0a; //LF, Salto de linea
Const int CTRLZ = 0x1a; //Ctrl-z
Const int ESC = 0x1b; //Escape
while(1){
if (kbhit()) {
putc(getc());
}
}
}
Al final he podido probar el primer código que pusiste en el hilo y a mi me funciona.
Como te dije antes si me ha funcionado.
Para probar el puerto RS232 se unen los pin 2 y 3 del DB9 con un simple puente de disco duro y el terminal queda en modo eco, es decir, lo que se teclea en el ordenador se recibe en la pantalla del hyperterminal.
Pero juanjuan19, no tienes por alli un conversor ttl a usb por rs232 como estos? (https://www.google.co.ve/search?q=convertidor+rs232+a+usb&tbm=isch&imgil=z1OWPTR_L01DXM%253A%253B9nctOkae71dzhM%253Bhttp%25253A%25252F%25252Froboticaludica.com%25252F%25253Fp%2525253D544&source=iu&pf=m&fir=z1OWPTR_L01DXM%253A%252C9nctOkae71dzhM%252C_&biw=1024&bih=611&usg=__USOBhVB1VDqo0HBh4OteRRrUa9A%3D&ved=0CDcQyjc&ei=D8CRVfG6IYKjyASppLDoCA#imgrc=z1OWPTR_L01DXM%3A&usg=__USOBhVB1VDqo0HBh4OteRRrUa9A%3D)
Porque puede ser que este mal el pin rx de tu pc :?
Puedes probar como dice planeta9999 o tambien puedes colocar un led a la salida del tx del pic y ver si este titila cuando envias los datos, claro con un osciloscopio o un analizador logico seria mucho mejor, pero es una prueba rapida que podrias utilizar.
Si el led titila entonces puede ser que este dañado el convertidor de RS232 a usb (suponiendo que todo esta conectado correctamente).
No hace falta que te enfrasquez probando con VB con el hiperterminal deberias poder ver las tramas :mrgreen:
Si no esta malo el pin TX o hay un falso contacto en este; puedes probar configur el pin TX como salida antes de enviar los datos por este y nos comentas :mrgreen: