Autor Tema: ayuda no puedo enviar datos a la compu con el pic  (Leído 1675 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado masterchild

  • PIC10
  • *
  • Mensajes: 2
ayuda no puedo enviar datos a la compu con el pic
« en: 10 de Septiembre de 2006, 03:19:42 »
hola agradeceria que me ayudaran con lo siguiente estoy tratando de mandar un dato con el pic por el puerto serie, uso win98  escribi el codigo del pic    LIST P=16F876
      RADIX=HEX
      PROCESSOR 16F876
      INCLUDE "P16F876.INC"
      __CONFIG _XT_OSC &_WDT_OFF &_PWRTE_ON &_LVP_OFF

      ORG    0X00
      GOTO    INI

      ORG      0X05


INI      MOVLW   0X00
      bsf      STATUS,RP0
      BCF      STATUS,RP1
      MOVLW   b'1011111'
      MOVWF   TRISC
      BCF      STATUS,RP0
      BSF      RCSTA,SPEN
      BSF      STATUS,RP0
      MOVLW   b'00100100'
      MOVWF   TXSTA
      MOVLW   .25
      MOVWF   SPBRG
      BSF      TXSTA,TXEN
      BCF      STATUS,RP0   
      MOVLW   48
      MOVWF   TXREG
      

      END
luego use el max232 y la computadora tiene el programa siguiente:


#include<stdlib.h>
#include<dos.h>
#include<stdio.h>
#include<conio.h>
int c,d,i;
main()
{

clrscr();
c=inportb(0x3F8);
printf("%d",c);
d=inportb(0x3Fd);
printf("\t\n%d",d);

getch();
return 0;
}

pero en lugar de ver el dato que mande solo veo un 255 que esta mal?

Desconectado Manofwar

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 156
Re: ayuda no puedo enviar datos a la compu con el pic
« Respuesta #1 en: 10 de Septiembre de 2006, 04:32:40 »
Hola Masterchild.

Tu problema esta en la configuración del registro TXSTA, lo tienes configurado en 9 bits en lugar de en 8.

La solución
Código: [Seleccionar]
      MOVLW   b'00000100'
      MOVWF   TXSTA

O cambias la configuración del puerto en el PC
Saludos desde Almería, España

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: ayuda no puedo enviar datos a la compu con el pic
« Respuesta #2 en: 10 de Septiembre de 2006, 15:00:12 »
masterchild, además de los consejos de Manofwar

Te propongo que pruebes primero con el hyperterminal y no con un programa hecho por tí. El hyperterminal viene con windows, seteas el baudeaje, sin control de flujo y listo.

En cuanto a tu software, me parece qeu estas liado en 2 cosas.

1) Tu pic no termina la ejecución al llegar al END! El END solamente le dice al ensamblador que termine su tarea.

Debes hacer un bucle infinito.

Por ej: , cambia
Código: ASM
  1. MOVLW 48
  2. MOVWF TXREG

por

Código: ASM
  1. BUCLE:
  2.    btfss   PIR1,TXIF      ;nos fijamos si está vacío el buffer de usart
  3.    goto   BUCLE
  4.    MOVLW   'A'
  5.    MOVWF   TXREG
  6.    goto   BUCLE

2) Estas configurando mal el TRISC, si te fijas en el datasheet de los 16F, el trisc<6> y trisc<7> ambos deben estar en 1.
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado masterchild

  • PIC10
  • *
  • Mensajes: 2
Re: ayuda no puedo enviar datos a la compu con el pic
« Respuesta #3 en: 10 de Septiembre de 2006, 22:12:34 »
ya veo mi dato con el hiperterminal, ahora me falta saber que falla en el C++ gracias :-/

Desconectado Dancrazy

  • PIC16
  • ***
  • Mensajes: 134
Re: ayuda no puedo enviar datos a la compu con el pic
« Respuesta #4 en: 12 de Septiembre de 2006, 10:50:15 »
Has usado el PIC C CCS compiler?

es excelente!!!  y facilito, no necesitas saber mucho, la ayuda te dice todo...

solamente poner #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) y printf("mensaje") y ya. Si no es obligatorio para tu proyecto, busca este software...  ademas trae un monitor de puerto serial muy bueno
Daniel 
Caracas, Venezuela 

-----------------