0% encontró este documento útil (0 votos)
72 vistas5 páginas

Práctica PIC16F877A: Retardos y LEDs

Cargado por

Wester Paniura
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
72 vistas5 páginas

Práctica PIC16F877A: Retardos y LEDs

Cargado por

Wester Paniura
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

MICROCONTROLADORES

Práctica de Laboratorio

RETARDOS

Esquema:

Materiales e instrumentos:
 Multímetro
 Fuente de alimentación 12Vdc
 1 Resistencia 10K , 1/4 W
 8 Resistencia 470 , 1/4 W
 8 Diodos leds
 1 Regulador 7805
 1 Pulsador
 2 Condensadores electrolíticos 10uF / 16Vdc
 1 Condesador de 100nF / 50Vdc
 2 Condensadores 27pF
 1 cristal de 4MHz
 1 PIC16F877A
 Protoboard
 Cables para protoboard
 Grabador de PICs

TECNICOS INDUSTRIALES - ELECTRÓNICA ING. WESTER PANIURA


1
MICROCONTROLADORES

Proceso de ejecución:

1. Escriba y compile el programa para el pic16F877A en el compilador MPLAB X 6.05.


2. Una vez obtenido el archivo hexadecimal *.hex, grábelo en el PIC16F877A
3. Montar circuito según esquema.
4. Conectar circuito a la fuente DC y medir con el multímetro el valor a la salida del
7805
5. La salida de 5 voltios del regulador 7805 alimente el circuito del pic16F877A
6. Observe el desplazamiento de los leds

Conclusiones:
…………………………………………………………………………………………… ………
………………………………………………………………………………………….. … …. ..

Complementos:
1. Describir el concepto y las especificaciones técnicas del regulador 7805.

2. Que funcion cumple el comando DECFSZ

3. Que funcion cumple el comando CALL

4. Que funcion cumple el comando RETURN

5. Que función tiene el retardo

6. Con que valores se podría tener aprox 1 seg

OBTENCIÓN DEL RETARDO POR SOFTWARE

Tretardo = (3)*(CI)*(CONTAD1*CONTAD2*CONTAD3)
Tretardo = (3)*(0.000001)*(16*96*112)

El número 3 se debe a la suma de los ciclos de máquina de:


DECFSZ = 1 ciclo de maquina
GOTO = 2 ciclos de maquina

CI(ciclo de instruccion) o ciclo de maquina = 4 pulsos de reloj


Asi para Xtal = 4MHz entonces:
1 pulso de reloj = 1/4000000 = 250ns

 1 CI = 4 * 1 pulso de reloj = 1us = 0.000001

Tretardo = (3)*(0.000001)*(16*96*112)
 Tretardo = 0.516096 seg aprox

TECNICOS INDUSTRIALES - ELECTRÓNICA ING. WESTER PANIURA


2
MICROCONTROLADORES

Nota: En la formula aplicada no se considera el retardo en las instrucciones DECFSZ del


2do y 3er bucle y las instrucciones MOVLW Y MOVWF

TECNICOS INDUSTRIALES - ELECTRÓNICA ING. WESTER PANIURA


3
MICROCONTROLADORES

;**********************************************************************
;PROGRAMA DE ENCENDIDO DE LEDS DE DERECHA A IZQUIERDA Y VICEVERSA POR
;EL PUERTO PB USANDO UN RETARDO de 0.5seg PARA APRECIAR LA SECUENCIA
;**********************************************************************

PROCESSOR 16F877A
; PIC16F877A Configuration Bit Settings
; Assembly source line config statements
; CONFIG
CONFIG FOSC = HS ; Oscillator Selection bits (HS oscillator)
CONFIG WDTE = OFF ; Watchdog Timer Enable bit (WDT disabled)
CONFIG PWRTE = ON ; Power-up Timer Enable bit (PWRT enabled)
CONFIG BOREN = ON ; Brown-out Reset Enable bit (BOR enabled)
CONFIG LVP = ON ; Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit
;(RB3/PGM pin has PGM function; low-voltage programming enabled)
CONFIG CPD = OFF ; Data EEPROM Memory Code Protection bit (Data EEPROM code
;protection off)
CONFIG WRT = OFF ; Flash Program Memory Write Enable bits (Write protection off; all program
;memory may be written to by EECON control)
CONFIG CP = ON ; Flash Program Memory Code Protection bit (All program memory code-
;protected)

// config statements should precede project file includes.


#include <[Link]>

CONTAD1 EQU 20h ; creo variable CONTAD1 en la direccion 20H de la RAM


CONTAD2 EQU 21h ; creo variable CONTAD2 en la direccion 21H de la RAM
CONTAD3 EQU 22h ; creo variable CONTAD3 en la direccion 22H de la RAM
;---------------------------------------------------------------------
PSECT principal, class=code, delta=2, abs

ORG 0 ; posiciono en direccion de programa 00h


GOTO INICIO ; salto a etiqueta INICIO
ORG 5 ; posiciono en direccion de programa 05h
INICIO:
BSF STATUS,0X5 ; pongo a 1 el bit RP0 del STATUS para ir al banco 1
CLRF TRISB ; pongo a cero el valor del registro TRISB sean de salida
BCF STATUS,0X5 ; pongo a 0 el bit RP0 del STATUS para ir al banco 0
CLRF PORTB ; pongo a cero el valor del PORTB

IZQUIERDA:
BSF STATUS,0X0 ; poner a 1 el bit CARRY del STATUS
RLF PORTB,F ; desplaza a la izquierda el PORTB, F=1 guardar en PORTB
CALL RETARDO ; llamo rutina RETARDO
BTFSS PORTB,7 ; senso el bit 7 del PORTB y salto si es 1
GOTO IZQUIERDA ; si es 0 el bit 7 del PORTB, salto a IZQUIERDA para seguir desplazando
MOVLW 0 ; si es 1 el bit 7 del PORTB, cargo W = 0
MOVWF PORTB ; cargo el PORTB con el valor de W=0

DERECHA:
BSF STATUS,0X0 ; poner a 1 el bit CARRY del STATUS
RRF PORTB,F ; desplaza a la derecha el PORTB, F=1 guardar en PORTB
CALL RETARDO ; llamo rutina RETARDO
BTFSS PORTB,0 ; senso el bit 0 del PORTB y salto si es 1
GOTO DERECHA ; si es 0 el bit 0 del PORTB, salto a DERECHA para seguir desplazando
MOVLW 0 ; si es 1 el bit 0 del PORTB, cargo W = 0
MOVWF PORTB ; cargo el PORTB con el valor de W=0
GOTO IZQUIERDA ; salto a IZQUIERDA para empezar de nuevo
;**********************************************************************
; RUTINA DE RETARDO
;**********************************************************************

TECNICOS INDUSTRIALES - ELECTRÓNICA ING. WESTER PANIURA


4
MICROCONTROLADORES

RETARDO:
MOVLW 70h ; cargo W con el valor 70H = 112
MOVWF CONTAD3 ; cargo la variable CONTAD3 con el valor almacenado en W
BUCLE3:
MOVLW 60h ; cargo W con el valor 60H = 96
MOVWF CONTAD2 ; cargo la variable CONTAD2 con el valor almacenado en W
BUCLE2:
MOVLW 10h ; cargo W con el valor 10H = 16
MOVWF CONTAD1 ; cargo la variable CONTAD1 con el valor almacenado en W
BUCLE1:
DECFSZ CONTAD1,1 ; decrementa CONTAD1 y salta si es cero, 1 almacenar en CONTAD1
GOTO BUCLE1 ; salto a BUCLE1
DECFSZ CONTAD2,1 ; decrementa CONTAD2 y salta si es cero, 1 almacenar en CONTAD2
GOTO BUCLE2 ; salto a BUCLE2
DECFSZ CONTAD3,1 ; decrementa CONTAD3 y salta si es cero, 1 almacenar en CONTAD3
GOTO BUCLE3 ; salto a BUCLE3
RETURN ; retorno de la subrutina RETARDO

END

TECNICOS INDUSTRIALES - ELECTRÓNICA ING. WESTER PANIURA


5

También podría gustarte