Software">
Nothing Special   »   [go: up one dir, main page]

Contador0a99 Jeziel Luis

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 10

UNIVERSIDAD DE IXTLAHUACA CUI

DIRECCION GENERAL DE INCORPORACION


Y REVADILACION DE ESTUDIOS
UNIVERSIDAD NACIONAL AUTONOMA DE MEXICO

Clave de incorporación UNAM 8968-66

CONTADOR 0 AL 99
MICROPROCESADORES

ELABORO

JEZIEL GERMAN LOREDO HERNANDEZ

LUIS DOMINGUEZ CASTILLO

REVISOR

M. EN C. JESÚS NAMIGTLE JIMENEZ

Ciclo lectivo 2020-2021


GRUPO
7010
INTRODUCCION

Para realizar el programa ocupamos los display de 7 segmentos y nuevamente el


microprocesador PIC16F887, con el cual, realizaremos una simulación que haga un conteo
decimal del 0 al 99 con solo 2 display. El funcionamiento es simple, pero la programación
se torna un poco compleja ya que se ocuparán distintas reglas para el lenguaje ensamblador
observado previamente.

En la programación en Ensamblador ocuparemos el programa MPLAB para realizar el


archivo que irá en nuestra simulación en Proteus. Dicha simulación, contará con los
materiales ya mencionadas e interconectados con los puertos A y B para su correcto
funcionamiento.

Cómo ya hemos mencionado, el funcionamiento es simple, lo único que se tiene que


contemplar son los tiempos prender, activar los puertos, o en todo caso, ejecutar en número
binario los puertos para que se vean los números del 0 al 9 en los display en una secuencia
óptima para que se vean los números en orden.
Para este caso nos basamos de la hoja de datos para sacar los datos de programación para
los display.
Codigo Ensamblador (MPLAB)

__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF &


_BOREN_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON &
_WDTE_OFF & _FOSC_INTRC_NOCLKOUT
__CONFIG _CONFIG2, _WRT_OFF;

LIST P=16F887
INCLUDE "P16F887.INC"
ORG 0X00

RETARDO0 EQU 0X20


RETARDO1 EQU 0X21
RETARDO2 EQU 0X22
CONTADOR EQU 0X23
MAXIMO EQU 0X24
CONTADOR2 EQU 0X25
MAXIMO2 EQU 0X26

BANKSEL PORTA ;
CLRF PORTA ;Init PORTA
BANKSEL ANSEL ;
CLRF ANSEL ;digital I/O
BANKSEL TRISA ;
MOVLW 0X00 ;Set RA<3:2> as inputs 00001000
MOVWF TRISA ;and set RA<5:4,1:

BANKSEL PORTB;
CLRF PORTB; Init PORTB
BANKSEL ANSELH;
CLRF ANSELH;
BANKSEL TRISE;
MOVLW 0X00;
MOVWF TRISB;

BANKSEL PORTA ;

START
CLRF RETARDO0;
CLRF RETARDO1;
CLRF RETARDO2;
CLRF MAXIMO;
CLRF CONTADOR;
CLRF CONTADOR2;
CLRF MAXIMO2;

RECET
MOVLW 0X0B;
MOVWF MAXIMO2;
CLRF CONTADOR;
INCF CONTADOR2;
MOVFW CONTADOR2;
SUBWF MAXIMO2,1;
BTFSS STATUS,2;
GOTO CONT2;
GOTO START;
CONT2
CALL SEGMENTOS;
MOVWF PORTB
GOTO SIGUE;

SIGUEMOVLW 0X0B;
MOVWF MAXIMO;
INCF CONTADOR;
MOVFW CONTADOR;
SUBWF MAXIMO,1;
BTFSS STATUS,2;
GOTO CONTI;
GOTO RECET;

CONTI CALL SEGMENTOS;


MOVWF PORTA;
CALL TIEMPO;
GOTO SIGUE;

TIEMPO
MOVLW 0X03;
MOVWF RETARDO2;
ETIQUETA3 MOVLW 0XFF;
MOVWF RETARDO1;
ETIQUETA2 MOVLW 0XFF;
MOVWF RETARDO0;
ETIQUETA1 DECFSZ RETARDO0,1;
GOTO ETIQUETA1;
DECFSZ RETARDO1,1;
GOTO ETIQUETA2;
DECFSZ RETARDO2,1;
GOTO ETIQUETA3;
RETURN

SEGMENTOS
ADDWF PCL,1 ; Si d=0: (W)+( PCL ) -->(W); Si d=1: (W)+( PCL ) -->( PCL )
RETLW b'00111111' ; Literal (b’00111111 ’) (d’063 ’) ( 0X3F ) --> (W): CERO
RETLW b'00111111' ; Literal (b’00111111 ’) (d’063 ’) ( 0X3F ) --> (W): CERO
RETLW b'00000110' ; Literal (b’00000110 ’) (d’006 ’) ( 0X06 ) --> (W): UNO
RETLW b'01011011' ; Literal (b’01011011 ’) (d’091 ’) ( 0X5B ) --> (W): DOS
RETLW b'01001111' ; Literal (b’01001111 ’) (d’079 ’) ( 0X4F ) --> (W): TRES
RETLW b'01100110' ; Literal (b’01100110 ’) (d’102 ’) ( 0X66 ) --> (W):
CUATRO
RETLW b'01101101' ; Literal (b’01101101 ’) (d’109 ’) ( 0X6D ) --> (W): CINCO
RETLW b'01111101' ; Literal (b’01111101 ’) (d’125 ’) ( 0X7D ) --> (W): SEIS
RETLW b'00000111' ; Literal (b’00000111 ’) (d’007 ’) ( 0X07 ) --> (W): SIETE
RETLW b'01111111' ; Literal (b’01111111 ’) (d’127 ’) ( 0X7F ) --> (W): OCHO
RETLW b'01100111' ; Literal (b’01100111 ’) (d’103 ’) ( 0X67 ) --> (W): NUEVE

END
SIMULACION EN PROTEUS

Nota: Proteus permite simular directamente el programa, por lo que en el circuito no es


necesario colocar el oscilador o capacitores.

Ya al haber armado nuestro circuito le cambiamos la configuración de la frecuencia de


nuestro microcontrolador de 1mHz a 4 mHz y obviamente insertamos el código ya
realizado en MPLAB para que funcione de acuerdo a lo programado.

Ejemplos de Funcionamiento

Inicio del programa Display puerto A ejecutándose y puerto B parado en 0


Al haber terminado el contador del 0 al 9 del display del puerto A aumenta un dato en el
puerto B

Y asi sucesivamente
Hasta que el display del puerto B termina su contador y se reinicia a 0 para hacer el conteo
del 0 al 99

Nota: para ver el funcionamiento en tiempo real, checar video adjuntado en la plataforma.
O aquí https://www.youtube.com/watch?v=pFNmrHJ5eHg&feature=youtu.be
CONCLUSIONES

Con anterioridad, observamos que al hacer la programación, encontramos una serie de


errores al realizar el código, el más notorio resaltó en el momento en que terminara el
conteo del 0 al 99; la programación no sólo se reiniciaba sino que primero se apagaba el
display B y, posteriormente continuaba normal. Pero, se pudo corregir al agregar 2
variables más a la programación
En cuanto a conocimiento, se pudieron incorporar lo que serían la utilización de los display
y como sería su utilidad en el lenguaje ensamblador.

También podría gustarte