Escolar Documentos
Profissional Documentos
Cultura Documentos
W =1 0 0 0 0 0 0 0 1
ADDLW .7
W = 1 +7 = 8 0 0 0 0 1 0 0 0
INSTRUCCIÓN ADDWF f,d
W+f d
Ejm:
W=1 0 0 0 0 0 0 0 1
REG1 = 5 0 0 0 0 0 1 0 1
ADDWF REG1,1
REG1 = 1 + 5 = 6 0 0 0 0 0 1 1 0
INSTRUCCIÓN ANDLW k
W AND k W
Ejm:
W =5 0 0 0 0 0 1 0 1
ANDLW b’00000111’
W = 5 AND 7 = 5 0 0 0 0 0 1 0 1
INSTRUCCIÓN ANDWF f,d
W AND f d
Ejm:
W=3 0 0 0 0 0 0 1 1
REG1 = 5 0 0 0 0 0 1 0 1
ANDWF REG1,0
W = 3 AND 5 = 1 0 0 0 0 0 0 0 1
INSTRUCCIÓN CLRW
0 W
Ejm:
W =171 1 0 1 0 1 0 1 1
CLRW
W=0 0 0 0 0 0 0 0 0
INSTRUCCIÓN CLRF f
0 f
Ejm:
REG1 =170 1 0 1 0 1 0 1 0
CLRF REG1
REG1 = 0 0 0 0 0 0 0 0 0
INSTRUCCIÓN COMF f,d
com(f) d
Ejm:
REG1 =240 1 1 1 1 0 0 0 0
COMF REG1,0
W = 15 0 0 0 0 1 1 1 1
INSTRUCCIÓN DECF f,d
f-1 d
Ejm:
REG1 =8 0 0 0 0 1 0 0 0
DECF REG1,1
REG1 = 7 0 0 0 0 0 1 1 1
INSTRUCCIÓN INCF f,d
f+1 d
Ejm:
REG1 =15 0 0 0 0 1 1 1 1
INCF REG1,1
REG1 = 16 0 0 0 1 0 0 0 0
INSTRUCCIÓN IORLW k
W OR k W
Ejm:
W =9 0 0 0 0 1 0 0 1
IORLW b’00000111’
W = 9 OR 7 = 15 0 0 0 0 1 1 1 1
INSTRUCCIÓN IORWF f,d
W OR f d
Ejm:
REG1 =6 0 0 0 0 0 1 1 0
W =9 0 0 0 0 1 0 0 1
IORWF REG1,0
REG1 =6 0 0 0 0 0 1 1 0
W = 6 OR 9 = 15 0 0 0 0 1 1 1 1
INSTRUCCIÓN NOP
Ejm: NOP
No hace nada
0 0 1 0 0 1 1 1 1
RLF REG1,1
C REG1
0 1 0 0 1 1 1 1 0
INSTRUCCIÓN RLF f,d
C REG1
0 1 0 0 1 1 1 1 0
RLF REG1,1
C REG1
1 0 0 1 1 1 1 0 0
INSTRUCCIÓN RLF f,d
C REG1
1 0 0 1 1 1 1 0 0
RLF REG1,1
C REG1
0 0 1 1 1 1 0 0 1
INSTRUCCIÓN RRF f,d
C REG1
1 0 0 1 1 1 1 0 0
RRF REG1,1
C REG1
0 1 0 0 1 1 1 1 0
INSTRUCCIÓN SUBLW k
k-W W
EJEMPLO 1:
W=5 0 0 0 0 0 1 0 1
SUBLW .7
C
W=7-5=2 0 0 0 0 0 0 1 0 1 POSITIVO
INSTRUCCIÓN SUBLW k
k-W W
EJEMPLO 2:
W = 15 0 0 0 0 1 1 1 1
SUBLW .15
C
W = 15 - 15 = 0 0 0 0 0 0 0 0 0 1 CERO
INSTRUCCIÓN SUBLW k
k-W W
EJEMPLO 3:
W=4 0 0 0 0 0 1 0 0
SUBLW .3
C
W = 3 - 4 = -1 1 1 1 1 1 1 1 1 0 NEGATIVO
INSTRUCCIÓN SUBWF f,d
f-W W
EJEMPLO 1:
REG1 = 6 0 0 0 0 0 1 1 0
W=1 0 0 0 0 0 0 0 1
SUBWF REG1,1
C
REG1 = 6 - 1 = 5 0 0 0 0 0 1 0 1 1 POSITIVO
INSTRUCCIÓN SUBWF f,d
f-W W
EJEMPLO 1:
REG1 = 7 0 0 0 0 0 1 1 1
W=7 0 0 0 0 0 1 1 1
SUBWF REG1,1
C
W=7-7=0 0 0 0 0 0 0 0 0 1 CERO
INSTRUCCIÓN SUBWF f,d
f-W W
EJEMPLO 1:
REG1 = 10 0 0 0 0 1 0 1 0
W = 12 0 0 0 0 1 1 0 0
SUBWF REG1,1
C
REG1 = 10 - 12 = -2 1 1 1 1 1 1 1 0 0 NEGATIVO
INSTRUCCIÓN SWAPF f,d
f<3:0> d<7:4>
Ejm:
f<7:4> d<3:0>
REG1 0 0 0 0 1 0 0 1
SWAPF REG1,0
W 1 0 0 1 0 0 0 0
INSTRUCCIÓN XORLW k
W XOR k W
Ejm:
W =9 0 0 0 0 1 0 0 1
XORLW b’00000111’
W = 9 XOR 7 = 14 0 0 0 0 1 1 1 0
INSTRUCCIÓN XORWF f,d
W XOR f d
Ejm:
REG1 = 15 0 0 0 0 1 1 1 1
W=6 0 0 0 0 0 1 1 0
XORWF REG1,0
W = 15 XOR 6 = 9 0 0 0 0 1 0 0 1
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
W 1 0 1 0 1 0 0 1
ANDLW B’11000111’
W 1 0 0 0 0 0 0 1
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
W 1 0 1 0 1 0 0 1
IORLW B’00011110’
W 1 0 1 1 1 1 1 1
RUTINAS USUALES
• Detectar si dos registros son iguales y en tal caso llama una subrutina
INCLUDE "P16F84.Inc"
;**************************** DEFINICION DE REGISTROS ***********************************
CBLOCK .12
REG1, REG2
endc
;****************************************************************************************
org 00
goto INICIO
org 05
INICIO movlw .7 ;W = 7
movwf REG1 ;REG1 = W = 7
movlw .7 ;W = 7
movwf REG2 ;REG2 = W = 7
PROGRAMA DE VERIFICACIÓN
;Subrutina para comprobar igualdades
VERIF_IGUAL movf REG1,0 ;W = REG1
xorwf REG2,0 ;W = REG1 XOR REG2
btfsc STATUS,2 ;Salta si Z = 0
goto IGUAL ;llama Subrutina
end
MOTOR PAP
Mientras 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º)
MOTOR PAP
PC = 11 h
0011 H GOTO ETIQUETA (34H)
0012 H
Goto 34h
ETIQUETA 0034 H
PC = 34 h
CONTINUA PROGRAMA
03FF H
13 0
INSTRUCCIÓN CALL k Y RETURN
0000 H VECTOR RESET
PC+1 Pila
k PC
0004 H VECTOR INTERRUPCIÓN
CALL SUBRUTINA PC = 34 h
0011 H
0012 H CONTINUA PROGRAMA
0012 h
NIVEL 2
0034 H
NIVEL 3
SUBRUTINA .
.
RETURN .
NIVEL 8
03FF H
13 0
INSTRUCCIÓN RETLW k
0000 H VECTOR RESET
Nivel 1 (pila) PC
k W
0004 H VECTOR INTERRUPCIÓN
03FF H
13 0
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 .12
REG1, REG2, REG3, MOTOR
ENDC
;*******DEFINICION DE DATOS**************************************
VALOR1 EQU .10
VALOR2 EQU .40
VALOR3 EQU .40
;*******PROGRAMA*************************************************
ORG 00
GOTO INICIO
ORG 05
INICIO bsf STATUS,RP0 ;PASA AL BANCO 1
clrf TRISA ;CONFIGURA PUERTOS COMO SALIDAS
clrf TRISB
bcf STATUS,RP0 ;PASA AL BANCO 0
clrf PORTA
clrf PORTB
PROG. MPAP USANDO TABLAS
CARGAR movlw d'4' ;W = 4
movwf MOTOR
GIRAR movf MOTOR,0 ;W = MOTOR
call TABLA
movwf PORTB ;PORTB = W
call RETARDO
decfsz MOTOR ;MOTOR = MOTOR -1
goto GIRAR
goto CARGAR ;SI MOTOR = 0 LO RECARGA (4)
END
INSTRUCCIÓN SLEEP
TRATAMIENTO
INTERRUPCIÓN
RETFIE
0012 H INICIO
0034 H
PROGRAMA
03FF H
13 0
CAUSAS DE INTERRUPCIONES
Para que esta interrupción pueda activarse es necesario poner en 1 los bit
GIE e INTE del registro INTCON
1 x x 1 x 0 0 0
GIE EEIE T0IE INTE RBIE T0IF INTF RBIF
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"
;CARACTERISTICAS:
;OSCILADOR: XT
;WATCHDOG TIMER: OFF
;POWER UP TIMER: ON
;CODE PROTECT: OFF
INCLUDE "P16F84A.Inc"
;**************************** DEFINICION DE REGISTROS ***********************************
CBLOCK .12
reg1,reg2,reg3
endc
;**************************** DEFINICION DE DATOS ****************************
valor1 equ d'8' ;DATOS PARA REATRDO DE 1 SEGUNDO
valor2 equ d'195'
valor3 equ d'212'
LED equ 0 ;pin de entrada del interruptor
PROG. INTERRUPCIÓN RB<7:4>
org 00
goto inicio
;********************** TRATAMIENTO DE INTERRUPCIONES************************************
ORG 04 ;ZONA DE TRATAMIENTO DE INTERRUPCIONES
btfss INTCON,RBIF
goto NADA
bcf PORTA,LED
call RETARDO
bsf PORTA,LED
NADA bcf INTCON,RBIF
retfie
;_________________________________________________________________________________________