Autor Tema: problemas con programa  (Leído 1839 veces)

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

Desconectado brujoracer

  • PIC10
  • *
  • Mensajes: 6
problemas con programa
« en: 30 de Septiembre de 2009, 17:22:11 »
hola amigos tengo problemas con este programa

la idea es recibir datos mediante el rx usart y enviarlos por tx usart al pc, la transmision es unidireccional

aqui les dejo lo que tengo.
                                                        LIST P=16F870
                     INCLUDE <P16F870.INC> ; Librerias necesarias
                  
                     
               
                     
                  

dato equ 0x20

                     org 0x0000

                  BSF STATUS,RP0 ; banco 1
                  BCF STATUS,RP1

                  CLRF TRISB ; configuramos el puerto B como salida
                  
                  BCF TXSTA,BRGH
                  
                  MOVLW D'31' ; configura velocidad de Tx a 9600 baudios
                  MOVWF SPBRG
                  
                  BCF TXSTA,SYNC ; limpia bit sync (modo asíncrono)
                  BSF TXSTA,TXEN ; setea bit txen (habilita Tx)

                  BCF STATUS,RP0 ; volvemos al banco 0
                  
                  BSF RCSTA,SPEN ; setea bit spen (habilita puerto serial)
                  BSF RCSTA,CREN ; habilita recepcion



;***************************** PROGRAMA PRINCIPAL **********************************************
rutina               CALL recibir
                  MOVFW dato
                  CALL enviar
                  
                  GOTO rutina


;rutinas que efectuan la transmision y recepcion de los datos por la USART



enviar               BSF STATUS,RP0 ; vamos al banco 1
esp                BTFSS TXSTA,TRMT ; chequear el buffer de transmision
                  GOTO esp

                  BCF STATUS,RP0 ; vamos al banco 0
                  MOVF dato,W
                  MOVWF TXREG ; enviamos el registro "dato" por la USART
                  RETURN

recibir               BTFSS PIR1,RCIF ; chequeamos el buffer de recepcion
                  GOTO recibir

                  MOVF RCREG,W ; si hay dato, lo movemos a W y
                  MOVWF dato ; luego lo guardamos en "dato"
                  RETURN

                  end

de antemano gracias

Desconectado sansanoloko

  • PIC10
  • *
  • Mensajes: 48
Re: problemas con programa
« Respuesta #1 en: 30 de Septiembre de 2009, 19:23:51 »
Recomendaciones varias:

- Revisa lo fuses de programación.

- Verifica que el dato que estas cargando en el registro SPBRG corresponde segun el cristal que estas usando.

- Verifica que los pines de la USART estén habilitados como entradas.

- Y la más importante de todas... lee muy bien el datasheet del micro que estas usando, y luego pregunta.


Eso por el momento. Saludos a quienes nos leen

Desconectado isfan

  • PIC16
  • ***
  • Mensajes: 145
Re: problemas con programa
« Respuesta #2 en: 01 de Octubre de 2009, 09:50:10 »
Hola amigo, haber lo que he visto que tienes configurado el PuertoB como salida, pero no tienes configurada el PuertoC  donde van las linea RC6/TC/CK  y RC7/RX/DT para implementar el USART

Desconectado brujoracer

  • PIC10
  • *
  • Mensajes: 6
Re: problemas con programa
« Respuesta #3 en: 01 de Octubre de 2009, 20:04:05 »
hola como estan,, gracias por responder

ahora hice este programa parecido al anterior pero aun no puedo encviar datos
al simular en proteus en el pin RC7 que es recepcion inserto un pulso para simular la entrada de datos


                                                    list p=16f870
                     #include <p16f870.inc>


status         equ      3h
PORTC         equ      7h
TRISC         equ      87h
RCREG         equ      1Ah
RCSTA         equ      18h
SPBRG         equ      99h
dato         equ      20h
PIR1         equ      0Ch
TXSTA         equ      98h
TXREG         equ      19h
numero         equ      21h

               org      00h
               goto   inicio
               
               
inicio            bsf      status,RP0
               clrf   TRISC
               movlw   b'10111111'
               movwf   TRISC
               
               movlw   b'00100100'
               movwf   TXSTA
               movlw   D'25'
               movwf   SPBRG
               bcf      status,RP0
               movlw   b'10010000'
               movwf   RCSTA
               
loop            call   recibe
               movwf   dato   
               call   envia            
               


recibe            bcf      status,RP0               
               btfss   PIR1,RCIF
               goto   recibe
            
               movf   RCREG,W
                  
               movwf   dato
               return
               
               
                        
envia            bsf      status,RP0
               btfss   TXSTA,TRMT
               bcf      status,RP0
               movf   dato,W
               movwf   TXREG
            
               return
                           
               end      




            


 

anything