Programación Específica > Microcontroladores
Rutina De Tx Y Rx Con Pic 16f870
(1/1)
giovy:
Hola a todos, soy nuevo en el foro y quisiera algo de ayuda, necesito realizar una rutina de TX y RX serial con pic 16f870, el dato recibido en el Pic es TTL y necesito sacarlo a 4 dispositivos en TTL.
No se si me pudieran colaborar indicandome como realizarlo, la idea es no emplear el módulo de TX y RX que trae el Pic.
Por su gentil colaboración les agradezco a todos.
oldkami:
No recuerdo muy bien donde encontre estas rutinas, sirven para configurar un rs232 por software. espero que te sean de ayuda.
--- Código: Text --- ;transmite serialmente a 9600bps con un xtal de 4MHz;se deben definir las siguientes variables:; RXport ; RXtris; TXport; TXtris; RS_TEMP1; RS_TEMP2; RXD; TXD; RB0, ES LA SEÑAL DE RX #define RXport PORTB,0 #define RXtris TRISB,0 #define TXport PORTB,1 #define TXtris TRISB,1 CONSTANT LF = d'10' CONSTANT CR = d'13' CONSTANT TAB = d'9' CONSTANT BS = d'8' UDATA_SHRRS_TEMP1 RES 1RS_TEMP2 RES 1RXD RES 1TXD RES 1 ;MACROS RS232init macro call RS_init endm SEND macro S_String movlw S_String call SENDsub endm SENDw macro call SENDsub endm RECEIVE macro call RECsub endm ;subrutinas;RS_init inicializaRS_init bsf TXport banksel OPTION_REG clrf OPTION_REG bcf TXtris bsf RXtris banksel TXport bsf TXport;movlw INTCON RETURN ;RECsub recibe el dato serial RECsub call RS_Wait btfsc RXport ; goto REENTRY ; movlw 0x08 movwf RS_TEMP1 goto RECaRECa call R_Wait btfss RXport goto RECb bsf RXD,0x07 goto RECcRECb bcf RXD,0x07RECc decfsz RS_TEMP1,0 rrf RXD,1 decfsz RS_TEMP1,1 goto RECa call R_Wait btfss RXport clrf RXD retlw 0x01 ;REENTRY limpia RXD en caso de malentendidoREENTRY clrf RXD movlw 0x0F movwf RXD retlw 0x01 ;SENDsub transmite un dato almacenado en WSENDsub movwf TXD bcf TXport movlw 0x08 movwf RS_TEMP1 call S_WaitSENDa btfsc TXD,0 goto SENDb bcf TXport goto SENDcSENDb bsf TXportSENDc rrf TXD,1 call S_Wait decfsz RS_TEMP1,1 goto SENDa goto SENDdSENDd bsf TXport call S_Wait call S_Wait bsf TXport RETURN ;rutinas de espera: deben ser cambiadas segun el xtal usado;y la tasa de baudios. S_Wait movlw 0x1E movwf RS_TEMP2 goto X_WaitRS_Wait movlw 0x0C movwf RS_TEMP2 goto X_WaitR_Wait movlw 0x1D movwf RS_TEMP2 goto X_WaitX_Wait decfsz RS_TEMP2,1 goto X_Wait RETURN
Saludos
Oldkami
giovy:
Oldkami mil gracias por su colaboración, comenzare a trabajar en el.
:D
Navegación
Ir a la versión completa