Вы находитесь на странице: 1из 5

Prctica No.

Intermitencia (ASM).

Objetivo: Que el alumno realice un pequeo programa de prueba en ensamblador para empezar a
familiarizarse tanto con el software como con el hardware.
Introduccin: Esta prctica ayudar al alumno a familiarizarse con el software Mplab y al utilizar el
simulador le ayudar a entender como funciona la arquitectura del microcontrolador. En el
simulador(MPLABSIM) se pueden ver los movimientos en los registros, la memoria de datos, la memoria de
programa, el registro de estado,etc. Se recomienda abrir una ventana con los registros utilizados en el
programa y correr paso a paso la simulacin. Adems aprender como realizar la conexin bsica del
microcontrolador para que funcione correctamente.
El programa funciona de la siguiente manera:
Al energizar el sistema, el led conectado en el pin RB0 encender por algunos milisegundos y despus se
apagar y durar el mismo tiempo apagado que encendido. Este ciclo se repetir indefinidamente. Al
presionar el pushbotton conectado al pin MCLR el microcontrolador se reinicia, es decir volver a comenzar
desde el principio.
Esta prctica se correlaciona con el Tema 2.1 de la Unidad 2.
Material y Equipo utilizado:
1 Microcontrolador PIC16F874
1 Cristal 4 Mhz
2 Capacitores de 22pf o 15pf
2 Leds
1 Resistencia de 10 Kohms
2 Resistencia de 220 ohms
1 Push Button
1 Fuente de +5 VDC (Opcional: 1 Pila Cuadrada de +9Vdc, 1 Reg. 7805)
------------------------------------1 Software de MPLAB
1 Grabador de Pics
Metodologa:
1- Utilice el software MPLAB para editar el programa intermitencia.asm que se muestra mas
adelante.
2- Enamble, Simule y entienda el funcionamiento del programa.
3- Grabe el archivo (.HEX obtenido al ensamblar) en el PIC
NOTA: En este primer ejemplo se utiliza la librera para el PIC 16F874 es necesario poner entonces
las siguientes directivas:
LIST P=PIC16F874
#include p16f874.inc
Pero si usted esta utilizando otro microcontrolador ejemplo el PIC 18F4455 entonces la librera
cambiaria as:
LIST P=PIC18F4455
#include p18f4455.inc
Si su programador no cuenta con la opcin de poner la palabra de configuracin , entonces es
necesario agregar la configuracin por software con la directiva (__config) de la siguiente forma:
LIST P=PIC16F874
#include p16f874.inc
__config _XT_OSC & _PWRTE_OFF & _WDT_OFF & _CP_OFF & _LVP_OFF & _WRT_ENABLE_OFF

20

Para el PIC18F4455 se utiliza la directiva (CONFIG) de la siguiente forma:


LIST P=PIC18F4455
#include p18f4455.inc
CONFIG FOSC = XT_XT,PWRT = OFF, WDT = OFF, LVP=OFF
Observe que en esta configuracin se selecciona la oscilacin XT porque el cristal a utilizar es de 4
MHZ y todas las opciones estn en OFF.
4- Arme el circuito de acuerdo al diagrama de conexin.
5- Pruebe el buen funcionamiento del programa.
6- Ahora modifique el programa para que realice alguna de las siguientes opciones(el maestro
decidir cual):
a) Cuando prenda el LED en RB0 apague un LED conectado en el pin RC0, realice un retardo de
tiempo y luego prenda el LED en RC0 y apague el LED en RB0, este ciclo lo deber realizar
indefinidamente.
b) Simular las luces de un semforo asignando al pin RB0 un led de color verde, al pin RB1 un led
de color amarillo y al pin RB2 un led de color rojo. Asigne los tiempos de retardo tal como un
semforo real.
c) Dejar al alumno que utilice su creatividad.
d) Dejar que el maestro ponga una opcin diferente a estas.
7- Reporte sus resultados.
Programa fuente:
;**************************************
;* intermitencia.asm
*
;* Este programa configura RB0 como salida
*
;* y genera una intermitencia en dicha salida *
;*
*
;* Rev A: By Ing. Jorge Aguirre
*
;**************************************
;La siguiente configuracin solo se utiliza si usamos alguna librera ejemplo:
LIST P=PIC16F874
#include p16f874.inc
__config _XT_OSC & _PWRTE_OFF & _WDT_OFF & _CP_OFF & _LVP_OFF & _WRT_ENABLE_OFF

CUENTA1

EQU

20H

CUENTA2

EQU

21H

F
w

EQU
EQU

ORG 00H
BSF STATUS,5
BCF TRISB,0
BCF STATUS,5
INICIO
BSF PORTB,0

1
0

;las variables que usemos siempre a


;partir de la direccin 20Hh
;Constantes del programa

;Inicia en la direccin 00H de la memoria de programa


;banco 1
;RB0 como salida
;banco 0
;Pone a "1" RB0 (enciende)

21

CALL DELAY
BCF PORTB,0

;Llama a la subrutina de retardo


;Cuando vuelve del retardo pone
;a "0" RB0 (apaga)
;llama a la subrutina de retardo
;cuando vuelve del retardo
;repite el ciclo

CALL DELAY
GOTO INICIO

;=======================
;= DELAY: Subrutina de retardo
=
;= Modifica los siguientes registros: =
;= CUENTA1
=
;= CUENTA2
=
;=======================
;(Conviene hacerse un pequeo resumen de lo que
;hace cada subrutina, puede sernos muy til para
;usarla en otros programas)
;Subrurtina hecha con 2 lazos anidados
DELAY MOVLW

0ffH

MOVWF CUENTA1
ACA1 MOVLW 0FFH
MOVWF CUENTA2
ACA

DECFSZ CUENTA2,F
GOTO ACA
DECFSZ CUENTA1,F
GOTO ACA1
RETURN

;Carga el acumulador W con el valor


;de FFH (255 en decimal)
;Mueve el contenido del acumulador
;a CUENTA1
;Carga CUENTA2 con el valor FFH
;Decrementa CUENTA2, guarda el resultado
;en f(CUENTA2), y si es cero se salta la
;siguiente instruccin
;Vuelve a decrementar mientras
;CUENTA2 no sea cero
;Se decrementa CUENTA1 cada vez que
;CUENTA2 llega a cero
;mientras CUENTA1 no llegue a cero recarga
;CUENTA2 y repite el proceso
;retorna al programa principal

;=
=
;= FIN DE LA SUBRUTINA DELAY =
;===========================
END

;Fin del programa

22

Diagrama de conexin:

OUT

+ 5Vdc

Pila

9 Vdc

IN
GND

U2
7805

+5vdc

13
14

sw1
22pf
Y1
4MHZ
C2
+5vdc

22pf

10

R2
D2

2
3
4
5
6
7
8
9

MCLR
OSC1
OSC2

RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0

RA0/AN0
RA1/AN1
RA2/AN2
RA3/AN3
RA4
RA5/AN4
RE0/AN5
RE1/AN6
RE2/AN7
RC0
RC1
RC2
RC3
RC4
RC5
RC6
RC7

RD7
RD6
RD5
RD4
RD3
RD2
RD1
RD0

40
39
38
37
36
35
34
33

R1

D1

220

LED

30
29
28
27
22
21
20
19

VSS

220

15
16
17
18
23
24
25
26

VDD

11,32

R1
10k

S1

C1

+5vdc

12,31

U1
PIC16F874

Sugerencias Didcticas:
1.- Por ser el primer programa se le sugiere al maestro de ensamblar y correr el programa de prueba junto con
el alumno en la sala de computo, e ir explicando los pasos requeridos en el MPLAB para editar un
programa, realizar un proyecto(projet), ensamblar(MPASM) y simular (MPLABSIM). Aproveche para
ensear al alumno el ambiente del MPLAB as como algunas opciones del MPLABSIM.
2.- Formar equipos de trabajo.
3.- Estimular al alumno al desarrollo de su pensamiento lgico y creativo.
4.- Propiciar la investigacin.
5.- Estimular la participacin en las prcticas.
Reporte del Alumno (Resultados):
1.- El diagrama de flujo.
2.- El diagrama de conexin.
3.- El programa fuente obtenido.
4.- Conclusiones del Equipo.

23

Bibliografa Preliminar:
[1] Microchip Technology Inc., PIC16F873/874/876/877 Data Sheet, 2003
[2] Microchip Technology Inc., PIC18F2455/2550/4455/4550 Data Sheet, 2009
[3] Tpicos del Help en el MPLAB(MPLAB-IDE, MPLAB- Editor, MPLAB-SIM)
[4] E. Martn Cuenca. Microcontroladores PIC. Diseo prctico de aplicaciones Ed. Mc. Graw Hill
[5] Apuntes del Maestro.
[6] http://www.microchip.com

24

Вам также может понравиться