Professional Documents
Culture Documents
ATE-Universidad de Oviedo
Puertos de E/S
Son 5 Puertos de E/S configurables PORTA: 6 pines PORTB: 8 pines PORTC: 8 pines PORTD: 8 pines PORTE: 3 pines
(dir 0x05) (dir 0x06 y 0x106) (dir 0x07) (dir 0x08) (dir 0x09)
TOTAL: 33 pines de E/S Configuracin de la direccin de los datos en los registros de direccin de datos: TRISA TRISB TRISC TRISD TRISE
(dir 0x85) (dir 0x86 y 0x186) (dir 0x87) (dir 0x88) (dir 0x89)
ATE-Universidad de Oviedo
Puertos de E/S
ATE-Universidad de Oviedo
Puertos de E/S
ATE-Universidad de Oviedo
Puertos de E/S
Puertos de E/S
CASO 1
Proteccin
Corriente si bi =0
Vdd
CASO 2
bi
Proteccin
ATE-Universidad de Oviedo
Puertos de E/S
ES PARTICULAR DE CADA PUERTO INCLUSO EN EL MISMO PUERTO HAY PINES CON CARACTERSTICAS DISTINTAS
ES NECESARIO SABER INTERPRETAR EL ESQUEMA INTERNO PARTICULAR PARA SABER QU CONEXIONES SE PUEDEN HACER
ATE-Universidad de Oviedo
Puertos de E/S
PORTA Diagrama de Bloques de los pines RA5, RA3, RA2, RA1 y RA0 (multiplexadas con mdulo A/D) RA4 tiene salida de drenador abierto (entrada multiplexada con T0CKI)
ATE-Universidad de Oviedo
Puertos de E/S
Detalle de RA0, RA1, RA2, RA3 y RA5 Caso de que se cargue TRISAi=1 Los dos transistores en corte: la etapa de salida est desactivada y este pin ser de entrada
Este biestable D se carga cada vez que se escribe en el registro del puerto (PORTA) Este biestable D se carga cada vez que se escribe en el registro de direccin del puerto (TRISA)
1 1 0 0
Este biestable Latch se carga cada vez que se lee el registro del puerto (PORTA)
ATE-Universidad de Oviedo
Puertos de E/S
Detalle de RA0, RA1, RA2, RA3 y RA5 (II) Caso de que se cargue TRISAi=0 Manda etapa de salida Si Bi=0 pMOS cortado nMOS en conduccin Pin=0 Si Bi=1 pMOS en conduccin nMOS cortado Pin=1
ATE-Universidad de Oviedo
10
Puertos de E/S
Detalle de RA0, RA1, RA2, RA3 y RA5 (III) Los pines de E/S tienen diodos de proteccin que permiten enclavar la tensin de entrada en el caso de que dichos diodos entren en conduccin
Se necesita la resistencia para limitar la corriente si no, quemamos el diodo
Caso de que Ue supere a Vdd en ms de la tensin de codo del diodo (0,7 V aprox.)
Caso de que Ue sea negativa y superior en mdulo a la tensin de codo del diodo
11
ATE-Universidad de Oviedo
Puertos de E/S
Esta lnea no es configurable como entrada analgica Tiene diodo de enclavamiento slo a la tensin mnima (Vss)
ATE-Universidad de Oviedo
12
Puertos de E/S
Si un pin est definido como salida y se ejecuta una instruccin de lectura, se debera leer el estado del pin, que sera el escrito por programa en el biestable D del PORT al estar activada la etapa de salida de los MOS Si un pin est definido como entrada y se ejecuta una operacin de escritura, el bit escrito quedar retenido en el biestable D de salida pero no aparecer en el pin al estar desactivada la etapa de salida de los MOS
Escritura de Bi en pin de salida Escritura de Bi en pin de entrada
Bi
Bi Bi
Bi
1
No hay etapa de salida 13 14
0 1
ATE-Universidad de Oviedo
Puertos de E/S RA0, RA1, RA2, RA3 y RA5 como seales ANALGICAS (I)
Esas lneas estn multiplexadas con las entradas analgicas del conversor A/D La configuracin A/D de cada pin se selecciona en el registro ADCON1 (0x09F)
Configuracin inicial por defecto Tras un RESET, las lneas estn definidas todas como analgicas
ATE-Universidad de Oviedo
Puertos de RA2, E/S RA3 y RA5 como seales ANALGICAS (II) RA0, RA1,
Si la lnea est definida como analgica y se procede a su lectura, el nivel que se leera sera 0 independientemente del nivel real externo que estuviera presente Por tanto, si se va a usar como entrada digital hay que configurarla como tal y no como analgica para poder leer el nivel real Incluso si se va a usar como salida digital el hecho de dejarla con la configuracin analgica por defecto puede causar errores Las operaciones de escritura en uno o varios pines de un puerto son operaciones que se desarrollan en tres pasos: lectura-modificacin-escritura lo que quiere decir que primero se lee el estado del pin, luego se modifica internamente su estado si es necesario y finalmente se escribe en el biestable D de salida
ATE-Universidad de Oviedo
Nivel real
15
Puertos deRA2, E/S RA3 y RA5 como seales ANALGICAS (III) RA0, RA1,
Lectura-modificacin-escritura: Una instruccin del tipo puesta a 1 (BSF) puesta a 0 (BCF) de un nico bit, o instrucciones que operen con el puerto y que sea el destino, se ejecutan en 4 fases: Q1.- Decodificacin de la instruccin Q2.- Lectura de TODO EL PUERTO, las seales que estn configuradas como analgicas se leeran como 0 Q3.- Cambio del bit implicado (si es necesario) Q4.- Escritura de TODO EL PUERTO, los bits que no intervienen en la operacin se escriben con el valor que tenan, debera ser el ledo en la fase Q2 (pero si se leyeron como 0 por ser analgica la seal, puede modificarse el valor previo) Ejemplo: se define PORTA como puerto de salida pero ADCON1 tiene la carga inicial (An.) RA0 movlw B00110101 movwf PORTA 1 0 1 1 Estado tras esas RA5 2 instrucciones 1 1 bsf PORTA,1 RA0 0 1 0
No ha cambiado solo el bit que Q2.- Se lee xx010000 se quera poner Q3.- Se pone a 1 el bit 1 0 a 1, xx010010 1 sino casi todos Q4.- Se escribe el PORTA salvo el 4 xx010010 RA5 0 (no analgica)! el puerto (p.e. movwf PORTA) no hay problema
ATE-Universidad de Oviedo
16
Si se quiere que todos los pines del PORTA funcionen como entradas/salidas digitales se debe escribir un 011x en los bits PCFG<3:0> de ADCON1 . Otro valor en estos bits har que todos alguno de los pines del puerto A pasen a funcionar como pines del mdulo conversor A/D. El valor de RESET del registro ADCON1 es todo a 0, por lo que por defecto, tras un reset el puerto est configurado como entradas analgicas. Todas las operaciones de escritura sobre el PORTA son operaciones de lectura-modificacin-escritura. ;Ejemplo de inicializacin del PORTA BCF STATUS, RP0 ; BCF STATUS, RP1 ; Banco 0 CLRF PORTA ; Inicializo PORTA poniendo los latches a 0 BSF STATUS, RP0 ; Banco 1 MOVLW 0x06 ; Configuro todos los pines MOVWF ADCON1 ; como entradas digitales MOVLW 0xCF MOVWF TRISA ; RA<3:0> son entradas ; RA<5:4> son salidas ; TRISA<7:6> no existen y se leen siempre como 0 ATE-Universidad de Oviedo
17
Puertos de E/S
PORTB Es un puerto de 8 lneas bidireccionales y configurables mediante el registro de direccin de datos TRISB En todas las lneas del PORTB, se tiene la posibilidad de activar unas resistencias de polarizacin (pull-up resistors) si los pines estn definidos como entradas y adems el bit OPTION_REG<7>= RBPU=0 En cuanto pasan a ser salidas se desactivan las resistencias El uso de esas resistencias evita la conexin de otras externas.Las resistencias son en realidad transistores pMOS trabajando en su zona de comportamiento resistivo (20k aprox.)
ATE-Universidad de Oviedo
Etapa de salida
18
Puertos de E/S
PORTB: resistencias de polarizacin Para que las resistencias de polarizacin (pMOS) se activen se deben dar dos condiciones: 1.- Que el bit RBPU=0 en OPTION_REG 2.- Que la lnea sea de entrada (TRISB<i>=1) En ese caso, la salida de la puerta NAND que controla el pMOS presenta un cero y el transistor se sita en zona resistiva El micro est hecho con tecnologa CMOS, luego las entradas no pueden quedar al aire ya que el nivel lgico estara indefinido, algn tipo de polarizacin hay que poner, mediante resistencias que si no son las internas, deberan ser externas (ejemplo conexin pulsador)
ATE-Universidad de Oviedo
0 0
19
Puertos de E/S
PORTB: etapa de salida Equivalencia del buffer triestado con la etapa de salida complementaria
Vdd
PORTB<i>
TRISB<i>
ATE-Universidad de Oviedo
20
Puertos de E/S
PORTB
Las lneas RB0 a RB3 se diferencian en algunos aspectos de las lneas RB4 a RB7 Particularidades:
RB0/INT puede generar una interrupcin ante la aparicin de un flanco (configurable de subida o de bajada con OPTION_REG<6>) RB3 se puede emplear como entrada de tensin en la programacin a baja tensin (LVP) Biestable D para escritura en TRISB
21
Puertos de E/S
PORTB Las lneas RB6 y RB7 son utilizadas para la programacin del microcontrolador y para comunicacin cuando el micro trabaja en modo depuracin (debugger) Cuando trabajemos con el ICD2 como debugger, no ser posible utilizar esas dos lneas (vanse Caractersticas Especiales de los micros: In-Circuit Debugger -ICD- as como In-Circuit Serial Programming -ICSP-)
ATE-Universidad de Oviedo
22
Puertos de E/S
PORTB
Las lneas RB4 a RB7 pueden generar una interrupcin si estn definidas como entradas y se detecta cambio entre el estado actual del pin y el de la ltima lectura del puerto
Biestable latch que almacena estado de ese pin en la fase Q1 de cada instruccin El pin debe ser de entrada Si se produce cambio en cualquiera de las entradas: RBIF=1 La puerta EXOR compara las salidas de los dos latch Latch que almacena estado del pin en la fase Q3 de la ltima lectura del PUERTO
ATE-Universidad de Oviedo
23
Puertos de E/S
ATE-Universidad de Oviedo
24
ATE-Universidad de Oviedo
25
Puertos de E/S
PORTC
Puerto de 8 lneas bidireccionales Los pines estn multiplexados con varias funciones de perifricos y como entradas disponen de buffers Schmitt-Trigger Se dispone de un registro de direccin de datos TRISC para definir si el pin es de entrada o de salida, pero algunos perifricos definen las lneas como entradas o como salidas de manera independiente al estado de TRISC si hay definida una determinada funcionalidad para el pin
ATE-Universidad de Oviedo
26
Puertos de E/S
PORTC
En RC3 y RC4 se aade un multiplexor de entrada para seleccin de nivel de tensin del bus I2C normal bien SMBUS Esta opcin estar disponible en el caso de que est activo el mdulo SSP en modo I2C
ATE-Universidad de Oviedo
27
ATE-Universidad de Oviedo
28
Puertos de E/S
PORTD Puerto de 8 lneas bidireccionales Las entradas disponen de buffers Schmitt-Trigger Presenta bloques comunes a todos los puertos anteriores
Etapa de Salida
El PORTD se puede configurar como un puerto esclavo paralelo (PSP), controlable mediante las lneas del PORTE .
29
ATE-Universidad de Oviedo
30
Buffer ST de entrada
Puertos de E/S
PORTE
Puerto bidireccional de 3 pines Las lneas estn multiplexadas : a) Con las seales de control del puerto esclavo paralelo PSP del PORTD b) Con 3 de las entradas analgicas del mdulo de conversin A/D RE0=AN5 Canal analgico 5 RE1=AN6 Canal analgico 6 RE2=AN7 Canal analgico 7
ATE-Universidad de Oviedo
31
Puertos de E/S
32
ATE-Universidad de Oviedo
33
Puertos de E/S
PORTD como puerto esclavo paralelo (PSP) junto con PORTE Las lneas de control seran las 3 del PORTE CS: RD: WR: Chip Select (RE2) Lectura (RE0) Escritura (RE1)
El acceso externo al PSP puede generar una interrupcin (PSPIF) El registro TRISD no tiene efecto sobre el sentido de las seales del PORTD, se gobiernan desde las lneas del PORTE que son incondicionalmente de entrada (tampoco influye la direccin que tengan asignadas stas en el TRISE)
ATE-Universidad de Oviedo
PORTE
RE0 RE2 RE1
34
Puertos de E/S
Se podra conectar de este modo a los buses de un sistema microprocesador, actuando el microcontrolador como dispositivo seleccionable por el propio microprocesador como una memoria o un perifrico ms.
Decodificador de Direcciones (segn mapa de memoria)
PORTD
Microprocesador X
Bus de Direcciones
ATE-Universidad de Oviedo
35
Puertos de E/S
Escritura en PSP:
Se selecciona el integrado (CS=0) y se activa desde el microprocesador la seal de escritura (WR=0) El bit Dx puesto en el pin externo entra y queda retenido a la salida del biestable D de entrada a la espera de que el microcontrolador ejecute una lectura del puerto El flag PSPIF se pone a 1 para advertir de que ha habido un acceso externo, el flag IBF (en TRISE) se pone a 1 y advierte de la presencia de un dato a la espera El microcontrolador puede ejecutar una lectura del PORTD y recoger el dato
36
Dx
1
PSPIF=1 IBF=1
Si llega un 2 dato antes de haberse recogido el 1, se produce un desbordamiento e IBOV=1 (indicador de overflow en TRISE)
PORTE
1 0 0
ATE-Universidad de Oviedo
Una escritura al PSP se produce cuando las lneas CS y WR se ponen a la vez en nivel bajo. Una vez que el dispositivo externo considera finalizada la escritura, coloca a nivel alto alguna de esas 2 lneas. Este paso a nivel alto es detectado por el microcontrolador durante el ciclo Q2 de algn ciclo de instruccin que se est ejecutando. El flag de Buffer de entrada completo (IBF) se coloca a 1 en el ciclo Q4 de la instruccin. El flag de interrupcin PSIPF (PIR1<7>) tambin se pone a 1 pudiendo ocasionar un salto a la rutina de interrupcin si los bits PSPIE (PIE1<7>) y los bits GIE y PEIE del INTCON estn a 1. El flag IBF solo puede limpiarse si se lee el PORTD. El flag de overflow en el buffer de entrada IBOV (TRISE<5>) se pondr a 1 si el dispositivo externo intenta hacer una segunda escritura sin que el ncleo del microcontrolador haya ledo el PORTD.
ATE-Universidad de Oviedo
37
Puertos de E/S
PSPIF=1 OBF=1
PORTE
0 0 1
El bit Dx almacenado en el biestable de salida pasa a estar disponible en el pin externo para que sea recogido por el microprocesador. Se sabe que el dato ya ha salido fuera porque el flag OBF=0
ATE-Universidad de Oviedo
38
El flag que indica buffer de salida lleno OBF (TRISE<6>) se pone a 1 cuando el microcontrolador ejecuta una operacin de escritura en el PORTD, el dato queda a la espera de ser ledo desde el bus externo. El programa del microcontrolador colocar as en el PORTD el dato del que quiere informar al resto del sistema. Una lectura del PSP se realiza cuando el sistema externo pone a la vez las seales CS y RD a nivel bajo. Cuando el sistema externo pone la seal CS la RD a nivel alto, el microcontrolador detecta ese cambio en la fase Q2 de la siguiente instruccin y en el ciclo Q4 pone a 1 el flag de interrupcin PSPIF indicando que la lectura del dato por parte del dispositivo externo se ha completado, ya ha sido recogido. Cuando no estamos en modo PSP, los bits IBF y OBF permanecen a 0. No obstante, si el bit IBOV haba sido previamente puesto a 1, debe limpiarse en el programa. Como hemos visto, el flag PSPIF se pone a 1 cuando se ha completado una lectura o escritura, este flag debe limpiarse por parte del programa de usuario. La interrupcin puede deshabilitarse si se pone a 0 el bit de habilitacin PSPIE (PIE<7>).
ATE-Universidad de Oviedo
39
Puertos de E/S
Registro TRISE:
ATE-Universidad de Oviedo
40
Puertos de E/S EJEMPLO DE USO DEL PSP Se tiene un microcontrolador PIC16F877 conectado a un dispositivo externo (microprocesador) que puede leer o escribir datos en el PIC a travs del PORTD utilizando las lneas del PORTE como lneas de control. Qu se hace con Las escrituras externas: los datos que entran en el PORTD se sacan por el PORTB. Lecturas desde el microprocesador: el microcontrolador va colocando en el PORTD un contador que se va incrementando despus de cada acceso de lectura externa. Tanto la lectura como la escritura externa se detectan por interrupcin y pueden producirse en cualquier instante PIC16F877 PIC16F877
PORTD
Microprocesador
PORTD
Count
PORTE
RD WR
PORTE
CS
PORTB
0 1 0
CS RD WR
0 0 1
ATE-Universidad de Oviedo
Puertos de E/S EJEMPLO DE USO DEL PSP: gestin de entrada y salida en el programa
Flag: INFULL en FLAGREG (R/W), se pone a 1 en PTI si hay dato y se comprueba en el progr. ppal. se pone a 0 por software en el prog.ppal. Flag: IBF en TRISE (slo lectura) a 1 si dato disponible, se comprueba en PTI y se pone a cero tras la lectura hardware
Doble buffer de salida: Flag: OUTRDY en FLAGREG (R/W), se pone a 1 en el programa principal si hay dato disponible en OUTDATA, se comprueba en PTI y se pone a 0 por software tambin en PTI Flag: OBF en TRISE (slo lectura) a 1 si dato disponible, se comprueba en PTI y se pone a cero tras lectura desde el exterior
ATE-Universidad de Oviedo
Microprocesador
42
Puertos de E/S VARIABLES DEL EJEMPLO DE USO DEL PSP INDATA: Registro usado como buffer de entrada donde se recoge el dato enviado por el dispositivo externo al PORTD del microcontrolador. En la rutina principal se copia ese valor en el PORTB. OUTDATA: Registro usado como buffer de salida, en l est preparado el dato que se copia al PORTD cada vez que el perifrico externo realiza una lectura del microcontrolador. COUNT: Variable contador que se incrementa con cada lectura externa. El valor de esa posicin es lo que se carga en OUTDATA y por tanto lo que se suministra al exterior. FLAGREG : es un registro que almacena los flags indicadores de lectura y escritura Bit FLAGREG,OUTRDY (Bit 1): Si es 1 indica que hay un dato preparado en buffer de salida OUTDATA para cargar en el PORTD. Si es 0, el dato ya ha sido cargado en PORTD y OUTDATA espera por uno nuevo. Bit FLAGREG, INFULL (Bit 2): Si es 1, indica que se ha recibido un dato nuevo y ya est en buffer INDATA. Si es 0, indica que INDATA est vacio, el ltimo dato recibido ya est en PORTB. Bit FLAGREG, err (Bit 0): Si es 1, indica que hubo un OVERFLOW en el buffer de entrada, se recibi un 2 dato antes de haber ledo el primero.
ATE-Universidad de Oviedo
43
Puertos de E/S FLUJOGRAMA DEL EJEMPLO DE USO DEL PSP: Programa principal
Loop:
Se ha recibido algn dato por el PSP flag INFULL a 1?
NO
PROGRAMA PRINCIPAL Limpia variables Configura PORTE Configura PORTB como salida Coloca el primer dato de salida en el PORTD Habilita interrupciones PSP
SI
SI
ATE-Universidad de Oviedo
44
Puertos de E/S FLUJOGRAMA DEL EJEMPLO DE USO DEL PSP: rutina de interrupcin
RUTINA INTERRUPCION
Hay algn dato nuevo preparado en OUTDATA para una siguiente lectura flag OUTRDY a 1?
flag PSPIF a 1?
NO
NO
SI
Se ha recibido algn dato por el PSP flag IBF a 1?
SI NO
OUTDATA en PORTD, donde queda a la espera de una lectura externa, se pone OUTRDY a 0
SI
Pone el flag INFULL a 1, coge el dato del PORTD y se guarda en INDATA
Intout:
Hay OVEFLOW en el buffer de entrada flag IBOV a 1?
Notinput:
Se ha leido algn dato del PSP desde el exterior flag OBF a 0?
NO
Interror:
SI
SI
ATE-Universidad de Oviedo
45
Puertos de E/S
;************************************************************************* ;* Este programa sirve como demostracin del funcionamiento del Puerto Esclavo ;* paralelo en un PIC16F877. El programa est basado en una rutina de interrupcin ;* que se ejecuta cada vez que el PIC trata de ser ledo o escrito por el sistema ;* externo a l. ;* Si la interrupcin se origina por una lectura, un registro se incrementa ;* y el nuevo valor del contador se coloca en la cola de mensajes de salida. ;* Si la interrupcin es originada por una escritura, el dato escrito es sacado ;* por el PORTB. ;* Traducido por Francisco Fernndez Linera ;* Ver nota de aplicacin 579 de microchip. ;;************************************************************************** list p=16f877 ; include "p16f877.inc" ;Definicin de registros FLAGREG equ OUTDATA equ INDATA equ COUNT equ
FLAGREG,INFULL ;Chequea si se ha recibido dato de entrada Checkout ;Si no, chequea salida FLAGREG,INFULL ;Limpia flag de dato de entrada preparado INDATA,W ;Coge el dato de entrada PORTB ;Lo saca por el PORTB FLAGREG,OUTRDY ;Chequea si dato de salida preparado Loop ;Si no, vuelve al bucle Loop COUNT, F ;Incrementa contador de dato de salida COUNT,W ;Coge el contador OUTDATA ;y lo pone en la cola de salida FLAGREG,OUTRDY ;Pone el flag de dato de salida preparado ;a 1 Loop
Checkout
;registro de flags ;dato de salida ;dato de entrada ;Contador para las lecturas ;del registro de salida ;flag de error ;flag de dato preparado ;en salida ;flag de dato de entrada ;recibido ;Vector de reset
;Definicin de bits para el registro de flags err equ 00h OUTRDY equ 01h INFULL equ 02h
org goto org goto Start clrf clrf bsf movlw movwf clrf movlw movwf bcf
0000h Start 0004h Service_Int OUTDATA INDATA STATUS,RP0 b'00010111' TRISE TRISB b'10000000' PIE1 STATUS,RP0
;Vector de interrupcin
;Limpia registros de datos ;Banco 1 ;Set RD, WR, y CS como ;entradas, puerto esclavo ;paralelo habilitado ;PORTB como salidas ; ;Habilita interrupcin del PSP ;Banco 0
;******************************************************************************** ;*Rutina de interrupcin ;* Entradas:FLAGREG - Registro de flags para/desde la rutina principal: ;* Bit 1: OUTRDY - Indica a la rutina de interrupcin ;* que el dato est preparado en la ;* cola de salida. ;* OUTDATA - dato de la cola de salida ;* PIR1 - Registro del flag de interrupcin ;* TRISE - Registro de flags del Puerto Esclavo ;* Paralelo (PSP) ;* PORTD - Dato de entrada desde el puerto esclavo ;* ;* Salidas: ;* PORTD - Dato de salida para el puerto esclavo ;* INDATA - Cola de datos de entrada ;* FLAGREG - Registro de flags para/desde la rutina ;* principal: ;* Bit 0: ERROR Desde la rutina de interrupcion, ;* indica overflow en el buffer de entrada. ;* Bit 2: INFULL Desde la rutina de interrupcin, ;* indica dato recibido almacenado en ;* INDATA. ;*********************************************************************************
ATE-Universidad de Oviedo
sigue>
46
Puertos de E/S
Service_Int btfss goto bcf bsf btfss goto bcf bsf movf movwf btfsc goto bcf btfss goto movf movwf bcf bsf btfsc goto bcf retfie bcf bsf retfie end PIR1,PSPIF Intout PIR1,PSPIF STATUS,RP0 TRISE,IBF Notinput STATUS,RP0 FLAGREG,INFULL PORTD,W INDATA TRISE,OBF Intout STATUS,RP0 FLAGREG,OUTRDY Intout OUTDATA,W PORTD FLAGREG,OUTRDY STATUS,RP0 TRISE,IBOV Interror STATUS,RP0 ;Miro si hay interrupciones en el PSP ;No hay, salgo ;Limpio flag del PSP ;Paso al banco 1 ;Chequeo si dato de entrada preparado ;Si no hay entrada, chequeo salida ;Entrada preparada, Banco 0 ;Pongo a 1 el flag para la rutina principal ;Cojo el dato de entrada ;Pongo el byte en el buffer de entrada ;Chequeo si dato de salida preparado ;No preparado, me salgo ;Paso al banco 0 ;Chequeo si hay dato en cola de salida. ;salida no preparada, me salgo ;Cojo dato de la cola de salida ;Ponemos dato en el buffer de salida del PORTD ;Limpio flag para la rutina principal ;Banco 1 ;Chequeo flag de overflow en el buffer de entrada ;si no esta a 0, error ;Banco 0 ;Rehabilito GIE y retorno ;Banco 0 ;Pongo a 1 el flag de error para la rutina principal ;Rehabilito GIE y retorno
Notinput
Intout
Interror
STATUS,RP0 FLAGREG,err
ATE-Universidad de Oviedo
47