UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE INGENIERIA AUTOMOTRIZ
MICROCONTROLADORES Y PLC
NOMBRE: Fabián Simbaña NIVEL: Sexto ‘’A’’ FECHA: 26/10/2015 DEBER 1. Compruebe el funcionamiento en el simulador de todos los circuitos y programas presentados. Escriba los comentarios correspondientes en todas las instrucciones.
CONTADORES CONTADOR ASCENDENTE 0-9 CON LAZO FOR – NEXT
TRISB=0 ' ASIGNA EL PUERTO B COMO SALIDA
N VAR BYTE ' VARIABLE N DE 8 BYTES
CONTADOR: ' INICIO DEL PROGRAMA CONTADOR
FOR N=0 TO 9 ' LAZO REPETITIVO QUE INICIA EN 0 Y FINALIZA EN 9
PORTB=N ' ASIGNA A LA VARIABLE N AL PUERTO B
PAUSE 500 ' PAUSE DE 500 MS
NEXT N ' AUMENTA EL VALOR DE N EN 1
GOTO CONTADOR ' REINICIA EL PROGRAMA
END ' FINALIZA EL PROGRAMA CONTADOR
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE INGENIERIA AUTOMOTRIZ
MICROCONTROLADORES Y PLC
CONTADOR DESCENDENTE 9-0 CON LAZO FOR - NEXT
TRISB = 0 ' ASIGNA EL PUERTO B COMO SALIDA
N VAR BYTE ' VARIABLE N DE 8 BYTES
CONTADOR: ' ASIGNA NOMBRE CONTADOR AL PROGRAMA
FOR N = 9 TO 0 STEP -1 ' LAZO REPETITIVO QUE INICIA EN 0 Y FINALIZA EN 9 CON PASOS DE -1
PORTB = N ' ASIGNA A LA VARIABLE N AL PUERTO B
PAUSE 500 ' PAUSE DE 500 MS
NEXT N ' AUMENTA EL VALOR DE N EN 1
GOTO CONTADOR ' REINICIA CONTADOR
END ' FINALIZACION DEL PROGRAMA
CONTADOR 0-9 USANDO REPEAT - UNTIL
TRISB = 0 ' ASIGNA EL PUERTO B COMO SALIDA
I VAR BYTE ' VARIABLE I DE 8 BYTES
CONTADOR: ' ASIGNA NOMBRE CONTADOR AL PROGRAMA
I= 0 ' ASIGNA VALOR CERO A LA VARIABLE I
REPEAT ' REPETIR MIENTRAS EL VALOR SEA DIFERENTE DE LA CONDICION
GOSUB DISPLAY' LLAMA A LA SUBRUTINA DISPLAY
GOSUB TIMER ' LLAMA A LA SUBRUTINA TIMER
I = I + 1 ' INCREMENTA EL VALOR DE I EN 1
UNTIL I > 9 ' LOS VALORES AUMENTAN HASTA QUE I SEA MAYOR QUE 9
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE INGENIERIA AUTOMOTRIZ
MICROCONTROLADORES Y PLC
GOTO CONTADOR' LLAMA A LA SUBRUTINA CONTADOR
DISPLAY ' SUBRUTINA DISPLAY
PORTB = I ' ASIGNA A LA VARIABLE I AL PUERTO B
RETURN ' RETORNA A LA SUBRUTINA
TIMER: ' SUBRUTINA TIMER
PAUSE 500 ' PAUSE DE 500 MS
RETURN ' RETORNA LA SUBRUTINA
END ' FINALIZA EL PROGRAMA
CONTADOR 0-9 USANDO WHILE – WEND
TRISB = 0 ' ASIGNA EL PUERTO B COMO SALIDA
I VAR BYTE ' VARIABLE DEL TIPO BYTE
CONTADOR: ' ASIGANA NOMBRE COMTADOR AL PROGRAMA
I= 0 ' VARIABLE I INICIA EN CERO
WHILE I<= 9 ' MIENTRAS I SEA MENOR O IGUAL A 9
GOSUB DISPLAY ' SUBRUTINA DISPLAY
GOSUB TIMER ' SUBRUTINA TIMER
I = I + 1 ' VALOR DE I SE INCREMENTA EN 1
WEND ' ENCUENTRA EL VALOR Y FINALIZA EL BUCLE
GOTO CONTADOR ' SE DIRIGE A CONTADOR
DISPLAY ' DISPLAY
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE INGENIERIA AUTOMOTRIZ
MICROCONTROLADORES Y PLC
PORTB = I ' ASIGAN A LA VARIABLE I AL PUERTO B
RETURN ' RETORNA
TIMER: ' SUBRUTINA TIMER
PAUSE 500 ' PAUSE DE 500 MS
RETURN ' RETORNA PROGRAMA
END ' FINALIZA PROGRAMA
CONTADOR 0-9 USANDO IF – THEN – ELSE
TRISB = 0 ' ASIGNA EL PUERTO B COMO SALIDA
I VAR BYTE ' VARIABLE DEL TIPO BYTE
I= 0 ' LA VARIABLE INICIA EN CERO
CONTADOR: ' ASIGNA NOMBRE CONTADOR AL PROGRAMA
IF I < 10 THEN ' SI I ES MENOR A 10 ENTONCES
GOSUB DISPLAY ' SUBRUTINA DISPLAY
GOSUB TIMER ' SUBRUTINA TIMER
I = I + 1 ' VALOR DE I SE INCREMENTA EN 1
ELSE ' CASO CONTRARIO
I= 0 ' SI ES FALSO ES IGUAL A CERO
ENDIF ' FINALIZA EL COMANDO IF
GOTO CONTADOR ' SE DIRIGE A CONTADOR
DISPLAY ' ASIGANA DISPLAY
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE INGENIERIA AUTOMOTRIZ
MICROCONTROLADORES Y PLC
PORTB = I ' ASIGNA A LA VARIABLE AL PUERTO B
RETURN ' RETORNA
TIMER: ' SUBRUTINA TIMER
PAUSE 500 ' PAUSE DE 500 MS
RETURN ' RETORNA
END ' FINALIZACION DE PROGRAMA
CONTADOR 0-9 USANDO DO WHILE LOOP
TRISB = 0 ' ASIGNA EL PUERTO B COMO SALIDA
I VAR BYTE ' VARIABLE DEL TIPO BYTE
CONTADOR: ' ASIGNA NOMBRE CONTADOR AL PROGRAMA
I= 0 ' ASIGNA EL VALOR CERO A LA VARIABLE I
DO WHILE I<= 9 ' MIENTRAS I SEA MENOR O IGUAL A 9
GOSUB DISPLAY ' SUBRUTINA DISPLAY
GOSUB TIMER ' SUBRUTINA TIMER
I = I + 1 ' IMCREMENTA EL VALOR DE I EN 1
LOOP ' FINALIZA EL BUCLE
GOTO CONTADOR ' SE DIRIGE A CONTADOR
DISPLAY ' ASIGNA DISPLAY
PORTB = I ' ASIGNA A LA VARIABLE I AL PUERTO B
RETURN ' RETORNA PROGRAMA
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE INGENIERIA AUTOMOTRIZ
MICROCONTROLADORES Y PLC
TIMER: ' SUBRUTINA TIMER
PAUSE 500 ' PAUSE 500 MS
RETURN ' RETORNA PROGRAMA
END ' FINALIZACION DEL PROGRAMA
CONTADOR 00-99 MULTIPLEXADO
TRISA= 0 ' ASIGNA EL PUERTO A COMO SALIDA
TRISB= 0 ' ASIGNA EL PUERTO B COMO SALIDA
CMCON = 7 ' DIGITALIZA EL PUERTO B
N VAR BYTE ' VARIABLE DEL TIPO BYTE
UNIDAD VAR BYTE ' ASIGNA LA VARIABLE UNIDAD DEL TIPO BYTE
DECENA VAR BYTE ' ASIGNA LA VARIABLE UNIDAD DEL TIPO BYTE
UNIDAD = 0 ' VARIABLE UNIDAD INICIA EN CERO
DECENA = 0 ' VARIABLE DECENA INICIA EN CERO
CONTADOR: ' ASIGNA NOMBRE CONTADOR AL PROGRAMA
FOR DECENA = 0 TO 9 ' LAZO REPETITIVO QUE INICIA EN 0 Y TERMINA EN 9
FOR UNIDAD = 0 TO 9 ' LAZO REPETITIVO QUE INICIA EN 0 Y TERMINA EN 9
GOSUB DISPLAY ' SUBRUTINA DISPLAY
NEXT UNIDAD ' AUMENTA EL VALOR A LA VARIABLE UNIDAD EN 1
NEXT DECENA ' AUMENTA EL VALOR A LA VARIABLE DECENA EN 1
GOTO CONTADOR ' RETORNA CONTADOR
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE INGENIERIA AUTOMOTRIZ
MICROCONTROLADORES Y PLC
DISPLAY: ' SUBRUTINA DISPLAY
FOR N = 1 TO 10 ' LAZO REPETITIVO QUE INICIA EN 0 Y TERMINA EN 10
PORTA = UNIDAD ' ASIGNA A LA VARIABLE UNIDAD AL PUERTO A
HIGH PORTB.0 ' EL PUERTO B LO PONE EN ALTO
LOW PORTB.1 ' EL PUERTO B LO PONE EN BAJO
PAUSE 50 ' PAUSE DE 50 MS
PORTA = DECENA ' ASIGNA A LA VARIABLE DECENA AL PUERTO A
HIGH PORTB.1 ' EL PUERTO B LO PONE EN BAJO
LOW PORTB.0 ' EL PUERTO B LO PONE EN BAJO
PAUSE 50 ' PAUSE DE 50 MS
NEXT N ' INCREMENTA EL VALOR DE N EN 1
RETURN ' RETORNA EL PROGRAMA
END ' FINALIZA EL PROGRAMA
PROGRAMA: CONTADOR ASCENDENTE 0-9.
TRISB=0 ' ASIGNA EL PUERTO B COMO SALIDA
CMCON=7 ' DIGITALIZA EL PUERTO B
N VAR BYTE ' VARIABLE N DE 8 BYTES
DATO VAR BYTE ' VARIABLE DATO DE 8 BYTES
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE INGENIERIA AUTOMOTRIZ
MICROCONTROLADORES Y PLC
INICIO: ' ASIGNA EL NOMBRE INICIO AL PROGRAMA
FOR N=0 TO 9 ' LAZO REPETITIVO QUE INICIA EN 0 Y FINALIZA EN 9
LOOKUP N,[64,121,36,48,25,18,2,120,0,16],DATO 'ASIGNO A LA VARIABLE DATO EL VALOR DE LA TABLA DE ACUERDO AL VALOR EN EL INDICADOR
PORTB = DATO 'ASIGNA A LA VARIABLE DATO AL PUERTO B
PAUSE 300 ' PAUSE DE 300 MS
NEXT N ' INCREMENTA EL VALOR DE N EN 1
GOTO INICIO ' SE DIRIGE A INICIO
END ' FINALIZACION DEL PROGRAMA
PROGRAMA: CONTADOR DESCENDENTE 9-0.
TRISB=0 ' ASIGNA EL PUERTO B COMO SALIDA
CMCON=7 ' ASIGNA EL PUERTO B COMO SALIDA
N VAR BYTE ' VARIABLE N DE 8 BYTES
DATO VAR BYTE ' VARIABLE DATO DE 8 BYTES
INICIO: ' ASIGNA EL NOMBRE INICIO AL PROGRAMA
FOR N=9 TO 0 STEP -1 ' LAZO REPETITIVO QUE INICIA EN 0 Y FINALIZA EN 9 EN PASOS DE -1
LOOKUP N,[64,121,36,48,25,18,2,120,0,16],DATO 'ASIGNO A LA VARIABLE DATO EL VALOR DE LA TABLA DE ACUERDO AL VALOR EN EL INDICADOR
PORTB = DATO ' ASIGNA A LA VARIABLE DATO AL PUERTO B
PAUSE 300 ' PAUSE DE 300 MS
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE INGENIERIA AUTOMOTRIZ
MICROCONTROLADORES Y PLC
NEXT N ' INCREMENTA EL VALOR DE N EN 1
GOTO INICIO ' SE DIRIGE A INICIO
END ' FINALIZACION DEL PROGRAMA
CONTADOR MULTIPLEXADO 00 – 99
TRISA= 0 'MODIFICA EL PUERTO A COMO SALIDA
TRISB= 0 'MODIFICA EL PUERTO B COMO SALIDA
CMCON = 7 'DIGITALIZA EL PUERTO A
N VAR BYTE 'ASIGNA LA VARIABLE N DEL TIPO BYTE
M VAR BYTE 'ASIGNA LA VARIABLE M DEL TIPO BYTE
X VAR BYTE 'ASIGNA LA VARIABLE X DEL TIPO BYTE
UNIDAD VAR BYTE 'ASIGNA LA VARIABLE UNIDAD DEL TIPO BYTE
DECENA VAR BYTE 'ASIGNA LA VARIABLE DECENA DEL TIPO BYTE
CONTADOR: 'ETIQUETA EL NOMBRE CONTADOR AL PROGRAMA
FOR N = 0 TO 9 'LAZO REPETITIVO QUE INICIA EN 0 Y TERMINA EN 9
LOOKUP N,[64,121,36,48,25,18,2,120,0,16,8,3,70,33,6,14],DECENA 'ASIGNO A LA VARIABLE DECENA EL VALOR DE LA TABLA DE ACUERDO AL VALOR EN EL INDICADOR
FOR M = 0 TO 9 'LAZO REPETITIVO QUE INICIA EN 0 Y TERMINA EN 9
LOOKUP M,[64,121,36,48,25,18,2,120,0,16,8,3,70,33,6,14],UNIDAD 'ASIGNO A LA VARIABLE UNIDAD EL VALOR DE LA TABLA DE ACUERDO AL VALOR EN EL INDICADOR
GOSUB DISPLAY 'LLAMA A LA SUBRUTINA DISPLAY
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE INGENIERIA AUTOMOTRIZ
MICROCONTROLADORES Y PLC
NEXT M 'AUMENTA EL VALOR DE M EN 1
NEXT N 'AUMENTA EL VALOR DE N EN 1
GOTO CONTADOR 'SE DIRIGE A CONTADOR
DISPLAY: 'SUBRUTINA DISPLAY
FOR X = 1 TO 20 'LAZO REPETITIVO QUE INICIA EN 1 Y TERMINA EN 20
HIGH PORTA.1 'EL PUERTO A LO PONE EN ALTO
LOW PORTA.0 'EL PUERTO A LO PONE EN BAJO
PORTB = UNIDAD 'ASIGNA A LA VARIABLE UNIDAD AL PUERTO B
PAUSE 50 'REALIZA UNA PAUSA DE 50 MS
HIGH PORTA.0 'EL PUERTO A LO PONE EN ALTO
LOW PORTA.1 'EL PUERTO A LO PONE EN BAJO
PORTB = DECENA 'ASIGNA A LA VARIABLE DECENA AL PUERTO B
PAUSE 50 'REALIZA UNA PAUSA DE 50 MS
NEXT X 'AUMENTA EL VALOR DE X EN 1
RETURN 'RETORNO DE LA SUBRUTINA
END 'FINALIZACION DEL PROGRAMA
2.- Realice un contador módulo 100 (00-99), para controlar los displays conectados en el mismo puerto como se ve en la figura.
TRISB=0 ' ASIGNA EL PUERTO B COMO SALIDA
M VAR BYTE ' VARIABLE M DE 8 BYTES
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE INGENIERIA AUTOMOTRIZ
MICROCONTROLADORES Y PLC
N VAR BYTE ' VARIABLE N DE 8 BYTES
INICIO: ' INICIO DEL PROGRAMA
FOR M=0 TO 9 ' LAZO REPETITIVO QUE INICIA EN 0 Y FINALIZA EN 9
FOR N=0 TO 9 ' LAZO REPETITIVO QUE INICIA EN 0 Y FINALIZA EN 9
PORTB=M*16+N
GOSUB TIEMPO ' LLAMA A LA SUBRUTINA TIEMPO
NEXT N ' AUMENTA EL VALOR DE N EN 1
NEXT M ' AUMENTA EL VALOR DE M EN 1
GOTO INICIO ' REINICIA EL PROGRAMA
TIEMPO: ' SUBRUTINA TIEMPO
PAUSE 200 ' TIEMPO DE 200 MS
RETURN ' RETORNA
END ' FINALIZACION DEL PROGRAMA
3.- Realice un contador ascendente módulo 23, con los displays multiplexados, es decir conectados en el mismo puerto, sin decodificador.
TRISA= 0 'MODIFICA EL PUERTO A COMO SALIDA
TRISB= 0 'MODIFICA EL PUERTO B COMO SALIDA
CMCON = 7 'DIGITALIZA EL PUERTO A
N VAR BYTE 'ASIGNA LA VARIABLE N DEL TIPO BYTE
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE INGENIERIA AUTOMOTRIZ
MICROCONTROLADORES Y PLC
M VAR BYTE 'ASIGNA LA VARIABLE M DEL TIPO BYTE
X VAR BYTE 'ASIGNA LA VARIABLE X DEL TIPO BYTE
UNIDAD VAR BYTE 'ASIGNA LA VARIABLE UNIDAD DEL TIPO BYTE
DECENA VAR BYTE 'ASIGNA LA VARIABLE DECENA DEL TIPO BYTE
CONTADOR: 'ETIQUETA EL NOMBRE CONTADOR AL PROGRAMA
FOR N = 0 TO 2 'LAZO REPETITIVO QUE INICIA EN 0 Y TERMINA EN 9
LOOKUP N,[64,121,36],DECENA 'ASIGNO A LA VARIABLE DECENA EL VALOR DE LA TABLA DE ACUERDO AL VALOR EN EL INDICADOR
FOR M = 0 TO 9 'LAZO REPETITIVO QUE INICIA EN 0 Y TERMINA EN 9
LOOKUP M,[64,121,36,48,25,18,2,120,0,16],UNIDAD 'ASIGNO A LA VARIABLE UNIDAD EL VALOR DE LA TABLA DE ACUERDO AL VALOR EN EL INDICADOR
GOSUB DISPLAY 'LLAMA A LA SUBRUTINA DISPLAY
NEXT M 'AUMENTA EL VALOR DE M EN 1
NEXT N 'AUMENTA EL VALOR DE N EN 1
GOTO CONTADOR 'SE DIRIGE A CONTADOR
DISPLAY: 'SUBRUTINA DISPLAY
FOR X = 1 TO 23 'LAZO REPETITIVO QUE INICIA EN 1 Y TERMINA EN 20
HIGH PORTA.1 'EL PUERTO A LO PONE EN ALTO
LOW PORTA.0 'EL PUERTO A LO PONE EN BAJO
PORTB = UNIDAD 'ASIGNA A LA VARIABLE UNIDAD AL PUERTO B
PAUSE 5 'REALIZA UNA PAUSA DE 50 MS
HIGH PORTA.0 'EL PUERTO A LO PONE EN ALTO
LOW PORTA.1 'EL PUERTO A LO PONE EN BAJO
UNIVERSIDAD DE LAS FUERZAS ARMADAS ESPE INGENIERIA AUTOMOTRIZ
MICROCONTROLADORES Y PLC
PORTB = DECENA 'ASIGNA A LA VARIABLE DECENA AL PUERTO B
PAUSE 5 'REALIZA UNA PAUSA DE 50 MS
NEXT X 'AUMENTA EL VALOR DE X EN 1
RETURN 'RETORNO DE LA SUBRUTINA
END 'FINALIZACION DEL PROGRAMA