Documente Academic
Documente Profesional
Documente Cultură
LABORATORIO DE MICROCONTROLADORES
PARALELO # 6
2. DIAGRAMA DE BLOQUES
BOTN EMPEZAR
PIC16F887
AUMENTAR UNIDADES
AUMENTAR DECENAS
DISMINUIR UNIDADES
DISMINUIR DECENAS
EMPEZAR
CONTU1++ CONTU2++
CONTD1++ CONTD2++
CONTU1 CONTU2--
CONTD1 CONTD2--
DISMINUIR1=1
CONTU1=10 OR CONTU2=10
CONTD1=10 OR CONTD2=10
CONTU1=255 OR CONTU2=255
CONTD1=255 OR CONTD2=255
PLAYER1
PLAYER2
CEROU
CEROD
NUEVEU
NUEVED
DISMINUR1=0 DISMINUIR2=1
DISMINUIR1=1 DISMINUIR2=0
CEROU
CEROD
NUEVEU
NUEVED
CONTU1=0 CONTU2=0
CONTD1=0 CONTD2=0
CONTU1=0X09 CONTU2=0X09
CONTD1=0X09 CONTD2=0X09
RETURN
RETURN
RETURN
RETURN
INTERRUPT
SEL=0
W=CONTU1
W=CONTU1
BINARIOA7SEG
CONT1--
BINARIOA7SEG
CONT1=0
RETFIE
W=CONTU2
DISMINUIR1
DISMINUIR2
RETFIE
W=CONTU2
BINARIOA7SEG
CONTU1--
CONTU2--
BINARIOA7SEG
CONTU1=0XFF
CONTU2=0XFF
RETFIE
DECD1
DECD2
RETFIE
DECD1
DECD2
NUEVEDEC1
NUEVEDEC2
CONTU1=0X09 CONTD1--
CONTU2=0X09 COND2--
CONTD1=0X09
CONTD2=0X09
CONTD1=0XFF
RETURN
CONTD2=0XFF
RETURN
RETURN
RETURN
NUEVEDEC1
NUEVEDEC2
BINARIOA7SEG
PCL=PCL+W
W=0
W=0X3F
W=1
W=0X06
W=2
W=0X5B
W=3
W=0X4F
W=4
W=0X66
W=5
W=0X6D
W=6
W=0X7D
W=7
W=0X07
W=8
W=0X7F
W=0X67
RETURN
4. DESCRIPCIN DEL ALGORITMO 4.1. Configuracin inicial y seteo de puertos. 4.2. Aumentar unidades 4.2.1. Contu1++, contu2++ 4.2.2. (Contu1 OR contu2) == 10 4.2.2.1. CEROU 4.2.2.1.1. Contu1 = 0 4.2.2.1.2. Contu2 = 0 4.3. Aumentar decenas 4.3.1. Contd++, contd2++ 4.3.2. (Contd1 OR contd2) == 10 4.3.2.1. CEROD 4.3.2.1.1. Contd1 = 0 4.3.2.1.2. Contd2 = 0 4.4. Disminuir unidades 4.4.1. Contu1--, contu2 4.4.2. (Contu1 OR contu2) == 255 4.4.2.1. NUEVEU 4.4.2.1.1. Contu1 = 9 4.4.2.1.2. Contu2 = 9 4.5. Disminuir decenas 4.5.1. Contd1--, contd2 4.5.2. (Contd1 OR contd2) == 255 4.5.2.1. NUEVED 4.5.2.1.1. Contud1 = 9 4.5.2.1.2. Contud2 = 9 4.6. Empezar 4.6.1. Disminuir1 = 1 4.6.2. Player1 4.6.2.1. Disminuir1 = 0 4.6.2.2. Disminuir2 = 1 4.6.3. Player2 4.6.3.1. Disminuir1 = 1 4.6.3.2. Disminuir2 = 0
INTERRUPT
4.7. Sel == 0 4.7.1. Multiplexacin para mostrar en los 7seg las unidades 4.7.2. Multiplexacin para mostrar en los 7seg las decenas 4.8. TMR0 = 226 4.9. INTCON = 0 4.10. T0IF = 0 4.11. CONT1 4.11.1. RETFIE 4.11.2. DISMINUIR1 4.11.2.1. CONTU1 4.11.2.2. DISMINUIR2
4.11.2.2.1. 4.11.2.2.2.
CONTU2 RETFIE
BINARIOA7SEG 4.12. PCL = PCL + W 4.12.1. W = 0X3F 4.12.2. W = 0X06 4.12.3. W = 0X5B 4.12.4. W = 0X4F 4.12.5. W = 0X66 4.12.6. W = 0X6D 4.12.7. W = 0X7D 4.12.8. W = 0X07 4.12.9. W = 0X7F 4.12.10. W = 0X67 4.12.11. RETURN
;contador unidades player1 ;contador decenas player1 ;contador unidades player2 ;contador decenas player2 ;flag para disminuir tiempo player1 ;flag para disminuir tiempo player2 ;contador para delay 1s
ENDC
MOVF CONTU1,W CALL BINARIOA7SEG BSF PORTA,2 BSF PORTA,3 MOVWF PORTB BCF PORTA,2 MOVF CONTU2,W CALL BINARIOA7SEG
MOVF CONTD1,W CALL BINARIOA7SEG BSF PORTA,2 BSF PORTA,3 MOVWF PORTB BCF PORTA,3 ;COMF SEL1,F MOVF CONTD2,W CALL BINARIOA7SEG BSF PORTA,5 BSF PORTA,4 MOVWF PORTC BCF PORTA,5 COMF SEL,F SEG ;CALL VERIFICAR1 ;CALL VERIFICAR2 MOVLW .226 MOVWF TMR0 BCF INTCON,T0IF DECFSZ CONTIME,1 RETFIE ;BTFSC FLAG1,0 ;RETFIE ;BTFSC FLAG2,0 ;RETFIE BTFSC DISMINUIR1,0 GOTO DISMINUCION1 BTFSC DISMINUIR2,0 GOTO DISMINUCION2 RETFIE
VERIFICAR1
MOVF CONTU1,W XORLW 0X3F BTFSC STATUS,Z GOTO COMPD1 RETURN MOVF CONTD1,W XORLW 0X3F BTFSC STATUS,Z CALL GANA1 ;CLRF PORTD RETURN BSF PORTD,3 BSF FLAG1,0 RETURN MOVF PORTC,W XORLW 0X3F BTFSC STATUS,Z GOTO COMPD2
COMPD1
GANA1
VERIFICAR2
RETURN COMPD2 MOVF CONTD2,W XORLW 0X3F BTFSC STATUS,Z CALL GANA2 ;CLRF PORTD RETURN BSF PORTD,4 BSF FLAG2,0 RETURN
GANA2
INICIO BANKSEL TRISB CLRF TRISB CLRF TRISC MOVLW MOVWF MOVLW MOVWF MOVLW ACTIVADAS, T0IE ACTIVADO MOVWF MOVLW MOVWF BANKSEL CLRF CLRF BANKSEL MOVLW MOVWF BANKSEL MOVLW MOVFW MOVFW CLRF BCF BCF BCF BCF CLRF CLRF CLRF MOVLW MOVWF MOVWF MOVWF MOVWF CLRF CLRF ;START
B'11000011' TRISA B'00000111' TRISD B'10100000' INTCON B'00000111' OPTION_REG ANSEL ANSEL ANSELH PORTB .226 TMR0 PORTB 0XFF PORTB PORTC PORTD PORTA,2 PORTA,3 PORTA,4 PORTA,5 DISMINUIR1 DISMINUIR2 CONTIME 0X09 CONTU1 CONTD1 CONTU2 CONTD2 FLAG1 FLAG2 BTFSS PORTD,0
;INTERRUPCIONES GLOBALES
LOOP1
BTFSS PORTA,6 GOTO PRESAUMENU BTFSS PORTA,7 GOTO PRESDISMU BTFSS PORTA,0
;unidades+ ;unidades;decenas+
GOTO PRESAUMEND BTFSS PORTA,1 GOTO PRESDISMD BTFSS PORTD,0 GOTO PRESEMPEZAR GOTO LOOP1 ;loop para verificar si se presion y solt empezar PRESEMPEZAR BTFSS PORTD,0 GOTO PRESEMPEZAR ;GOTO LOOP BSF DISMINUIR1,0 LOOP BTFSS PORTD,2 GOTO PLAYER2 BTFSS PORTD,1 GOTO PLAYER1 GOTO LOOP BTFSS PORTD,1 GOTO PLAYER1 BSF DISMINUIR2,0 CLRF DISMINUIR1 GOTO LOOP BTFSS PORTD,2 GOTO PLAYER2 BSF DISMINUIR1,0 CLRF DISMINUIR2 GOTO LOOP
;decenas;empezar
PLAYER1
PLAYER2
;loop para verificar si se presion y solt unidadesPRESDISMU BTFSS PORTA,7 GOTO PRESDISMU GOTO BDISMU ;BSF DISMINUIR,0 ;GOTO LOOP1 ;loop para verificar si se presion y solt unidades+ PRESAUMENU BTFSS PORTA,6 GOTO PRESAUMENU GOTO BAUMU ;BCF DISMINUIR,0 GOTO LOOP1 ;loop para verificar si se presion y solt decensasPRESDISMD BTFSS PORTA,1 GOTO PRESDISMD GOTO BDISMD ;BSF DISMINUIR,0 ;GOTO LOOP1 ;loop para verificar si se presion y solt decenas+ PRESAUMEND BTFSS PORTA,0 GOTO PRESAUMEND GOTO BAUMD ;BCF DISMINUIR,0 ;GOTO LOOP1 BDISMU DECF CONTU1,1
DECF CONTU2,1 MOVF CONTU1,W XORLW 0XFF BTFSC STATUS,Z CALL NUEVEU GOTO LOOP1 NUEVEU MOVLW .9 MOVWF CONTU1 MOVWF CONTU2 RETURN
BAUMU INCF CONTU1,1 INCF CONTU2,1 MOVF CONTU1,W XORLW 0X0A BTFSC STATUS,Z CALL CEROU GOTO LOOP1 CEROU CLRF CONTU1 CLRF CONTU2 RETURN DECF CONTD1,1 DECF CONTD2,1 MOVF CONTD1,W XORLW 0XFF BTFSC STATUS,Z CALL NUEVED GOTO LOOP1 MOVLW .9 MOVWF CONTD1 MOVWF CONTD2 RETURN
BDISMD
NUEVED
BAUMD INCF CONTD1,1 INCF CONTD2,1 MOVF CONTU1,W XORLW 0X0A BTFSC STATUS,Z CALL CEROD GOTO LOOP1 CEROD CLRF CONTD1 CLRF CONTD2 RETURN
DISMINUCION1 DECF CONTU1,1 MOVF CONTU1,W XORLW 0XFF BTFSC STATUS,Z CALL DECD1 RETFIE DECD1 MOVLW 0X09
MOVWF CONTU1 DECF CONTD1,1 MOVF CONTD1,W XORLW 0XFF BTFSC STATUS,Z CALL NUEVEDEC1 RETURN NUEVEDEC1 MOVLW 0X09 MOVWF CONTD1 RETURN
DISMINUCION2 DECF CONTU2,1 MOVF CONTU2,W XORLW 0XFF BTFSC STATUS,Z CALL DECD2 RETFIE DECD2 MOVLW 0X09 MOVWF CONTU2 DECF CONTD2,1 MOVF CONTD2,W XORLW 0XFF BTFSC STATUS,Z CALL NUEVEDEC2 RETURN MOVLW 0X09 MOVWF CONTD2 RETURN
NUEVEDEC2
BINARIOA7SEG ADDWF PCL,F RETLW 0X3F RETLW 0X06 RETLW 0X5B RETLW 0X4F RETLW 0X66 RETLW 0X6D RETLW 0X7D RETLW 0X07 RETLW 0X7F RETLW 0X67 END
6. CIRCUITO Y SIMULACIN
7. RECOMENDACIONES 7.1. Para realizar la multiplexacin es importante mantener el nmero en el display el tiempo adecuado, este no debe ser ni muy corto ni muy largo para que el efecto de multiplexacion se logre de manera correcta, sin titilar. 7.2. Para realizar un retardo de un valor especifico con mayor precisin se recomienda primero utilizar la expresin para encontrar el tiempo de desborde del timmer0, con este tiempo realizar mediciones con el Stopwatch para saber si se necesita mas o menos retardo, luego modificar el valor de inicio del timer0 o utilizar instrucciones nop. 7.3. Para evitar realizar el proceso de comprobacin de que el botn es presionado y soltado se puede hacer una modificacin del algoritmo y utilizar la interrupcin ocasionada por un cambio en el PUERTOB, aunque esto hara la subrutina de interrupcin un poco ms extensa. 7.4. Para simular el circuito en PROTEUS se debe tener en cuenta si el programa que hemos escrito funciona para un display de nodo comn o de ctodo comn para as elegir correctamente el dispositivo a usarse. 7.5. Se debe revisar las advertencias que se obtienen al simular el circuito en Proteus, ya que aunque la compilacin en Mplab termina satisfactoriamente pueden ocurrir otro tipo de errores que no son de compilacin pero afectan el funcionamiento del circuito 8. CONCLUSIONES 8.1. La realizacin de estos proyectos permiti perfeccionar nuestra habilidad en el manejo del timer0 para realizar contadores as como evidenciar la importancia de su uso cuando se trabaja en proyectos en los que se necesite llevar algn tipo de control basados en el transcurso del tiempo. Este transcurso se puede calcular de manera sencilla y precisa basados en la frecuencia a la que avanza el timer0 y su valor de inicio. 8.2. Para solucionar el problema de aumentar o disminuir un contador segn lo requiera el usuario se puede escribir dos subrutinas que se encarguen de cada accin y cual se ejecuta depende del usuario 8.3. La tcnica de multiplexacin ayuda a optimizar recursos fsicos, los pines del microcontrolador. La multiplexacin reduce casi a la mitad el nmero de salidas, esto puede ser muy importante cuando se cuenta con un pic limitado con pocos puertos de entrada y salida, o cuando nuestro programa necesite de varios puertos de comunicacin, el precio por esto es que el programa se vuelve un poco ms extenso. 8.4. Los proyectos realizados son esencialmente programas basados en interrupciones, en la activacin y desactivacin de las mismas. Observando esto podemos concluir que las interrupciones son una poderosa herramienta que permite detener la operacin del programa principal para realizar algn tipo de modificacin en los registros del PIC.