;****************************************** http://www.x-robotics.com ******* ; PROGRAMA : 232noint.asm ; Funcion : Escucha puerto serie rs232 sin usar las interrupciones y cuando ; recibe un byte lo muestra en PortB hasta que otro lo sobrescriba. ; Serial port config: 9600 baudios,8 bits,paridad = none ; ; Revision : 1.0 7/2/2002 Programa para : PIC16F873 ; CPU Clock : 4 MHz Reloj instruccion : 1 MHz = 1 us ; WDT : Deshabilitado Tipo de reloj : XT ; Code Prot : OFF ;****************************************** http://www.x-robotics.com ******* LIST P=16F873 ;Se indica el modo de procesador RADIX HEX ;Sistema de numeracion hexadecimal INCLUDE ;se incluye la definicion de los ;registros internos CounterA EQU 20h ;variables para delays.... CounterB EQU 21h CounterC EQU 22h BUFFER EQU 23h ;variable de buffer de dato entrante ;<<<<<<---------------------- VECTOR DE RESET ------------------------>>>>>>> ORG 0x00 ;Inicio en el Vector de Reset goto INICIO ;Va a la primera instruccion del ;programa ;<<<<<<------------------- VECTOR DE INTERRUPCION -------------------->>>>>>> ORG 0x04 ;Vector de interrupcion ;<<<<<<----------------- INICIO PROGRAMA PRINCIPAL ------------------->>>>>>> INICIO clrf PORTB ;Limpia salidas clrf PORTC bsf RCSTA,SPEN ;se activa la USART bsf STATUS,RP0 ;Cambio al banco 1 ------------------ bcf STATUS,RP1 clrf TRISB ;Puerta B como salida clrf TRISB ;Puerta B como salida movlw b'10011111' ;RC7/Rx entrada, movwf TRISC ;RC6/Tx salida y RC5 Salida. movlw b'00000100' ;Configuracion USART movwf TXSTA ;y activacion de transmision movlw .25 ;9600 baudios movwf SPBRG bcf STATUS,RP0 ;Cambio al banco 0 ----------------- bsf RCSTA,SPEN ;se activa la USART movlw b'10010000' ;Configuracion de la usart movwf RCSTA ;para recepcion continua ;------Bucle de comprobacion si llega dato mayor de 0 por puerto serie------ BUCLE movf RCREG,W ;Lectura dato recibido movwf BUFFER ;Visualiza dato recibido movlw .0 ;comprueba que se reciba algo que subwf BUFFER,W ;no sea cero... btfsc STATUS,C goto Mayordecero ;dato valido. goto BUCLE ;dato no valido.. es cero..vuelve. Mayordecero movf BUFFER ;muestra el dato en portb movwf PORTB ;y lo deja ayi hasta que llegue otro goto BUCLE ;retorna a esperar otro dato valido ;<<<<<<\\\\\\\\\\\THE\\\\\\\\\\\\\\\\////////////////END//////////////>>>>>>> END