Ing. Electrónica

Páginas: 8 (1904 palabras) Publicado: 6 de marzo de 2013
Zapper
OBJETIVOS:
El objetivo del primer trabajo del laboratorio es realizar un programa en lenguaje ensamblador para el PIC 16F877A con el objetivo de emitir pulsos con frecuencia controlable entre 30KHz y 50 KHz. Este PIC además tendrá 3 entradas, las cuales realizarán diferentes funciones. La entrada RB0 tiene la función de activar y desactivar el toda la función. La segunda entrada es RB4la cual subirá la frecuencia de los pulsos enviados por cada flanco de subida. La tercera y última entrada es RB5, que de manera contraria, disminuye la frecuencia de los pulsos enviados por cada flanco de subida. El PIC tiene dos salidas. La primera es RD0, la cual indica si la función del PIC está activada o no. Finalmente, la salida desde donde se originan los pulsos, es RD1. El circuito parapoder simular el Zapper en ISIS se muestra a continuación.

Fig. 1: Circuito para simular el Zapper
DESARROLLO:
Para poder realizar esta aplicación se utilizó el simulador y ensamblador MPLAB y el simulador ISIS de Proteus. Para poder realizar la simulación, se diseñaron varios diagramas de flujo, cada uno con una función en especial. Se diseñaron diagramas de flujo para el PROGRAMA PRINCIPAL,DELAY, INTERRUPCION, INTERRUPCION INTONOFF e INTERRUPCION INTCAMBIO. Los diagramas de flujo se muestran a continuación.
DIAGRAMA DE FLUJO PARA EL PROGRAMA PRINCIPAL

INICIO

DECLARAR VARIABLES
REGTIMER
CONTA1
REGISTRO
REG2
REGONOFF

HABILITAR INTERRUPCIONES
GIE = 1
RBIE = 1
INTE = 1
T0IE = 1

PORTA SALIDA
PORTB ENTRADA
REGTIMER = .211
REGONOFF = 0x00
REGISTRO = PORTB¿REGONOFF,0 = 0?
SI

RD0 = 0

DIAGRAMA DE FLUJO DE LA INTERRUPCION
INICIO INTERRUPCION

GUARGAR W, STATUS, PCLATH

INT_ONOFF
¿INTF0 = 0?

INT_CAMBIO
¿RBIF = 0?

INT_TMR0
¿T0IF = 0?

RECUPERA W, STATUS, PCLATH

SALIR INTERRUPCION

DIAGRAMA DE FLUJO DE LA INTERRUPCION INT_ONOFF
INICIO INT_ONOFF

SI
¿REGONOFF = 0?

CONTA1 = REGTIMER
CONTA1 = REGTIMER

INTF = 0

SALIRINT_ONOFF

DIAGRAMA DE FLUJO DE LA INTERRUPCION INT_CAMBIO (FRECUENCIA)
SALIR INT_ONOFF
¿RD0 = 0?
REG2 = PORTB XOR REGISTRO
¿REG2,4 = 1?
¿RB4 = 1?
¿REG2,5 = 1?
¿RB4 = 1?
¿REGTIMER = .170?
¿REGTIMER = .211?
REGTIMER = REGTIMER – 1
REGTIMER = REGTIMER + 1

SI
SI
SI
SI
SI
SI
SI

REGISTRO = PORTB

RBIF = 0

SALIR INT_CAMBIO

DIAGRAMA DE FLUJO DE LA INTERRUPCION DEINT_TMR0
INICIO INT_TMR0

SI
¿RDO = 0?

SI
¿RD1 = 0?

CONTA1 = REGTIMER
CONTA1 = REGTIMER

TMR0 = REGTIMER

T0IF = 0

SALIR INT_TMR0

A partir del diagrama de flujo se procedió a realizar el programa en lenguaje ensamblador. Este programa se muestra a continuación.
list p=16f877A ; list directive to define processor
#include <p16f877A.inc> ; processor specific variabledefinitions

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _HS_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF

;***** VARIABLE DEFINITIONS
w_temp EQU 0x7D ; variable used for context saving
status_temp EQU 0x7E ; variable used for context saving
pclath_temp EQU 0x7F ; variable used for context saving
REGTIMER EQU 0x20 ; VARIABLE QUE GUARDA EL TIEMPO DELCONTADOR
CONTA1 EQU 0x21 ; VARIABLE DEL CONTADOR\
REGISTRO EQU 0x22 ; REGISTRO PARA EL PORTB ANTERIOR
REG2 EQU 0x23 ; REGSITRO PARA LA COMPARACION
REGONOFF EQU 0x24 ; REGISTRO PARA DE ENCENDIDO Y APAGADO

;**********************************************************************
ORG 0x000 ; processor reset vector

nop ; nop required for icd
goto main; go to beginning of program

ORG 0x004 ; interrupt vector location

movwfw_temp ; save off current W register contents
movf STATUS,w ; move status register into W register
movwf status_temp ; save off contents of STATUS register
movf PCLATH,w ; move pclath register into w register
movwf pclath_temp ; save off contents of PCLATH...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Ing. Electronica
  • Ing. Electronico
  • Ing. Electronico
  • ING. ELECTRONICO
  • Ing. en electrónica
  • Ing. electronico
  • Ing. electronico
  • Ing. Electronica

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS