PROGRAMA : rx-rs232.asm ; Funcion : Escucha puerto serie rs232 y cuando recibe un dato salta la; interrupcion y lo muestra en PortB. ; Serial port config: 9600 baudios,8 bits,paridad = none ;; Programa para : PIC16F876; CPU Clock : 4 MHz Reloj instruccion : 1 MHz = 1 us; WDT : Deshabilitado Tipo de reloj : XT ; Code Prot : OFF LIST P = 16F876 ;Se indica el modo de procesador INCLUDE <P16f876.inc> ;se incluye la definicion de los;<<<<<<---------------------- VECTOR DE RESET ------------------------>>>>>>> ORG 00H ;Inicio en el Vector de Reset goto INICIO ;Va a la primera instruccion del ;programa;<<<<<<------------------- VECTOR DE INTERRUPCION -------------------->>>>>>> ORG 04H ;Vector de interrupcionINTER btfss PIR1,RCIF ;¿Interrupcion por recepcion? goto VOLVER ;No. Falsa interrupcion bcf PIR1,RCIF ;Si. Reponer Flag movf RCREG,W ;Lectura dato recibido movwf PORTB ;Visualiza dato recibido VOLVER retfie ;retorna de la 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 80H ;RC7/Rx entrada, movwf TRISC ;RC6/Tx salida y RC5 Salida. movlw 04H ;Configuracion USART movwf TXSTA ;y activacion de transmision movlw .207 ;9600 baudios movwf SPBRG bsf PIE1,RCIE ;Habilitacion interrupcion RX bcf STATUS,RP0 ;Cambio al banco 0 ----------------- bsf RCSTA,SPEN ;se activa la USART movlw 90H ;Configuracion de la usart movwf RCSTA ;para recepcion continua movlw 0C0H ;Habilitacion para las movwf INTCON ;interrupciones generales BUCLE goto BUCLE ;espera aqui hasta que salte la int. END
PROGRAMA : tx-rs232.asm; Funcion : Transmite 2 bytes por el puerto serie del pic en intervalos de ; 1 segundo. ; Serial port config: 9600 baudios,8 bits,paridad = none; ; rograma para : PIC16F876; CPU Clock : 4 MHz Reloj instruccion : 1 MHz = 1 us; WDT : Deshabilitado Tipo de reloj : XT ; Code Prot : OFF LIST P=16F876 ;Se indica el modo de procesador INCLUDE <P16f876.inc> ;se incluye la definicion de los ;registros internosCounterA EQU 20hCounterB EQU 21hCounterC EQU 22h;<<<<<<---------------------- VECTOR DE RESET ------------------------>>>>>>> ORG 00H ;Inicio en el Vector de Reset goto INICIO ;Va a la primera instruccion del ;programa;<<<<<<------------------- VECTOR DE INTERRUPCION -------------------->>>>>>> ORG 04H ;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 movlw 80H ;RC7/Rx entrada, movwf TRISC ;RC6/Tx salida. movlw 24H ;Configuracion USART movwf TXSTA ;y activacion de transmision movlw .207 ;9600 baudios movwf SPBRG bcf STATUS,RP0 ;Cambio al banco 0 ------------- bsf RCSTA,SPEN ;se activa la USART bsf STATUS,RP0 ;Cambio al banco 1 ------------- bcf STATUS,RP1 bsf TXSTA,TXEN ;Habilita la transmision bcf STATUS,RP0 ;Cambio al banco 0 ------------- bucle goto PDelay movlw 49H ;Envia el caracter, valor hex movwf TXREG ; del codigo ascii bsf STATUS,RP0 ;Cambio al banco 1 ------------- bcf STATUS,RP1COMP_TX btfss TXSTA,TRMT ;comprueba si acabo de Tx. goto COMP_TX bcf STATUS,RP0 ;Cambio al banco 0 ------------- movlw .50 ;caracter ASCII en decimal movwf TXREG goto bucle;<<<<<<----------------------- OTRAS RUTINAS ------------------------->>>>>>>;PIC Time Delay = 1,0000020 s with Osc = 4 MHzPDelay movlw 6H movwf CounterC movlw 19H movwf CounterB movlw 0B2H movwf CounterAloop decfsz CounterA,1 goto loop decfsz CounterB,1 goto loop decfsz CounterC,1 goto loop return END
Gracias por la bienvenida y por tu respuesta, en realidad yo queria establecer la comunicacion entre dos pics, la finalidad era simplemente didactica. Al final he desechado estas rutinas,ahora que ya lo he conseguido volvere a repasarlas, y he buscado en las notas de aplicacion de microchip encontrando ejemplos que he adaptado, acabo de probarlos y funcionan.Mañana seguramente los suba para quien le pueda interesar, no los subo ahora porque los tengo en otro pc que para mas inri tiene roto el usb