• Domingo 17 de Noviembre de 2024, 01:52

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - norte75

Páginas: [1]
1
Microcontroladores / Comunicacion Uart-pc
« en: Viernes 26 de Mayo de 2006, 10:54 »
hola,

objetivo: mandar dato desde pc al pic 16f877 - via uart asincrona, que procese el dato y lo devuelva pro la uart al pc

he elaborado el siguiente programa en leng. ensamblador, y me gustaria que algún alma caritativa lo revisara antes de implementarlo.

Muchas Gracias

Código:

   LIST P=16F877
   RADIX HEX
   INCLUDE "P16F877.INC"
   dato EQU 20
   reg9bit EQU 21
   ORG 0x00
   goto INICIO
   ORG 0x04
INTER   bcf STATUS,RP0
   btfss PIR1,RCIF      ; se ha recibido datos en RSR register
   goto VOLVER
   btfss RCSTA,FERR   ;si FERR=1 habrá error de frame y no se ejecutara la siguiente instrucción
   goto NOEF
   goto VOLVER      ;existe error de frame y no ejecutamos recepción
NOEF   btfss RCSTA,OERR   ;si OERR=1 habrá error de overrun y no se ejecutara la siguiente instrucción
   goto NOEO
   goto VOLVER      ;existe error de overrun y no ejecutamos recepción
NOEO   movlw D'0'      ; no habria ni overrun ni error de frame,
   btfsc RCSTA,RX9D   ; si el 9th bitRX9D=1 ejecuta siguiente instrucción
   movlw D'1'
   movwf reg9bit      ;meto o bien el 0 o el 1 que haya llegado como noveno bit
   movf RCREG,W
   movwf dato      ;meto el resto de 8 bits en el reg dato
   DECFSZ dato,1      ;una vez rx los 9 bits, para reenviarlo invierto el noveno bit y sumo 1 al octeto
   INCFSZ reg9bit,1   ; si el bit 0 era 1 se pondrá a 0 y si es 0 se pondrá a 1 al sumarle '00000001'
   bsf STATUS,RP0   ; banco 1 , ahora vamos a transmitir
   bsf PIE1, TXIE      ;TXIE=1 permito interrupciones por tx
   bsf TXSTA,TX9D      ;supongo que bit 9 es 1
   btfss reg9bit,0      ;si fuera un 1 se salta siguiente instrucción
   bcf TXSTA,TX9D       ; es un 0 y lo pongo a 0
   bcf STATUS,RP0    ; banco 0 para tarbajar con TXREG
   movf dato,TXREG
   bsf STATUS,RP0   ; banco 1 ,  para trabajar con TXSTA
FINTX   btfss TXSTA,TRMT
   goto FINTX
   bcf PIE1, TXIE      ;TXIE=0 quito permito interrupciones por tx
VOLVER retfie
INICIO   clrf PORTC       ; limpio puerto C que se utilizará en entrada y salida
   movlw b '11000000'
   iorwf INTCON,F       ; OR con  INTCON para activar GIE=PEIE=1 permitir interrupciones
   bcf STATUS,RP0    ; banco 0
   movlw b'11010000'   
   movwf RCSTA       ; SPEN=1 serial port enable, RX9=1 9 bits, CREN=1 continuous receive
             ; ADDEN=0 enables interrupt and load of the receive buffer when RSR<8> is set
   bsf STATUS,RP0       ; banco 1 ,  para trabajar con TXSTA
   movlw b '01100100'    
   movwf TXSTA      ; TXE=1 se tx 9 bits, TXEN=1 tx enable, BRGH=1 high speed (pendiente)
   movlw D '207'       
   movwf SPBRG      ; fosc = 4MHZ, 1200 baudios
   bcf PIE1, TXIE      ; TXIE=0 no permito interrupciones por tx hasta que no reciba datos
   bsf PIE1, RCIE      ; RCIE=1 permito interrupciones por rx
BUCLE goto BUCLE

2
Microcontroladores / Re: Pc-pic16f877-equipo Comunicacion Rs232
« en: Viernes 17 de Febrero de 2006, 17:12 »
Hola Alternative , el problema es que la USART la usaré para comunicar PC y PIC y quiero con RB1 y RB2 elaborar un protocolo 232 para comunicar también PIC y RADIO.

Por lo tanto, para empezar a probar el protocolo 232 con RB1 y RB2 voy a  intentar comunicar el PIC con el PC por RB1 y RB2.

Espero me hayas entendido , a veces me explico mal..
Un saludo

Norte75

3
Microcontroladores / Pc-pic16f877-equipo Comunicacion Rs232
« en: Viernes 17 de Febrero de 2006, 13:50 »
Hola a todos, lo primero daros la enhorabuena por este foro.Os expongo mi DUDA.

Acabo de lanzarme en un proyecto relacionado con el PIC 16f877.
El proyecto consiste en establecer la comunicacion serie232 entre una RADIO VHF (que se comunica con un protocolo 422 y 9 bits de datos+1 start +1 de stop) con el PIC y que este a su vez traduzca los datos y los mande a un pc, que lo procese y conteste al Pic con datos de 8 bits,el PIC lo traduzca y mande 9+1+1 a la radio.
Resumiendo: quiero comunicar el pic con dos equipos a la vez rs232. Para ello he pensado utilizar la USART para comunicar con el PC y utilizar RB1 (rx) y RB2 (tx) para comunicar con la Radio previo paso  por un conversor 422-232.
Para ello quiero empezar realizando una pequeña comunicación entre un pc y el pic con RB1 y RB2 para que el pc le mande 1 byte al PIC , le reste 1 y lo devuelva al PC. He visto algun -muy buen codigo- en este foro y he elaborado el mio, gracias a crbrs :whistling: .
A ver que os parece tanto el proyecto como el codigo.
GRACIAS DE ANTEMANO!!

OS ANEXO EL CODIGO!!

Páginas: [1]