microcontroladores 3ra parte

56
MICROCONTROLADORES M.Sc. César Augusto Peña C. Profesor de planta – Ingeniería mecatrónica Universidad de Pamplona

Upload: jair-eviel-barrios-deluquez

Post on 15-Oct-2014

1.056 views

Category:

Documents


1 download

DESCRIPTION

TUTORIAL MICROCONTROLADORES!Bueno!, hola a todos...a continuacion un pequeño tutorial que me ha facilitado un profesor de mi universidad...esta pero BUENO. MIRENLO Y ME CUENTANGRACIAS ing. Leonardo mejia y Cesar augusto Peña

TRANSCRIPT

Page 1: Microcontroladores  3ra Parte

MICROCONTROLADORES

M.Sc. César Augusto Peña C.

Profesor de planta – Ingeniería mecatrónicaUniversidad de Pamplona

Page 2: Microcontroladores  3ra Parte

INSTRUCCIÓN ADDLW kW + k W

Ejm:

0 0 0 0 1 0 0 0W = 1 +7 = 8

0 0 0 0 0 0 0 1W =1

ADDLW .7

Page 3: Microcontroladores  3ra Parte

INSTRUCCIÓN ADDWF f,dW + f d

Ejm:

0 0 0 0 0 1 1 0REG1 = 1 + 5 = 6

0 0 0 0 0 1 0 1REG1 = 5

ADDWF REG1,1

0 0 0 0 0 0 0 1W = 1

Page 4: Microcontroladores  3ra Parte

INSTRUCCIÓN ANDLW kW AND k W

Ejm:

0 0 0 0 0 1 0 1W = 5 AND 7 = 5

0 0 0 0 0 1 0 1W =5

ANDLW b’00000111’

Page 5: Microcontroladores  3ra Parte

INSTRUCCIÓN ANDWF f,dW AND f d

Ejm:

0 0 0 0 0 0 0 1W = 3 AND 5 = 1

0 0 0 0 0 1 0 1REG1 = 5

ANDWF REG1,0

0 0 0 0 0 0 1 1W = 3

Page 6: Microcontroladores  3ra Parte

INSTRUCCIÓN CLRW 0 W

Ejm:

0 0 0 0 0 0 0 0W = 0

1 0 1 0 1 0 1 1W =171

CLRW

Page 7: Microcontroladores  3ra Parte

INSTRUCCIÓN CLRF f 0 f

Ejm:

0 0 0 0 0 0 0 0REG1 = 0

1 0 1 0 1 0 1 0REG1 =170

CLRF REG1

Page 8: Microcontroladores  3ra Parte

INSTRUCCIÓN COMF f,dcom(f) d

Ejm:

0 0 0 0 1 1 1 1W = 15

1 1 1 1 0 0 0 0REG1 =240

COMF REG1,0

Page 9: Microcontroladores  3ra Parte

INSTRUCCIÓN DECF f,df - 1 d

Ejm:

0 0 0 0 0 1 1 1REG1 = 7

0 0 0 0 1 0 0 0REG1 =8

DECF REG1,1

Page 10: Microcontroladores  3ra Parte

INSTRUCCIÓN INCF f,df + 1 d

Ejm:

0 0 0 1 0 0 0 0REG1 = 16

0 0 0 0 1 1 1 1REG1 =15

INCF REG1,1

Page 11: Microcontroladores  3ra Parte

INSTRUCCIÓN IORLW kW OR k W

Ejm:

0 0 0 0 1 1 1 1W = 9 OR 7 = 15

0 0 0 0 1 0 0 1W =9

IORLW b’00000111’

Page 12: Microcontroladores  3ra Parte

INSTRUCCIÓN IORWF f,dW OR f d

Ejm:

0 0 0 0 1 1 1 1W = 6 OR 9 = 15

0 0 0 0 1 0 0 1W =9

IORWF REG1,0

0 0 0 0 0 1 1 0REG1 =6

0 0 0 0 0 1 1 0REG1 =6

Page 13: Microcontroladores  3ra Parte

INSTRUCCIÓN NOP

Ejm: NOP

No hace nada

Se utiliza para crear retarnos muy cortos

Page 14: Microcontroladores  3ra Parte

INSTRUCCIÓN RLF f,d

0 1 0 0 1 1 1 1

RLF REG1,1

0

1 0 0 1 1 1 1 00

REG1C

REG1C

Page 15: Microcontroladores  3ra Parte

INSTRUCCIÓN RLF f,d

1 0 0 1 1 1 1 0

RLF REG1,1

0

0 0 1 1 1 1 0 01

REG1C

REG1C

Page 16: Microcontroladores  3ra Parte

INSTRUCCIÓN RLF f,d

0 0 1 1 1 1 0 0

RLF REG1,1

1

0 1 1 1 1 0 0 10

REG1C

REG1C

Page 17: Microcontroladores  3ra Parte

INSTRUCCIÓN RRF f,d

0 0 1 1 1 1 0 0

RRF REG1,1

1

1 0 0 1 1 1 1 00

REG1C

REG1C

Page 18: Microcontroladores  3ra Parte

INSTRUCCIÓN SUBLW kk - W W

EJEMPLO 1:

0 0 0 0 0 0 1 0W = 7 - 5 = 2

0 0 0 0 0 1 0 1W = 5

SUBLW .7

1C

POSITIVO

Page 19: Microcontroladores  3ra Parte

INSTRUCCIÓN SUBLW kk - W W

EJEMPLO 2:

0 0 0 0 0 0 0 0W = 15 - 15 = 0

0 0 0 0 1 1 1 1W = 15

SUBLW .15

1C

CERO

Page 20: Microcontroladores  3ra Parte

INSTRUCCIÓN SUBLW kk - W W

EJEMPLO 3:

1 1 1 1 1 1 1 1W = 3 - 4 = -1

0 0 0 0 0 1 0 0W = 4

SUBLW .3

0C

NEGATIVO

Page 21: Microcontroladores  3ra Parte

INSTRUCCIÓN SUBWF f,df - W W

EJEMPLO 1:

0 0 0 0 0 1 0 1REG1 = 6 - 1 = 5

0 0 0 0 0 1 1 0REG1 = 6

SUBWF REG1,1

1C

POSITIVO

0 0 0 0 0 0 0 1W = 1

Page 22: Microcontroladores  3ra Parte

INSTRUCCIÓN SUBWF f,df - W W

EJEMPLO 1:

0 0 0 0 0 0 0 0W = 7 - 7 = 0

0 0 0 0 0 1 1 1REG1 = 7

SUBWF REG1,1

1C

CERO

0 0 0 0 0 1 1 1W = 7

Page 23: Microcontroladores  3ra Parte

INSTRUCCIÓN SUBWF f,df - W W

EJEMPLO 1:

1 1 1 1 1 1 1 0REG1 = 10 - 12 = -2

0 0 0 0 1 0 1 0REG1 = 10

SUBWF REG1,1

0C

NEGATIVO

0 0 0 0 1 1 0 0W = 12

Page 24: Microcontroladores  3ra Parte

INSTRUCCIÓN SWAPF f,df<3:0> d<7:4>

Ejm:

1 0 0 1 0 0 0 0W

0 0 0 0 1 0 0 1REG1

SWAPF REG1,0

f<7:4> d<3:0>

Page 25: Microcontroladores  3ra Parte

INSTRUCCIÓN XORLW kW XOR k W

Ejm:

0 0 0 0 1 1 1 0W = 9 XOR 7 = 14

0 0 0 0 1 0 0 1W =9

XORLW b’00000111’

Page 26: Microcontroladores  3ra Parte

INSTRUCCIÓN XORWF f,dW XOR f d

Ejm:

0 0 0 0 1 0 0 1W = 15 XOR 6 = 9

0 0 0 0 0 1 1 0W = 6

XORWF REG1,0

0 0 0 0 1 1 1 1REG1 = 15

Page 27: Microcontroladores  3ra Parte

RUTINAS USUALES• Poner a CERO varios bits de W sin alterar el resto.

Ejm: Se desea poner a cero los bits 3, 4 y 5 del registro W sin alterar los demás

1 0 0 0 0 0 0 1W

ANDLW B’11000111’

1 0 1 0 1 0 0 1W

Page 28: Microcontroladores  3ra Parte

RUTINAS USUALES• Poner a UNO varios bits de W sin alterar el resto.

Ejm: Se desea poner a uno los bits 1,2,3 y 4 del registro W sin alterar los demás

1 0 1 1 1 1 1 1W

IORLW B’00011110’

1 0 1 0 1 0 0 1W

Page 29: Microcontroladores  3ra Parte

RUTINAS USUALES• Detectar si dos registros son iguales y en tal caso llama una subrutina

Ejm: Si REG1 = REG2 llamar la subrutina IGUAL

W

XORWF REG2,0

1 0 1 0 1 0 0 1REG2

0 0 0 0 0 0 0 0

1 0 1 0 1 0 0 1REG1 = WMOVF REG1,0 ;REG 1 W

XORWF REG2,0 ;W = REG2 XOR W

BTFSC STATUS,2 ;SI Z = 0 BRINCA

CALL IGUAL ;Z=1 Y LLAMA ;SUBRUTINA

CONTINUA PROGRAMA …1Z

Page 30: Microcontroladores  3ra Parte

RUTINAS USUALES• Detectar si un registro es mayor que otro

Ejm: Si REG2 >= REG1 llamar la subrutina MAYOR

W

SUBWF REG2,0

0 0 0 0 0 1 1 1REG2

0 0 0 0 0 1 1 0

0 0 0 0 0 0 0 1REG1 = WMOVF REG1,0 ;REG 1 W

SUBWF REG2,0 ;W = REG2 – W(REG1)

BTFSS STATUS,0 ;SI C =1 BRINCA

CALL MENOR ;C = 0 si REG2<REG1

CALL MAYOR ;C = 1 si REG2>=REG1

CONTINUA PROGRAMA …

1C

Page 31: Microcontroladores  3ra Parte

PROGRAMA DE VERIFICACIÓN;AUTOR: CÉSAR AUGUSTO PEÑA C;PIC: 16F84A;FUNCION: PROGRAMA PARA CORROBORAR EL FUNCIONAMIENTO DE ALGUNAS SUBRUTINAS;CARACTERISTICAS: ;OSCILLATOR: XT;WATCHDOG TIMER: OFF;POWER UP TIMER: ON;CODE PROTECT: OFF

INCLUDE "P16F84.Inc";**************************** DEFINICION DE REGISTROS ***********************************

CBLOCK .12REG1, REG2

endc;****************************************************************************************

org 00goto INICIOorg 05

INICIO movlw .7 ;W = 7movwf REG1 ;REG1 = W = 7movlw .7 ;W = 7movwf REG2 ;REG2 = W = 7

Page 32: Microcontroladores  3ra Parte

PROGRAMA DE VERIFICACIÓN;Subrutina para comprobar igualdadesVERIF_IGUAL movf REG1,0 ;W = REG1

xorwf REG2,0 ;W = REG1 XOR REG2btfsc STATUS,2 ;Salta si Z = 0goto IGUAL ;llama Subrutina

;subrutina para comprobar que REG2 es mayor que REG1COM_REG movf REG1,0 ;W = REG1

subwf REG2,0 ;W = REG2 - REG1btfss STATUS,0 ;Salta SI C =1 (REG2>=REG1)goto NOgoto SI

;Subrutina en caso que REG2 >= REG1SI movlw .2 ;W = 2

movwf REG2 ;REG2 = W = 2goto COM_REG ;vuelve a comprobar que REG2>=REG1

;Subrutina en caso que REG2 < REG1NO goto INICIO

;Subrutina en caso que REG1 = REG2IGUAL movlw .8 ;W = 8

movwf REG2 ;REG2 = W = 8goto VERIF_IGUAL

end

Page 33: Microcontroladores  3ra Parte

MOTOR PAPMientras que un motor convencional gira libremente al aplicarle una tensión, el motor paso a paso gira un determinado ángulo de forma incremental (transforma impulsos eléctricos en movimientos de giro controlados), lo que le permite realizar desplazamientos angulares fijos muy precisos(pueden variar desde 1,8º hasta unos 90º)

Page 34: Microcontroladores  3ra Parte

MOTOR PAP

Están constituidos esencialmente por dos partes:

• Estator: parte fija construida a base de cavidades en las que van depositadas las bobinas.

• Rotor: parte móvil construida mediante un imán permanente. Este conjunto va montado sobre un eje soportado por dos cojinetes que le permiten girar libremente.

Page 35: Microcontroladores  3ra Parte

MOTOR PAP

Al excitar el estator, se crearan los polos N-S, provocando

la variación del campo magnético formado.

La respuesta del rotor será seguir el movimiento de dicho

campo (tenderá a buscar la posición de equilibrio

magnético), es decir, orientará sus polos NORTE-SUR

hacia los polos SUR-NORTE del estator, respectivamente.

Page 36: Microcontroladores  3ra Parte

SECUENCIAS MOTOR PAP UNIPOLAR

Paso simple:

Esta secuencia de pasos es la más simple de todas y consiste en activar cada bobina una a una y por separado, con esta secuencia de encendido de bobinas no se obtiene mucha fuerza ya que solo es una bobina cada vez la que arrastra y sujeta el rotor del eje del motor

Page 37: Microcontroladores  3ra Parte

SECUENCIAS MOTOR PAP UNIPOLAR

Paso doble:

Con el paso doble activamos las bobinas de dos en dos con lo que hacemos un campo magnético más potente que atraerá con más fuerza y retendrá el rotor del motor en el sitio. Los pasos también serán algo más bruscos debidos a que la acción del campo magnético es más poderosa que en lasecuencia anterior.

Page 38: Microcontroladores  3ra Parte

SECUENCIAS MOTOR PAP UNIPOLAR

Medio Paso:Combinando los dos tipos de secuencias anteriores podemos hacer mover al motor en pasos más pequeños y precisos y así pues tenemos el doble de pasos de movimiento para el recorrido total de 360º del motor.

Page 39: Microcontroladores  3ra Parte

INSTRUCCIÓN GOTO k

VECTOR RESET

VECTOR INTERRUPCIÓN

0000 H

0004 H

CONTINUA PROGRAMA

ETIQUETA 0034 H

13 0

PC = 34 h

GOTO ETIQUETA (34H)0011 H0012 H

03FF H

k PC

PC = 11 h

Goto 34h

ETIQUETA = 34h

Page 40: Microcontroladores  3ra Parte

INSTRUCCIÓN CALL k Y RETURN

VECTOR RESET

VECTOR INTERRUPCIÓN

0000 H

0004 H

SUBRUTINA0034 H

13 0

PC = 34 h

0012 hNIVEL 2

NIVEL 3

NIVEL 8

.

.

.

CALL SUBRUTINA

CONTINUA PROGRAMA0011 H0012 H

03FF H

RETURN

k PCPC+1 Pila

Page 41: Microcontroladores  3ra Parte

INSTRUCCIÓN RETLW k

VECTOR RESET

VECTOR INTERRUPCIÓN

0000 H

0004 H

SUBRUTINA0034 H

13 0

CALL SUBRUTINA

CONTINUA PROGRAMA0011 H0012 H

03FF H

RETLW d’7’

k WNivel 1 (pila) PC

W = 00000111

Funciona igual que el comando RETURN con la diferencia que carga el valor del literal “k” en W

Page 42: Microcontroladores  3ra Parte

PROG. MPAP USANDO TABLAS;AUTOR: CÉSAR AUGUSTO PEÑA c;PIC: 16F84A;FUNCION: Hace girar un motor PAP utilizando tablas (el Mpap se conecta a PORTB)

;CARACTERISTICAS:;OSCILLATOR: XT;WATCHDOG TIMER: OFF;POWER UP TIMER: ON;CODE PROTECT: OFF

INCLUDE "P16F84A.Inc";*******DEFINICION DE REGISTROS**********************************

CBLOCK .12REG1, REG2, REG3, MOTOR

ENDC;*******DEFINICION DE DATOS**************************************VALOR1 EQU .10VALOR2 EQU .40VALOR3 EQU .40

;*******PROGRAMA*************************************************ORG 00GOTO INICIOORG 05

INICIO bsf STATUS,RP0 ;PASA AL BANCO 1clrf TRISA ;CONFIGURA PUERTOS COMO SALIDASclrf TRISBbcf STATUS,RP0 ;PASA AL BANCO 0clrf PORTAclrf PORTB

Page 43: Microcontroladores  3ra Parte

PROG. MPAP USANDO TABLAS

CARGAR movlw d'4' ;W = 4movwf MOTOR

GIRAR movf MOTOR,0 ;W = MOTORcall TABLAmovwf PORTB ;PORTB = Wcall RETARDOdecfsz MOTOR ;MOTOR = MOTOR -1goto GIRARgoto CARGAR ;SI MOTOR = 0 LO RECARGA (4)

;*******TABLA DE LA SECUENCIA DEL MOTOR PAP*****************

TABLA addwf PCL,F ; PCL = PCL + Wnopretlw B'00000001'retlw B'00000010'retlw B'00000100'retlw B'00001000'

Page 44: Microcontroladores  3ra Parte

PROG. MPAP USANDO TABLAS

;*******SUBRUTINA DE RETARDOS***********************************

RETARDO movlw VALOR1movwf REG1

TRES movlw VALOR2movwf REG2

DOS movlw VALOR3movwf REG3

UNO decfsz REG3,Fgoto UNOdecfsz REG2,Fgoto DOSdecfsz REG1,Fgoto TRESreturn

END

Page 45: Microcontroladores  3ra Parte

INSTRUCCIÓN SLEEP

•La instrucción SLEEP introduce al procesador en un modo de funcionamiento que se llama de reposo o de bajo consumo.

•Detiene al oscilador y el procesador queda congelado, no ejecutando instrucciones y manteniendo el mismo valor en los puertos.

•Pone los bits PD# = 0 y TO# = 1.

•Borra el perro guardián y al divisor de frecuencia

Page 46: Microcontroladores  3ra Parte

INTERRUPCIONESVECTOR RESET

VECTOR INTERRUPCIÓN

PROGRAMA

0000 H

0004 H

0034 H

13 0

0012 H INICIO

03FF H

TRATAMIENTOINTERRUPCIÓN

RETFIE

Page 47: Microcontroladores  3ra Parte

CAUSAS DE INTERRUPCIONES

• Activación de la patita RB0/INT• Cambio de estado de uno de los pines

RB<4:7> del puerto B• Desbordamiento del temporizador TMR0• Finalización de la escritura en la EEPROM

de datos

Page 48: Microcontroladores  3ra Parte

REGISTRO DE CONTROL DE INTERRUPCIONES INTCON

GIE EEIE T0IE INTE RBIE T0IF INTF RBIF

GIE: Permiso global de interrupciones1 – Permite la ejecución de todas las interrupciones, cuyos bits de permiso

individuales también las permitan.0 – Prohíbe todas las interrupciones.

EEIE: Permiso de interrupción por fin de la escritura de la EEPROM de datos1 – Permite la Interrupción cuando finaliza la escritura de la EEPROM0 – No permite esta interrupción.

T0IE: Permiso de interrupción por sobrepasamiento del TMR01 – Permite interrupción al sobrepasarse el TMR00 – No permite esta interrupción.

INTE: Permiso de interrupción por activación de la patita RB0/INT1 – Permite interrupción al activarse RB0/INT0 – No permite esta interrupción.

Page 49: Microcontroladores  3ra Parte

REGISTRO DE CONTROL DE INTERRUPCIONES INTCON

GIE EEIE T0IE INTE RBIE T0IF INTF RBIF

T0IF: Señalizador de sobrepasamiento del TMR01 – Se pone en 1 cuando ha ocurrido sobrepasamiento0 – El TMR0 no se ha sobrepasado

INTF: Señalizador de activación de la patita RB0/INT1 – Se pone en 1 al activarse RB0/INT0 – Indica que RB0/INT aún no se ha activado

RBIF: Señalizador de cambio de estado en las patitas RB<7:4>1 – Se pone en 1 cuando cambia de estado alguno de estos pines0 – No han cambiado de estados ninguno de los pine RB<7:4>

Page 50: Microcontroladores  3ra Parte

INTERRUPCIÓN EXTERNA INT

Se utiliza para realizar subrutinas que necesiten ejecutarse inmediatamente.

Para llamar esta subrutina de interrupción es necesario activar el pinRB0/INT por medio de un flanco ascendente o descendente.

Si se desea trabajar con un flanco ascendente es necesario poner en 1 el bitINTDEG del registro OPTION y en caso contrario se pone un 0.

Para que esta interrupción pueda activarse es necesario poner en 1 los bitGIE e INTE del registro INTCON

1 x x 1 x 0 0 0GIE EEIE T0IE INTE RBIE T0IF INTF RBIF

Page 51: Microcontroladores  3ra Parte

PROG. INTERRUPCIÓN RB0/INT;AUTOR: CÉSAR AUGUSTO PEÑA C ;PIC: 16F84A;FUNCION: USA INTERRUPCIONES (RB0), SI OCURRE UN FLANCO DE BAJADA EN EL PIN RB0;APAGA UN LED PUESTO EN RA0 DURANTE UN SEGUNDO Y VUELVE A DEJARLO PRENDIDO

;CARACTERISTICAS:;OSCILADOR: XT;WATCHDOG TIMER: OFF;POWER UP TIMER: ON;CODE PROTECT: OFF

INCLUDE "P16F84A.Inc"

;**************************** DEFINICION DE REGISTROS ***********************************CBLOCK .12

reg1,reg2,reg3endc

;**************************** DEFINICION DE DATOS ****************************valor1 equ d'8' ;DATOS PARA REATRDO DE 1 SEGUNDOvalor2 equ d'195'valor3 equ d'212'

LED equ 0 ;pin de entrada del interruptor

Page 52: Microcontroladores  3ra Parte

PROG. INTERRUPCIÓN RB0/INTorg 00goto inicio

;********************** TRATAMIENTO DE INTERRUPCIONES************************************ORG 04 ;ZONA DE TRATAMIENTO DE INTERRUPCIONESbtfss INTCON,INTFgoto NADAbcf PORTA,LEDcall RETARDObsf PORTA,LED

NADA bcf INTCON,INTFretfie

;_________________________________________________________________________________

inicio bsf STATUS,RP0 ;PASA A BANCO 1movlw b'00000000' ;CONFIGURA LOS PUERTOSmovwf TRISAmovlw b'00000001'movwf TRISBbcf OPTION_REG,NOT_RBPU ;RESISTENCIAS PULL-UP ACTIVASbcf OPTION_REG,INTEDG ;FLANCO DE BAJADA DE RB0bcf STATUS,RP0 ;VUELVE A BANCO 0clrf PORTAclrf PORTB

Page 53: Microcontroladores  3ra Parte

PROG. INTERRUPCIÓN RB0/INTbsf INTCON,INTE ;ACTIVA INTERRUPCION POR RP0bsf INTCON,GIE ;ACTIVA INTERRUPCIONES GLOBALESbcf INTCON,INTF ;PONE EN BAJO LA BANDERA DE INTERRUPCIONES POR RP0

ciclo bsf PORTA,LEDsleepgoto ciclo

;***********************subrutina para retardos***************

RETARDO movlw valor1 ;retardo de bit y mediomovwf reg1

tres movlw valor2movwf reg2

dos movlw valor3movwf reg3

uno decfsz reg3,fgoto unodecfsz reg2,fgoto dosdecfsz reg1,fgoto tresreturnend

Page 54: Microcontroladores  3ra Parte

PROG. INTERRUPCIÓN RB<7:4>;AUTOR: CÉSAR AUGUSTO PEÑA C ;PIC:16F84A;FUNCION: USA INTERRUPCIONES (RB<7:4>), SI OCURRE UN CAMBIO EN ALGUN PIN RB<7:4>;APAGA UN LED PUESTO EN RA0 DURANTE UN SEGUNDO Y VUELVE A DEJARLO PRENDIDO

;CARACTERISTICAS:;OSCILADOR: XT;WATCHDOG TIMER: OFF;POWER UP TIMER: ON;CODE PROTECT: OFF

INCLUDE "P16F84A.Inc";**************************** DEFINICION DE REGISTROS ***********************************

CBLOCK .12reg1,reg2,reg3

endc;**************************** DEFINICION DE DATOS ****************************valor1 equ d'8' ;DATOS PARA REATRDO DE 1 SEGUNDOvalor2 equ d'195'valor3 equ d'212'LED equ 0 ;pin de entrada del interruptor

Page 55: Microcontroladores  3ra Parte

PROG. INTERRUPCIÓN RB<7:4>org 00goto inicio

;********************** TRATAMIENTO DE INTERRUPCIONES************************************ORG 04 ;ZONA DE TRATAMIENTO DE INTERRUPCIONESbtfss INTCON,RBIFgoto NADAbcf PORTA,LEDcall RETARDObsf PORTA,LED

NADA bcf INTCON,RBIFretfie

;_________________________________________________________________________________________

inicio bsf STATUS,RP0 ;PASA A BANCO 1movlw b'00000000' ;CONFIGURA LOS PUERTOSmovwf TRISAmovlw b'11110000'movwf TRISBbcf OPTION_REG,NOT_RBPU ;RESISTENCIAS PULL-UP ACTIVASbcf STATUS,RP0 ;VUELVE A BANCO 0clrf PORTAclrf PORTB

Page 56: Microcontroladores  3ra Parte

PROG. INTERRUPCIÓN RB<7:4>bsf INTCON,RBIE ;ACTIVA INTERRUPCION POR CAMBIO EN EL PORTBbsf INTCON,GIE ;ACTIVA INTERRUPCIONES GLOBALESbcf INTCON,RBIF ;PONE EN BAJO LA BANDERA DE INTERRUPCIONES POR

;CAMBIO EN PORTB

ciclo bsf PORTA,LEDmovf PORTB,W ;TENER COMO BASE PARA COMPARAR EL CAMBIO EN SUS PINESsleepgoto ciclo

;***********************subrutina para retardos***************RETARDO movlw valor1 ;retardo de bit y medio

movwf reg1tres movlw valor2

movwf reg2dos movlw valor3

movwf reg3uno decfsz reg3,f

goto unodecfsz reg2,fgoto dosdecfsz reg1,fgoto tresreturnend