Vous êtes sur la page 1sur 38

INSTRUCCIONES DEL PIC16F84

I)

MANEJO DE INFORMACION
MOVLW

Mueve un literal o dato de 8 bit al registro de


trabajo W
MOVLW LITERAL

MOVWF

Mueve el dato contenido en el registro de


trabajo W a cualquier otro registro
MOVWF REGISTRO

MOVFW

Mueve el dato contenido en el registro de


trabajo W a cualquier otro registro
MOVFW REGISTRO

II)

MANEJO DE BITS
BCF

Limpia (clear) el bit de un registro


BCF REGISTRO,BIT

BSF

Pone a 1 (set) el bit de un registro


BSF REGISTRO,BIT

BTFSS

Brinca una lnea de programa si el bit de un


registro tiene 1.
BTFSS REGISTRO,BIT

BTFSC

Brinca una lnea de programa si el bit de un


registro tiene 0.
BTFSS REGISTRO,BIT

RRF

Rota los bits de un registro a la derecha


RRF REGISTRO,DESTINO

RLF

Rota los bits de un registro a la izquierda


RLF REGISTRO,DESTINO

SWAPF

Conmuta los 4 bits ms significativos con los 4


bits menos significativos
SWAPF REGISTRO,DESTINO

DESTINO: F (registro en uso)


W (registro de trabajo)

III)

OPERACIONES ARITMETICAS
ADDLW

Suma un dato al registro de trabajo W


ADDLW LITERAL

ADDWF

Suma el dato contenido en el trabajo W, con


otro registro
ADDWF REGISTRO,DESTINO

SUBLW

Resta a un dato el valor contenido en el registro


de trabajo W
SUBLW LITERAL

SUBWF

Resta al dato contenido en un registro el dato


que tiene el registro trabajo W
SUBWF REGISTRO,DESTINO

INCF

Incrementa en una unidad a un registro


INCF REGISTRO,DESTINO

DECF

Decrementa en una unidad a un registro


DECF REGISTRO,DESTINO

INCFSZ

Incrementa en una unidad a un registro y si


resulta 0, brinca una lnea de programa
INCFSZ REGISTRO,DESTINO

DECSZ

Decrementa en una unidad a un registro y si


resulta 0, brinca una lnea de programa
DECFSZ REGISTRO,DESTINO

IV)

OPERACIONES LOGICAS
COMF

Complementa o niega el contenido de un


registro
COMF REGISTRO,DESTINO

ANDLW

Producto lgico de un dato con el registro de


trabajo W
ANDLW LITERAL

ANDWF

Producto lgico entre los datos contenidos en


un registro y el registro trabajo W
ANDWF REGISTRO,DESTINO

IORLW

Suma lgica de un dato con el registro de


trabajo W
IORLW LITERAL

IORWF

Suma lgica entre los datos contenidos en un


registro y el registro trabajo W
IORWF REGISTRO,DESTINO

XORLW

Suma lgica exclusiva o comparador lgico de


un dato con el registro de trabajo W
XORLW LITERAL

XORWF

Suma lgica exclusiva o comparacin lgica


entre los datos contenidos en un registro y el
registro trabajo W
XORWF REGISTRO,DESTINO

V)

CONTROL DE FLUJO DE PROGRAMA


GOTO

Ir a, o va a la lnea de programa indicada


mediante un etiqueta
GOTO ETIQUETA

CALL

Llama a una subrutina o a una tabla que tiene


por nombre la etiqueta que la acompaa
CALL ETIQUETA

RETURN

Retorna de la subrutina, a la cual accedi


mediante CALL
RETURN

RETLW

Retorna de una tabla con un dato en W, a la


cual accedi mediante CALL
RETLW

RETFIE

Retorna de una rutina de interrupcin, a la cual


fue solicitada mediante un elemento del
HARDWARE
RETFIE

BTFSS

Brinca una lnea de programa si el bit de un


registro tiene 1.
BTFSS REGISTRO,BIT

BTFSC

Brinca una lnea de programa si el bit de un


registro tiene 0.
BTFSS REGISTRO,BIT

INCFSZ

Incrementa en una unidad a un registro y si


resulta 0, brinca una lnea de programa
INCFSZ REGISTRO,DESTINO

DECSZ

Decrementa en una unidad a un registro y si


resulta 0, brinca una lnea de programa
DECFSZ REGISTRO,DESTINO

VI)

COMPLEMENTARIAS
CLRF

Borra el contenido de un registro


CLRF REGISTRO

CLRW

Borra el contenido del registro de trabajo W


CLRW

CLRWDT

Borra el contenido del registro Watchdog


CLRWDT

SLEEP

Duerme al procesador
SLEEP

NOP

No operacin, el procesador no hace nada solo


hay un consumo de tiempo
NOP

LIST P=16F84A
INCLUDE <P16F84A.INC>
CBLOCK 0X0C
CUENTA

; Variables de conteo, tablas y tiempo para el LCD

X
Y
T
FACTOR

; Variables para la generacion de la alarma

FACTOR2
T1
ENDC
ORG 0X2007 ; Configuracin del PIC
DW 0X3FFA
ORG 0X0000 ; Inicio de la memoria de programa
BSF STATUS,RP0

; Bank 1

CLRF TRISB

; Port B de salida a LCD (data 8bits)

BCF TRISA,0

; Salida para el control E del LCD

BCF TRISA,1

; Salida para el control RS del LCD

BCF TRISA,2

; Salida para el Parlante

BSF TRISA,4

; Entrada para el Sensor

MOVLW 0X38
eventos

; Programacion del TMR0 como contador de

MOVWF OPTION_REG
BCF STATUS,RP0

; Bank 0

INICIO:
BCF PORTA,2

; Parlante OFF

BCF PORTA,1

; RS = 0 Comandos para el LCD

BCF PORTA,0

; E=0

CALL TLCD
CLRF X
C1: MOVFW X
CALL TCONTROL
MOVWF Y
XORLW .0
BTFSC STATUS,Z
GOTO TITULO
MOVFW Y
MOVWF PORTB
CALL ENABLE
INCF X,F
GOTO C1

TITULO:
BSF PORTA,1

; RS = 1 Caracteres en codigo ASCII

BCF PORTA,0

; E=0

CALL TLCD
CLRF X

M1: MOVFW X
CALL MENSAJE
MOVWF Y
XORLW .0
BTFSC STATUS,Z
GOTO CONTEO
MOVFW Y
MOVWF PORTB
CALL ENABLE
INCF X,F
GOTO M1

CONTEO:
CLRF TMR0
REPITE:
MOVFW TMR0
MOVWF CUENTA
XORLW .10
BTFSC STATUS,Z
GOTO ALARMA
CALL DISPLAY
GOTO REPITE

DISPLAY:
BCF PORTA,1

; RS = 0 Comandos para el LCD

BCF PORTA,0

; E=0

CALL TLCD
MOVLW 0XC7

; Cursor: 2da linea, 8vo caracter

MOVWF PORTB
CALL ENABLE
BSF PORTA,1

; RS = 1 Caracteres en codigo ASCII

BCF PORTA,0

; E=0

CALL TLCD
MOVFW CUENTA
ADDLW 0X30

; Conversion a codigo ASCII

MOVWF PORTB
CALL ENABLE
RETURN

ALARMA:
MOVLW .10
MOVWF FACTOR2

; La alarma dura 7 seg

DO: MOVLW .79

; Tiempo del DO: 0.3 seg

MOVWF FACTOR
DO2: BSF PORTA,2
CALL TDO
BCF PORTA,2
CALL TDO
DECFSZ FACTOR
GOTO DO2
MI: MOVLW .132

; Tiempo del MI: 0.4 seg

MOVWF FACTOR
MI2: BSF PORTA,2
CALL TMI
BCF PORTA,2
CALL TMI
DECFSZ FACTOR
GOTO MI2

DECFSZ FACTOR2,F
GOTO DO
GOTO $

; Fin del programa

TDO: MOVLW .19

; Medio periodo de la nota DO

MOVWF T1
LZDO: CALL T100US
DECFSZ T,F
GOTO LZDO
RETURN
TMI: MOVLW .15

; Medio periodo de la nota MI

MOVWF T1
LZMI: CALL T100US
DECFSZ T,F
GOTO LZMI
RETURN

T100US:
MOVLW .25
MOVWF T
LAZO1: NOP
DECFSZ T,F
GOTO LAZO1
RETURN

; Base de Tiempo de 100 useg para los sonidos

ENABLE:
CALL TLCD
BSF PORTA,0

; E=1

CALL TLCD
BCF PORTA,0

; E=0

CALL TLCD
RETURN

TLCD:
MOVLW .250
MOVWF T
LAZO: NOP
DECFSZ T,F
GOTO LAZO
RETURN
TCONTROL:
ADDWF PCL,F
DT 0X38,0X0C,0X06,0X01,.0
MENSAJE:
ADDWF PCL,F
DT " N OBJETOS",.0
END

TECLADO

PRENDER LED
LIST P=16F84A
INCLUDE <P16F84A.INC>
CBLOCK 0XC
; Area de las variables
ENDC
ORG 0X2007
; Configuracion del PIC
DW 0X3FFA
ORG 0X0000
; Direccion inicial de la memoria
de programa
BSF STATUS,RP0
; Bank 1
MOVLW B'00000000'
; Puerto B de salida a LEDs
MOVWF TRISB
BCF STATUS,RP0
; Bank 0
INICIO: MOVLW B'11110000'
MOVWF PORTB
GOTO $

; LEDs ON

END
----------------------------------------------------------------------------------PRENDER Y APAGAR LED POR UN TIEMPO DETERMINADO
LIST P=16F84A
INCLUDE <P16F84A.INC>
CBLOCK 0XC
; Area de las variables
T1
; Variables para los tiempos
T2
T3
ENDC

ORG 0X2007
; Configuracion del PIC
DW 0X3FFA
ORG 0X0000
; Direccion inicial de la memoria
de programa
BSF STATUS,RP0
; Bank 1
MOVLW B'00000000'
; Puerto B de salida a LEDs
MOVWF TRISB
BCF STATUS,RP0
; Bank 0
INICIO: MOVLW B'11111111'
; Leds ON
MOVWF PORTB
CALL DELAY
MOVLW B'00000000'
; Leds OFF
MOVWF PORTB
CALL DELAY
GOTO INICIO
DELAY: MOVLW .2; 10
MOVWF T3
LAZO3: CALL T100MS
DECFSZ T3,F
GOTO LAZO3
RETURN

; 1 seg.

T100MS: MOVLW .100


MOVWF T2
LAZO2: CALL T1MS
DECFSZ T2,F
GOTO LAZO2
RETURN

; 100 mseg.

T1MS: MOVLW .250

; 1 mseg.

MOVWF T1
LAZO1: NOP
DECFSZ T1,F
GOTO LAZO1
RETURN
END

; PROGRAMA 01 Tiempo base de 100 useg. con el TMR0


LIST P=16F84A
INCLUDE <P16F84A.INC>
CBLOCK 0X0C
T1
T2
CUENTA
ENDC
ORG 0X2007
DW 0X3FFA
ORG 0X0000
BSF STATUS,RP0

; Banco 1

CLRF TRISB
MOVLW 0X00
MOVWF OPTION_REG
BCF STATUS,RP0

; Banco 0

INICIO: CLRF CUENTA


ABC: MOVFW CUENTA
MOVWF PORTB
CALL DELAY
INCF CUENTA

GOTO ABC
GOTO INICIO
DELAY: MOVLW .100
MOVWF T1
LAZO1: CALL T10MS
DECFSZ T1,F
GOTO LAZO1
RETURN
T10MS: MOVLW .100
MOVWF T2
LAZO2: CALL T100US
DECFSZ T2,F
GOTO LAZO2
RETURN
T100US: MOVLW .0
MOVWF TMR0
SENSA: BTFSS INTCON,T0IF
GOTO SENSA
BCF INTCON,T0IF
RETURN

END

CONTADOR CON UN ALARMA EN LCD


LIST P=16F84A
INCLUDE <P16F84A.INC>
CBLOCK 0X0C
CUENTA

; Variables de conteo, tablas y tiempo para el LCD

X
Y
T
FACTOR

; Variables para la generacion de la alarma

FACTOR2
T1
ENDC
ORG 0X2007 ; Configuracin del PIC
DW 0X3FFA
ORG 0X0000 ; Inicio de la memoria de programa
BSF STATUS,RP0

; Bank 1

CLRF TRISB

; Port B de salida a LCD (data 8bits)

BCF TRISA,0

; Salida para el control E del LCD

BCF TRISA,1

; Salida para el control RS del LCD

BCF TRISA,2

; Salida para el Parlante

BSF TRISA,4

; Entrada para el Sensor

MOVLW 0X38

; Programacion del TMR0 como contador de eventos

MOVWF OPTION_REG
BCF STATUS,RP0

; Bank 0

INICIO:
BCF PORTA,2

; Parlante OFF

BCF PORTA,1

; RS = 0 Comandos para el LCD

BCF PORTA,0

; E=0

CALL TLCD
CLRF X
C1: MOVFW X
CALL TCONTROL
MOVWF Y
XORLW .0
BTFSC STATUS,Z
GOTO TITULO
MOVFW Y
MOVWF PORTB
CALL ENABLE
INCF X,F
GOTO C1

TITULO:

BSF PORTA,1

; RS = 1 Caracteres en codigo ASCII

BCF PORTA,0

; E=0

CALL TLCD
CLRF X
M1: MOVFW X
CALL MENSAJE
MOVWF Y
XORLW .0
BTFSC STATUS,Z
GOTO CONTEO
MOVFW Y
MOVWF PORTB
CALL ENABLE
INCF X,F
GOTO M1

CONTEO:
CLRF TMR0
REPITE:
MOVFW TMR0
MOVWF CUENTA
XORLW .10

BTFSC STATUS,Z
GOTO ALARMA
CALL DISPLAY
GOTO REPITE

DISPLAY:
BCF PORTA,1

; RS = 0 Comandos para el LCD

BCF PORTA,0

; E=0

CALL TLCD
MOVLW 0XC7

; Cursor: 2da linea, 8vo caracter

MOVWF PORTB
CALL ENABLE
BSF PORTA,1

; RS = 1 Caracteres en codigo ASCII

BCF PORTA,0

; E=0

CALL TLCD
MOVFW CUENTA
ADDLW 0X30
MOVWF PORTB
CALL ENABLE
RETURN

; Conversion a codigo ASCII

ALARMA:
MOVLW .10

; La alarma dura 7 seg

MOVWF FACTOR2

DO: MOVLW .79

; Tiempo del DO: 0.3 seg

MOVWF FACTOR
DO2: BSF PORTA,2
CALL TDO
BCF PORTA,2
CALL TDO
DECFSZ FACTOR
GOTO DO2
MI: MOVLW .132
MOVWF FACTOR
MI2: BSF PORTA,2
CALL TMI
BCF PORTA,2
CALL TMI
DECFSZ FACTOR
GOTO MI2

; Tiempo del MI: 0.4 seg

DECFSZ FACTOR2,F
GOTO DO
GOTO $

TDO: MOVLW .19

; Fin del programa

; Medio periodo de la nota DO

MOVWF T1
LZDO: CALL T100US
DECFSZ T,F
GOTO LZDO
RETURN

TMI: MOVLW .15

; Medio periodo de la nota MI

MOVWF T1
LZMI: CALL T100US
DECFSZ T,F
GOTO LZMI
RETURN

T100US:
MOVLW .25
MOVWF T

; Base de Tiempo de 100 useg para los sonidos

LAZO1: NOP
DECFSZ T,F
GOTO LAZO1
RETURN

ENABLE:
CALL TLCD
BSF PORTA,0

; E=1

CALL TLCD
BCF PORTA,0
CALL TLCD
RETURN

TLCD:
MOVLW .250
MOVWF T
LAZO: NOP
DECFSZ T,F
GOTO LAZO
RETURN

; E=0

TCONTROL:
ADDWF PCL,F
DT 0X38,0X0C,0X06,0X01,.0

MENSAJE:
ADDWF PCL,F
DT " N OBJETOS",.0

END
-----------------------------------------------------------------------------------------------------------------------------------

CLAVE CON TECLADO Y MENSAJES POR LCD


LIST P=16F84A
INCLUDE <P16F84A.INC>
CBLOCK 0X0C
CLAVE1
CLAVE2
CLAVE3
CLAVE4
ENDC
ORG 0X2007
DW 0X3F7A
ORG 0X0000

BANKSEL TRISA ; Bank 1


CLRF TRISB

; Port B de salida a LEDs

MOVLW 0X1F

; Port A de entrada para el teclado

MOVWF TRISA
BANKSEL PORTA ; Bank 0
INICIO: CLRF PORTB

; LEDs en OFF

; LECTURA DE LA CLAVE DE 4 DIGITOS


LEE11: BTFSS PORTA,4 ; Pulsa
GOTO LEE11
MOVFW PORTA
ANDLW 0X0F
CALL TABLA
MOVWF CLAVE1
MOVWF PORTB
LEE12: BTFSC PORTA,4 ; Libera
GOTO LEE12

LEE21: BTFSS PORTA,4 ; Pulsa


GOTO LEE21
MOVFW PORTA
ANDLW 0X0F

CALL TABLA
MOVWF CLAVE2
MOVWF PORTB
LEE22: BTFSC PORTA,4 ; Libera
GOTO LEE22

LEE31: BTFSS PORTA,4 ; Pulsa


GOTO LEE31
MOVFW PORTA
ANDLW 0X0F
CALL TABLA
MOVWF CLAVE3
MOVWF PORTB
LEE32: BTFSC PORTA,4 ; Libera
GOTO LEE32

LEE41: BTFSS PORTA,4 ; Pulsa


GOTO LEE41
MOVFW PORTA
ANDLW 0X0F
CALL TABLA
MOVWF CLAVE4

MOVWF PORTB
LEE42: BTFSC PORTA,4 ; Libera
GOTO LEE42

; COMPARACION DE LA CLAVE CON: 1 2 3 4

MOVFW CLAVE1
XORLW .1
BTFSS STATUS,Z
GOTO FALLA
MOVFW CLAVE2
XORLW .2
BTFSS STATUS,Z
GOTO FALLA
MOVFW CLAVE3
XORLW .3
BTFSS STATUS,Z
GOTO FALLA
MOVFW CLAVE4
XORLW .4
BTFSS STATUS,Z
GOTO FALLA

CORRECTO:
BSF PORTB,0 ; Led Verde ON
CALL DELAY
GOTO INICIO

FALLA:
BSF PORTB,2 ; Led Rojo ON
CALL DELAY
GOTO INICIO

DELAY:
RETURN

TABLA: ADDWF PCL,F


DT .1,.2,.3,.0,.4,.5,.6,.0,.7,.8,.9,.0,.0,.0,.0
END

Vous aimerez peut-être aussi