Transmisión en serie asíncrona

Hola.
Estoy estudiando mi me haría falta muy urgente por favor, un ejemplo de transmisión en serie asíncrona
Es decir como se compone una cadena de bits para su transmisión en serie asíncrona
Muchas gracias

1 Respuesta

Respuesta
1
Acá te dejo algo de lo que querés:
Es del Autor Mikel Etxebarria; (c) Microsystems Engineering (Bilbao);
;Ejemplo para MicroPIC Trainer y MicroPIC Trainer Plus;
;El módulo USART. Transmisión asíncrona;
;El módulo USART de los dispositivos PIC16F87X incorpora el hardware necesario para implementar comunicación serie asíncrona full-duplex o sincrona half-duplex. En este último caso el USART se puede comportar como Master o Slave.
En los ejemplos siguientes se propone utilizar un PC para que, con el software TERMINAL.EXE,
actúe como un simple terminal de comunicaciones. EL usuario deberá preparar los cables de
comunicación entre la Trainer PLUS y el PC, teniendo en cuenta de cruzar las señal de
transmisión (TxD) con la de recepción (RxD) y viceversa.
El ejemplo transmite una trama cada segundo con el caracter ASCII de la letra A.
List p=16F873 ;Tipo de procesador
include "P16F873.INC" ;Definiciones de registros internos
Delay equ 0x20 ;variable de temporización org 0x00 ;Vector de Reset
goto Inicio org 0x04 ;Vector de interrupción goto Inter
;********************************************************************************************
;Tx_Dato: Transmite vía serie el dato presente en el reg. W
Tx_Dato movwf TXREG ;Almacena el byte a transmitir bsf STATUS,RP0
Tx_Dato_Wait btfss TXSTA,TRMT ;Byte transmitido ??
goto Tx_Dato_Wait ;No, esperar bcf STATUS,RP0 return ;Si
;********************************************************************************************
;Tratamiento de interrupción. Se espera que el TMR0 rebase 20 veces para un delay de 1 s.
;Entonces se transmite el caracter
Inter bcf INTCON, T0IF ;Restaura el flag del TMR0 movlw ~. 195
movwf TMR0 ;Reponer el TMR0
decfsz Delay, F ;Se han provocado 20 rebasamientos de 50mS (1s.)?
retfie ;Todavía no movlw .20
movwf Delay ;Reponer variable de temporización con el valor 20 movlw 'A'
call Tx_Dato ;Transmite el dato retfie
;*******************************************************************************************
;Programa principalInicio clrwdt clrf PORTC
bsf STATUS,RP0 ;Selecciona banco 1 movlw b'10111111'
movwf TRISC ;RC7/Rx entrada, RC6/Tx salida movlw b'11000111'
movwf OPTION_REG ;Preescaler de 256 asociado al TMR0 movlw b'00100100'
movwf TXSTA ;TX en On, modo asíncrono con 8 bits y alta velocidad movlw .25
movwf SPBRG ;9600 baudios con Fosc=4MHz bcf STATUS,RP0 ;Selecciona banco 0
bsf RCSTA,SPEN ;USART en On
;Trabajando a 4MHz y con un preescaler de 256, el TMR0 se carga con 195 para conseguir que
;rebase cada 50mS. Esto se repite tantas veces como indique la variable Delay para
;obtener la temporización final deseada.
Bcf INTCON, T0IF ;Restaura el flag del TMR0 movlw ~. 195
movwf TMR0 ;El TMR0 rebasa cada 50 mS movlw . 20
movwf Delay ;Repetir 20 veces para obtener 1 seg. Movlw b'10100000'
movwf INTCON ;Habilita interrupción del TMR0Loop clrwdt goto Loop
end ;Fin del programa fuente
También te dejo algunas url que me parecieron atinentes:
http://proton.ucting.udg.mx/expodiel/Enero94/FOLIO15.html
http://www.zator.com/Hardware/H11_1.htm (ESTA ES MUY COMPLETITA)
www.lcc.uma.es/~eat/courses/cdd-contents/tema1.pdf
Saludos, que te sea leve y no te olvides de puntuar la respuesta

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas