Instituto Politécnico Nacional Unidad Profesional Interdisciplinaria de Biotecnología
Instituto Politécnico Nacional Unidad Profesional Interdisciplinaria de Biotecnología
Instituto Politécnico Nacional Unidad Profesional Interdisciplinaria de Biotecnología
Grupo: 4MV3
Equipo: 2
Integrantes:
➢ Hernandez Cedillo Rey David
➢ Lujano Paez Angela Monserrat
➢ Martinez Garcia Jair Eduardo
➢ Morales Linares Ignacio Enrique
Profesores:
➢M. en C. Alejandro Florencio Ramírez.
➢M. en C. Andrés Francisco Morín Sánchez
;====================================================================
; CONSTANTES Y ASIGNACIONES
;====================================================================
#DEFINE OPT_INIC B'10000111' ; PULLUP_ON, TIMERO<<PRESCAL_1:2
#DEFINE OSC_INIC B'01011000' ; PLL HABILITADO, Fosc=32MHz B'01011000'
#DEFINE ANA_INIA B'00000000' ;
#DEFINE ANA_INIB B'00000001' ;
#DEFINE IO_A B'11111111' ;
#DEFINE IO_B B'00111111' ;
#DEFINE IOCBP_ON B'00000010' ; HABILITACIÓN INTERRUPCION PARA FLANCO DE SUBIDA
#DEFINE IOCBN_ON B'00000010' ; HABILITACIÓN INTERRUPCION PARA FLANCO DE SUBIDA
;====================================================================
; VARIABLES
;====================================================================
PTRNUM EQU H'20'
FLAGSA EQU H'21'
CNTB0 EQU H'22'
CNTB1 EQU H'23'
CONTA EQU H'24'
TIME EQU H'25'
TIM1 EQU H'26'
TIM2 EQU H'27'
TIM3 EQU H'28'
TIM4 EQU H'29'
CNT1 EQU H'2A'
SIG EQU H'2B'
ORG 0x0004
INTSEL: BCF INTCON,GIE
BCF INTCON,PEIE
BTFSS INTCON,INTF
GOTO __IOC
BCF INTCON,INTF
INCF PTRNUM
MOVF PTRNUM,W
SUBLW H'06'
BTFSS STATUS,Z
GOTO FIN_INT
MOVLW H'01'
MOVWF PTRNUM
GOTO FIN_INT
NO_INT: RESET
; Sección de inicialización
INIC: MOVLB H'00' ; SELECCIONA BANCO CERO
CLRF PORTA
CLRF PORTB
MOVLB H'02' ; SELECCIONA BANCO DOS
CLRF (LATA&0x7F)
CLRF (LATB&0x7F)
MOVLB H'03' ; SELECCIONA BANCO TRES
MOVLW ANA_INIA
MOVWF (ANSELA&0x7F)
MOVLW ANA_INIB
MOVWF (ANSELB&0x7F)
MOVLB H'01' ; SELECCIONA BANCO UNO
MOVLW IO_A
MOVWF (TRISA&0x7F) ; PUERTO A COMO ENTRADAS
MOVLW IO_B
MOVWF (TRISB&0x7F) ; PUERTO B COMO SALIDAS
MOVLW OPT_INIC
MOVWF (OPTION_REG&0x7F) ; INICIALIZACION DEL REGISTRO DE OPCIONES
MOVLW OSC_INIC
MOVWF (OSCCON&0x7F) ; INICIALIZACIÓN DEL OSCILADOR INTERNO
BSF PIE1,TMR1IE
MOVLB H'07' ; SELECCIONA BANCO SIETE
MOVLW IOCBN_ON
MOVWF (IOCBN&0x7F)
MOVLW IOCBP_ON
MOVWF (IOCBP&0x7F)
MOVLB H'00' ; SELECCIONA BANCO CERO
BCF INTCON,TMR0IF
;MOVLW H'9E'
;MOVWF TMR0
MOVLW H'02'
MOVWF TIM1
MOVLW H'02'
MOVWF TIME
MOVLW H'09'
MOVWF TIM2
MOVLW H'13'
MOVWF TIM3
MOVLW H'27'
MOVWF TIM4
MOVLW H'01'
MOVWF PTRNUM
BSF INTCON,IOCIE
BSF INTCON,INTE
BSF INTCON,PEIE ;HABILITA INTERRUPCIÓN DE PERIFÉRICO
BSF INTCON,GIE ; HABILITA INTERRUPCIONES
MOVLW B'00100001'
MOVWF T1CON
MOVLW B'10000011'
MOVWF TMR1L
MOVLW B'11111111'
MOVWF TMR1H
MOVLW H'01'
MOVWF SIG
GOTO DISPLAY
; Tablas y subrrutinas
NUMEROS: MOVF PTRNUM,w
ANDLW H'0F'
BRW
RETLW B'00111111' ; numero 0
RETLW B'00000001' ; numero 1
RETLW B'00000010' ; numero 2
RETLW B'00000011' ; numero 3
RETLW B'00000100' ; numero 4
RETLW B'00000101' ; numero 5
;================================================================
;RUTINA PARA EL MANEJO DEL DISPLAY
DISPLAY: CALL NUMEROS
;MOVWF PORTB
MOVWF CONTA
MOVF CONTA,W
SUBLW H'01'
BTFSC STATUS,Z
GOTO CUARTOS
MOVF CONTA,W
SUBLW H'02'
BTFSC STATUS,Z
GOTO MEDIOS
MOVF CONTA,W
SUBLW H'03'
BTFSC STATUS,Z
GOTO ENTERO
MOVF CONTA,W
SUBLW H'04'
BTFSC STATUS,Z
GOTO BLANCAS
MOVF CONTA,W
SUBLW H'05'
BTFSC STATUS,Z
GOTO REDONDAS
GOTO MAIN20
Código en C
#include <16f1827.h>
#fuses xt,nowdt
//#USE delay (crystal=4Mhz)
#use delay(INTERNAL= 125000)
#use standard_io(B)
void TIMER1_isr(void){
if((input(pin_b0)==0)&&j<64)j*=2;
if((input(pin_b2)==0)&&j>2)j/=2;
n=j;
n=150*(n);
output_low(pin_b1);
for(unsigned int16 i=0;i<n;i++)
set_timer1(63583);
}
void main(){
set_tris_b(0b00000101);
output_b(0);
setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);
set_timer1(63583);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
while(TRUE)
{
output_toggle(pin_b1);
}
}
Simulacion