Sie sind auf Seite 1von 34

INSTRUCCIONES DEL PIC18F4550

COMPATIBLES CON GAMA MEDIA


I)

Manejo de Informacin

MOVLW

Mueve informacin hacia el registro de Trabajo (W)


movlw

LITERAL

MOVWF Mueve informacin contenida en el registro de Trabajo


(W), hacia otro registro
movwf

REGISTRO

MOVFW Mueve informacin contenida en un registro hacia el


registro de Trabajo (W)
movfw
Notas:

MOV
L
W
F

REGISTRO

move ( mover )
literal ( dato de 8 bits )
work ( registro de trabajo )
registro ( especial o general )

P01. Encender los 8 leds que se encuentran conectados al Puerto


D.
MOVLW B11111111
MOVWF PORTD

P02. FLASH LEDs conectados al Puerto D.

P03. Leer las llaves elctricas (switches) conectadas al Puerto C y


mostrar su estado por los LEDs conectados al Puerto D.
MOVFW PORTC
MOVWF PORTD

II) Manejo de Bits


BSF Pone a 1 el bit de un registro
bsf

REGISTRO , BIT

BCF Pone a 0 el bit de un registro


bcf
Notas:

B
S
C
F

REGISTRO , BIT

bit ( digito binario )


set ( poner a 1 )
clear ( borra un bit, 0 )
registro ( especial o general )

P04. Encender el foco conectado en el bit 3 del Puerto D.


BSF PORTD , 3

RRF Rota los bits de un registro hacia la derecha, incluyendo el


carry, GAMA MEDIA
rrf

REGISTRO , DESTINO

RLF Rota los bits de un registro hacia la izquierda, incluyendo el


carry, GAMA MEDIA
rlf

REGISTRO , DESTINO

RRCF Rota los bits de un registro hacia la derecha, incluyendo el


carry, GAMA ALTA
rrcf

REGISTRO , DESTINO

RLCF Rota los bits de un registro hacia la izquierda, incluyendo el


carry, GAMA ALTA
rlcf REGISTRO , DESTINO
RRNCF Rota los bits de un registro hacia la derecha, no
incluyendo el carry, GAMA ALTA
rrcf

REGISTRO , DESTINO

RLNCF Rota los bits de un registro hacia la izquierda, no


incluyendo el carry, GAMA ALTA
rlcf
Notas:

R
R
L
F
DESTINO

REGISTRO , DESTINO

rotacin
right ( derecha )
left ( izquierda )
registro ( especial o general )
W o F
el resultado se almacena en el registro de
trabajo o el registro en uso.

P05. Encender los leds alternadamente de derecha a izquierda,


conectados en el Puerto D.
I)

PARA GAMA MEDIA


MOVLW .1
MOVWF PORTD
RLF PORTD,F
RLF PORTD,F
RLF PORTD,F
RLF PORTD,F
RLF PORTD,F
RLF PORTD,F
RLF PORTD,F

Para apreciar los cambios, se requiere incluir rutinas de tiempo, tal


como se muestra a continuacin para GAMA MEDIA PIC16F877

T1
T2

LIST P=16F877A
; dispositivo
INCLUDE <P16F877A.INC> ; libreria
EQU 0X20
; Variable de tiempo
EQU 0X21
ORG 0X2007
; configuracion del PIC
DW 0X3F7A
ORG 0X0000
; direccion inicial ROM
BSF STATUS,RP0
; Bank 1
BCF STATUS,RP1
MOVLW .0
MOVWF TRISB
; Portb de salida
BCF STATUS,RP0
; Bank 0
BCF STATUS,RP1

INICIO:
MOVLW B'00000001'
MOVWF PORTB
CALL TIEMPO1
RLF PORTB,F
CALL TIEMPO1
RLF PORTB,F
CALL TIEMPO1
RLF PORTB,F
CALL TIEMPO1
RLF PORTB,F
CALL TIEMPO1
RLF PORTB,F
CALL TIEMPO1
RLF PORTB,F
CALL TIEMPO1
RLF PORTB,F
CALL TIEMPO1
GOTO INICIO
TIEMPO1: MOVLW .255
MOVWF T1
LAZO1: CALL TIEMPO2
DECFSZ T1,F

GOTO LAZO1
RETURN
TIEMPO2: MOVLW .255
MOVWF T2
LAZO2: NOP
DECFSZ T2,F
GOTO LAZO2
RETURN
END

II)

GAMA ALTA

Rutina alternativa:

SWAPF

Intercambia los 4 bits menos significativos


con los 4 bits ms significativos del registro
swapf

Notas:

REGISTRO , DESTINO

SWAP
intercambio
F
registro ( especial o general )
DESTINO W o F
el resultado se almacena en el registro de
trabajo o el registro en uso.

P06. Conmutar el encendido de los 4 leds menos y ms


significativos, conectados en el Puerto D.
MOVLW
MOVWF
SWAPF
SWAPF
SWAPF
SWAPF

.
.
.

0x0F
PORTD
PORTD,F
PORTD,F
PORTD,F
PORTD,F

;(
;(
;(
;(
;(

portd = 00001111 )
portd = 11110000 )
portd = 00001111 )
portd = 11110000 )
portd = 00001111 )

BTFSS

Brinca una lnea de programa si el bit es 1.


btfss

BTFSC

Brinca una lnea de programa si el bit es 0.


btfsc

Notas:

REGISTRO , BIT

B
T
F
S
S
C

REGISTRO , BIT

bit
test ( pregunta por su estado )
registro ( especial o general )
skip ( brinco )
set 1
clear 0

P07. Preguntar por el estado del sensor conectado al bit 3 del


Puerto D y si est en 1 encender el foco conectado en el bit
6 del Puerto D.
SENSA:

BTFSS PORTD , 3
GOTO SENSA
BSF PORTD , 6

; est en 1 el sensor?
; no, vuelve a sensar
; si, foco on

Solucin en Gama Alta


LIST P=18F4550
; Dispositivo
INCLUDE <P18F4550.INC> ; Libreria
CBLOCK
; Area de variables
ENDC
CONFIG
CONFIG
CONFIG

FOSC = HS
WDT = OFF
MCLRE = OFF

ORG 0X0000
BCF TRISD,6
BSF TRISD,3
INICIO:
BCF PORTD,6

; Inicio de la ROM
; RD6 de salida a foco
; RD3 de entrada del sensor

; Foco OFF

SENSA1:BTFSS PORTD , 3
GOTO SENSA1
BSF PORTD , 6

; est en 1 el sensor?
; no, vuelve a sensar
; si, foco ON

SENSA2:BTFSC PORTD , 3
GOTO SENSA2
GOTO INICIO
END

; est en 0 el sensor?
; no, vuelve a sensar
; si, foco OFF

Solucin en Gama Media (costo menor)

III) Operaciones Aritmticas


ADDLW

Suma un dato a W
addlw

ADDWF

Suma el contenido del registro de trabajo a otro


registro
addwf

Notas:

LITERAL

REGISTRO , DESTINO

ADD
LITERAL
W

adder ( sumar )
dato de 8 bits
registro de trabajo

registro ( especial o general )

DESTINO W o F
el resultado se almacena en el registro de
trabajo o el registro en uso.

P08. Sumar los datos 13 y 46 ; y que se muestre el resultado en los


leds conectados en el Puerto D.
MOVLW .13
ADDLW .46
MOVWF PORTD

SUBLW

Resta un dato a W
sublw
La resta es:

SUBWF

LITERAL - W

Resta el contenido del registro de trabajo a otro


registro
subwf
La resta es:

Notas:

LITERAL

REGISTRO , DESTINO

REGISTRO - W

LITERAL
W

dato de 8 bits
registro de trabajo

registro ( especial o general )

DESTINO W o F
el resultado se almacena en el registro de
trabajo o el registro en uso.
P08. Restar al dato ingresado en las llaves conectadas en el Puerto
C la cantidad 63; y que se muestre el resultado en los leds
conectados en el Puerto B.

MOVLW .63
SUBWF PORTC , W
MOVWF PORTB

DECF

Decrementa el contenido de un registro


decf

INCF

Incrementa el contenido de un registro


incf

Notas:

REGISTRO , DESTINO

DEC
INC
F
DESTINO

REGISTRO , DESTINO

incrementa
decrementa
registro ( especial o general )
W o F
el resultado se almacena en el registro de
trabajo o el registro en uso.

P09. Mostrar por en los leds conectados en el Puerto D una cuenta


binaria mdulo 100 ascendente ( up ).
INICIO:
OTRO:

MOVLW .0
MOVWF PORTD
INCF
PORTD , F
MOVLW .100
SUBWF PORTD,W
BTFSS STATUS,Z
GOTO OTRO
GOTO INICIO

DECFSZ

Decrementa el contenido de un registro y si resulta 0


brinca una lnea de programa.
decfsz

INCFSZ

Incrementa el contenido de un registro y si resulta 0


brinca una lnea de programa.
incfsz

Notas:

REGISTRO , DESTINO

DEC
INC
F
S
Z
DESTINO

REGISTRO , DESTINO

incrementa
decrementa
registro ( especial o general )
skip ( brinco )
zero ( cero )
W o F
el resultado se almacena en el registro de
trabajo o el registro en uso.

P10. Generar un tiempo de retardo de 1 mseg.

CBLOCK
T
ENDC
T1MSEG:
LAZO:

MOVLW
MOVWF
NOP
DECFSZ
GOTO
RETURN

0X20
; Variable de tiempo

.N
T
T,F
LAZO

1C
1C
1C
1(2)C
2C
2C

Tiempo = 1C + 1C + N*(1C) + (N-1)*(1C + 2C) + 2C + 2C


Tiempo = C* (3+4N), C=4T, T= 1/F
N = { [ ( tiempo * F ) / 4] 3 } / 4 , tiempo = 1 mseg. F = 4 Mhz.
N = 249

IV) Operaciones Lgicas


COMF

Complementa o niega el contenido de un registro


comf

ANDLW

REGISTRO , DESTINO

Producto lgico de un dato con W


andlw

ANDWF

Producto lgico entre W y otro registro


andwf

IORLW

REGISTRO , DESTINO

Suma lgica de un dato con W


iorlw

IORWF

REGISTRO , DESTINO

Suma exclusiva de un dato con W


xorlw

XORWF

LITERAL

Suma exclusiva entre W y otro registro


xorwf

Notas:

LITERAL

Suma lgica entre W y otro registro


iorwf

XORLW

LITERAL

L
W
F
DESTINO

REGISTRO , DESTINO

literal
registro de trabajo
registro ( especial o general )
W o F
el resultado se almacena en el registro de
trabajo o el registro en uso.

P11.

Elabore el programa que halle la solucin a la siguiente


expresin lgica:
_
Y=A.B+C

Los datos A, B, C, ingresan por los puertos respectivos y el resultado se


muestra por el puerto D.

; P11.
;

Elabore el programa que halle la solucin a la


siguiente expresin lgica:

;
;

_
Y=A.B+C
LIST P=18F4550
; Dispositivo
INCLUDE <P18F4550.INC> ; Libreria
CBLOCK
; Area de variables
A ; Variables para los datos de entrada
B
C
ENDC
CONFIG FOSC = HS
CONFIG WDT = OFF
CONFIG MCLRE = OFF
ORG 0X0000
; Inicio de la ROM
MOVLW B'00000000' ; Port D de salida a LEDs
MOVWF TRISD
MOVLW B'111111' ; Port A de entrada SWs
MOVWF TRISA
MOVLW B'11111111' ; Port B de entrada SWs
MOVWF TRISB
MOVLW B'11111111' ; Port C de entrada SWs
MOVWF TRISC

INICIO:
MOVF PORTA,W
MOVWF A
MOVF PORTB,W
MOVWF B
MOVF PORTC,W
MOVWF C
COMF A,W
ANDWF B,W
IORWF C,W
MOVWF PORTD
GOTO INICIO
END

V) Control del Flujo del Programa


GOTO

Va a la lnea de programa indicada


goto

CALL

Llama a una subrutina o una tabla de datos


call

RETLW

LABEL

Retorna con un dato en W


retlw

RETURN

LABEL

LITERAL

Retorna de una subrutina


return

RETFIE

Retorna de una interrupcin


retfie

OTROS YA VISTOS ( BRINCOS ):


BTFSS

Brinca una lnea de programa si el bit es 1.


btfss

BTFSC

Brinca una lnea de programa si el bit es 0.


btfsc

DECFSZ

REGISTRO , BIT

Decrementa el contenido de un registro y si resulta 0


brinca una lnea de programa.
decfsz

INCFSZ

REGISTRO , BIT

REGISTRO , DESTINO

Incrementa el contenido de un registro y si resulta 0


brinca una lnea de programa.

incfsz

REGISTRO , DESTINO

VI) Especiales
CLRF

Borra un registro
clrf

CLRW

Borra el registro W
clrw

CLRWDT Borra el watchdog


clrwdt

NOP

No realiza ninguna operacin


nop

SLEEP

Modo se espera ( dormido )


sleep

LIST P=16F877A

; dispositivo

INCLUDE <P16F877A.INC> ; libreria

ORG 0X2007

; configuracion del PIC

DW 0X3F7A
ORG 0X0000
BSF STATUS,RP0

; direccion inicial ROM


; Bank 1

BCF STATUS,RP1
MOVLW B'00000000'
MOVWF TRISB

; Portb de salida (leds)

MOVLW B'11111111'
MOVWF TRISC

; Portc de entrada (llaves)

BCF STATUS,RP0

; Bank 0

BCF STATUS,RP1

INICIO: MOVLW .63


SUBWF PORTC,W
MOVWF PORTB
GOTO INICIO