Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
SAN AGUSTN
LABORATORIO DE MICROCONTROLADORES Y
MICROPROGRAMACIN
LABORATORIO N 3
Tema: PROGRAMACIN EN MPASM
PLANTEAMIENTO
En el siguiente diagrama
Switch
uC LED
Switch
SOLUCIN
Inicio
Declaracin de variables
Configuracin de puertos
Configuracin de TIMER1 y CCP1
Configuracin de interrupciones
Detectar la fuente de la interrupcin
Si la interrupcin proviene de CCP1, realizar el toggle para el LED
Si la interrupcin proviene de PORTA, detectar en estado de RA 0 - RA1
Si RA0 - RA1 es 00, cargar CCP1 con valor necesario para ON
Si RA0 - RA1 es 01, cargar CCP1 con valor necesario para Secuencia 1
Si RA0 - RA1 es 10, cargar CCP1 con valor necesario para Secuencia 2
Si RA0 - RA1 es 11, cargar CCP1 con valor necesario para OFF
Fin
DIAGRAMA DE FLUJO
INICIO
1
Variables:
comp No
sis_flag RA0=0 3
sis_flag
Si
Conf. Puerto A
Como E/S digitales
2
Conf. Puerto A
Como salida RA0 RA1
00 01 10
Conf. TIMER1 como
comparador
4 5 6 7
Conf. CCP1 como
comparador
4 5
Activar interrup:
Generales, de
perifricos y de Cargar en Cargar en
PORTA CCPR1H-CCPR1L CCPR1H-CCPR1L
Valor para Valor para
generar pulso ON generar pulso de
i 1
3
3 3
No
Interrupci
Si 7
6
CCP1
Cargar en OFF
CCPR1H-CCPR1L
Valor para generar
1 2 pulso de secuencia 1
2
3
ESQUEMTICO
PROGRAMA
;****************************************************************
; File: variador.asm
;{ -> Required: P16F877A.INC
;
;-----------------------------------------------------------------
; System: Laboratorio de Microcontroladores y Microprogramacin
; Component name: Laboratorio 4
; TEMA: PROGRAMACIN CON PIC
;-----------------------------------------------------------------
; Languaje: MPASM
;-----------------------------------------------------------------
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Autores: Ancalla, Arce, Ramirez
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Descripcin:
; Vara la frecuencia de parpadeo de un LED de acuerdo a dos
; pulsadores A y B
;
; A B T
; 0 0 ON
; 0 1 Secuencia 1
; 1 0 Secuencia 2
; 1 1 OFF
;
;----------------------------------------------------------------
; Limitaciones:
; Usa cristal de 4000000 Hz
;----------------------------------------------------------------
; FOREGROUND:
; Tacom_med
; Overf_tmr0
; Pid_pwm
;----------------------------------------------------------------
; Procedimientos:
;
;----------------------------------------------------------------
; BACKGROUND:
;
;
;
;----------------------------------------------------------------
; Pin asignados: empaquetado 40-Pin PDIP
;
; Pin RA0 Switch A Genera interrupcin
; Pin RA1 Switch B Genera interrupcin
; Pin RA5 LED
;
;----
; Modulos usados: {Modo}, <Interrrupciones>:
; TMR1 {timer_CCP1}
; CCP1 Intervalo de tiempo de 0.5segundos
;
;
;}
;*-*-*--**-----*--**-*-**-*-***-*-*-***************************************
;===================================
;Declaracin de variables
UDATA
comp RES 1
sis_flag RES 1
;===================================
CODE 0X00
GOTO INICIO
ORG 0X04
INTERRUPCCION
;IDT Tabla de interrupciones, verifica si la interrupcin proviene
;de TMR1 o de la puerta A
BTFSC PIR1,CCP1IF ;Verifica si la interrupcin procede de CCP1
GOTO Toggle ;Si es as llama al procedimiento Toggle
BTFSC INTCON,RBIF ;Verifica si la interrupcin procede de PORTA
GOTO Boton ;Si es as, llama al procedimiento Boton
RETFIE ;Retorna si no hay interrupcin
INICIO
;Configuracin de puertos
MOVLW A'00110000'
; --11---- Configuramos RA0-RA1 como entradas
;
BANKSEL TRISA ;Seleccionamos banco del registro TRISA
MOVWF TRISB ;Cargamos configuracin a TRISA
MOVLW b'00000000'
; -------0 Configuramos RA5 como salida
BANKSEL TRISA ;Seleccionamos banco de TRISA
MOVWF TRISA ;Cargamos la configuracin a TRISA
CLRF STATUS ;Banco 0
;===================================================================
;Configuracion del timer1
MOVLW A'00010001'
; --01---- T1CKPS1:T1CKPS0:11 = 1:2 Prescale value
; ----0--- T1OSCEN: Timer1 Oscillator Enable Control bit 1 = Oscillator is
enabled
; -----0-- T1SYNC: Timer1 0 = Synchronize external clock input
; ------0- TMR1CS: Timer1 Clock Source Select bit 1 = External clock
; -------1 TMR1ON: Timer1 On bit
MOVWF T1CON
CLRF TMR1L ;Limpiamos el TIMER1
CLRF TMR1H
;Configuracion de modulos CCP1
CLRF CCPR1L ;Limpiamos CCPR1L
MOVLW 0XFF
MOVWF CCPR1H ;Cargamos CCPR1H con 0xFF
MOVLW A'00001011'
; ----1011 CCPxM3:CCPxM0:1011 = Compare mode
MOVWF CCP1CON
;==================================================================
BANKSEL PIE1
BSF PIE1,CCP1IE
; Configuracin de interrupciones
MOVLW B'11001000'
; 1------ Activamos las interrupciones generales GIE=1
; -1----- Activamos interrupciones de perifricos
; ----1--- Activamos las interrupciones de puerto B RBIE=1
MOVWF INTCON ;Cargamos la configuracin
Background
GOTO Background ;Bucle infinito
END
CONCLUSIONES
Para la implementacin fsica de un circuito con PIC debemos conocer con mucha precisin
el hardware del que dispone el PIC, en este caso especfico, el PIC 16F877.
El programa Proteus conjuntamente con MPLAB, nos permite simular nuestros circuitos sin
la necesidad de quemar el PIC, lo cual nos ahorra tiempo en el desarrollo de nuestros
proyectos.
BIBLIOGRAFA