You are on page 1of 10

Ejercicios modificados

Juego de luces, las luces se cruzan de lado a lado


1) Abra el programa MPLab luego seleccione Proyect > Wizard

2)
Presione siguiente

3) De la ventana desplegable seleccione el microcontrolador 16F84A y


presione Siguiente.

4) Con el botn de BROWSE seleccione su directorio de trabajo

5) Luego damos click en siguiente, luego en finalizar.

6) Luego en Untitled, realizamos el siguiente programa


LIST

P=16F84A,

; usar PIC 16F84A

#include <p16f84A.inc>
__CONFIG _CP_OFF&_PWRTE_ON&_WDT_OFF&_XT_OSC
protec
off
; power up timer
on
; watchdog
off
; osc
XT

; code

PDel0 equ 0C
PDel1 equ 0D
; el efecto que se busca es de dos luces que parten de los extremos
expuestos y se muevan
; de lado a lado.
SEC1
SEC2
SEC3
SEC4

equ
equ
equ
equ

B'10000001'
B'01000010'
B'00100100'
B'00011000'

; se podri haber seguido con


; SEC5 equ B'00100100' pero es igual a SEC3 y asi para los demas
; por lo que se invierte la secuencia SEC3, SEC2, SEC1

ORG 0
BSF STATUS,5
MOVLW
B'00000'
MOVWF
TRISA
MOVLW
B'00000000'
MOVWF
TRISB
BCF STATUS,5

; activa la pagina 1
; carga 00000 en W
; puerto a todos salidas
; carga 00000000 en W
; puerto b todos salidaS
; volvemos a la pagina 0

CLRF PORTB

; ponemos a cero el puerto

INICIO

; etiqueta

REPETIR
MOVLW
SEC1
MOVWF
PORTB
CALL DEMORA

; carga el valor de SEC1 en W


; carga w en el puerto b
; demora de 100ms

MOVLW
SEC2
MOVWF
PORTB
CALL DEMORA

; carga el valor de SEC2 en W


; carga w en el puerto b
; demora de 100ms

MOVLW
SEC3
MOVWF
PORTB
CALL DEMORA

; carga el valor de SEC3 en W


; carga w en el puerto b
; demora de 100ms

MOVLW
SEC4
MOVWF
PORTB
CALL DEMORA
MOVLW
SEC3
MOVWF
PORTB
puerto b
CALL DEMORA

; carga el valor de SEC4 en W


; carga w en el puerto b
; demora de 100ms
; carga el valor de SEC3 en W
; carga w en el
; demora de 100ms

MOVLW
SEC2
MOVWF
PORTB
CALL DEMORA

; carga el valor de SEC2 en W


; carga w en el puerto b
; demora de 100ms

MOVLW
SEC1
MOVWF
PORTB
CALL DEMORA

; carga el valor de SEC1 en W


; carga w en el puerto b
; demora de 100ms

GOTOINICIO

; va a inicio

;------------------------------------------------------------; La demora a sido generada con el programa PDEL


; Descripcion: Delay 100000 ciclos - 100 ms
;------------------------------------------------------------DEMORA movlw .110
; 1 set numero de repeticion (B)
movwf PDel0 ; 1 |
PLoop1 movlw .181
; 1 set numero de repeticion (A)
movwf PDel1 ; 1 |
PLoop2 clrwdt
; 1 clear watchdog
clrwdt
; 1 ciclo delay
decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto
PLoop2 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (B)
goto
PLoop1 ; 2 no, loop
PDelL1 goto PDelL2
; 2 ciclos delay
PDelL2 goto PDelL3
; 2 ciclos delay
PDelL3 clrwdt
; 1 ciclo delay
return
; 2+2 Fin.
;------------------------------------------------------------END

; fin de programa

7) Luego damos click en file -> save as y guardamos el archivo como


ejercicio1.asm.

8) Este archivo no est guardado en la carpeta source le damos click


derecho en source files -> add file escogemos el archivo que habamos
creado y le damos click en abrir.

9) Ahora tendremos el archivo .asm en la carpeta Source Files, luego le


damos click en Proyect > Build all y despues hacemos click en Absolute.

10)Luego al compilarlo tenemos luego en la opcin debugger->select tool


escojamos 4mplab sim en la cual estar la opcin step into, steap over,
run, anmate.
11) Luego clickeamos en view-> special function registers y nos saldr una
ventana en la cual con la opcin animate probaremos las instrucciones.

Simulacion en Proteus
1) Abrimos proteus isis opcin P y en keywords buscamos 16F84A(pic),
CAP(condensadores), CRYSTAL, LED(blue), RES(recistencias)

2) Realizamos el modelo seleccionando el pic y los componentes


requeridos.

3) Una vez terminado cargamos el archivo .asm y damos click en Run The
Simulation.

You might also like