sábado, 22 de noviembre de 2014

Guía laboratorio microprocesadores y microcontroladores

Prsentado por:

Richard Alain Puello Heredia
Alexander Rodriguez Mahecha


INTRODUCCION

Este trabajo cumple con el objetivo de interactuar con los compañeros del aula virtual para dar respuesta a una cierta una actividad descriptiva del modulo y temas a tratar, promoviendo que el alumno haga una exploración total de los temas de Microprocesador, Principios Básicos, Familias de Microprocesadores y sobre todo Ensamblador (Assembler).
Siendo así una interacción individual con acompañamiento del tutor del CEAD en donde se plasma de manera practica la estructura temática del aula del curso de microprocesadores y microcontroladores en su unidad 1 con el lenguaje de programación Assembler, contribuyendo a los principios formativos para el mismo aprendizaje.
También se pretende que alumno pueda compartir con sus demás compañeros el trabajo individual realizado para que los compañeros generen comentarios que le ayuden a perfeccionar el trabajo, igualmente se extiende la invitación para que comentes el trabajo de los demás.
El trabajo ayuda a tomar conciencia sobre la importancia de los microcontroladores y microprocesadores, acentuando su diseño utilidad, características e implementación de manera clara y distribuida en los diferentes equipos actualmente usados junto con los componentes de las mimas.
Por último se puede inferir que en la realización de este trabajo la participación por medio de los aportes es clave en este trabajo y su centro o raíz es gracias al aula virtual dada por la Universidad Nacional Abierta y a Distancia Unad, dándole un enfoque diferente para mejorar las capacidades de aprendizaje del alumno.

Objetivos

 Diseñar un programa que permita recibir números y realizar las cuatro operaciones aritméticas básicas.
Conocer los camandos básicos para la operación de un microprocesador.

Punto 1
Diseñar un programa que represente una solución matemática en simuproc
Se desarrrolla una calculadora que suma, resta, multiplica y divide.
PROCEDIMIENTO

Para desarrollar esta Ejercicio es conveniente seguir los siguientes pasos:
Establecer las variables, constantes y demás parámetros relevantes en el diseño del algoritmo.
Diseñar el algoritmo y diagrama de flujo solución del problema planteado.
Generar el código fuente, producto del algoritmo diseñado.
Guardar el código fuente en .COM o .EXE.
Compilar, depurar y ejecutar el programa generado.
Guardar los cambios realizados.
Código:
#SimuProc 1.4.3.0
#El siguiente código corresponde a una calculadora que realiza las cuatro operaciones con  ejecutada en simuproc.

MSG 'CALCULADORA ': ;Imprimimos menu
MSG '****  MENU  ****'
MSG '1 = SUMA'
MSG '2 = RESTA'
MSG '3 = MULTIPLICACIÓN'
MSG '4 = DIVISIÓN'
MSG
  LDT 'INGRESE SELECCIÓN'; Capturamos por teclado el numero acorde a operacion.
  CMP 80 ;Comparamos  con el # preestablecido en memoria 80, que es 1.
  JEQ 40 ;Si son iguales salte a la memoria 40 ejecute a partir de hay.
         ; de lo contrario ...
  CMP 81 ;Comparamos  con el numero preestablecido en memoria 81, que es 1.
  JEQ 50  ;Si son iguales salte a la memoria 50 ejecute a partir de hay.
        ; de lo contrario ...
  CMP 82  ;Comparamos  con el numero preestablecido en memoria 82, que es 1.
  JEQ 60  ;Si son iguales salte a la memoria 60 ejecute a partir de hay.
        ; de lo contrario ...
  CMP 83  ;Comparamos con el numero preestablecido en memoria 83, que es 1.
  JEQ 70  ;Si son iguales salte a la memoria 70 ejecute a partir de hay.
  ; de lo contrario ...
  MSG 'ERROR DE DIGITACION INTENTELO DE NUEVO'; Imprima mensaje de errror
  JMP 0 ;Salta incondicionalmente y presenta nuevamente el menu seleccion,

  ;MENU DE SUMA
#40
MSG 'SUMA'
MSG 'Ingrese numero'
IN AX,1  ; Lee de puerto 1 el teclado y permite que sean numeros flotantes)
         ; esta  instruccion remplaza a °LTD°.
STF 2A   ; Almaceno el numero de 32 bits en 2A y 2B, en 2A quedan los
         ;16 bits mas significativos y en 1B los 16 menos significativos.
MSG 'Ingrese numero'
IN AX,1  ; Capturamos segundo numero y queda en AX.
ADDF 2A  ; Sumamos a AX el numero guardado en 2A.
MSG 'RESULTADO'
OUT 1,AX ; Imprimimos en pantalla el resultado a travez del pto 1.
HLT   ; Termina programa.

;MENU DE RESTA

#50
MSG 'RESTA'
MSG 'Ingrese numero'
IN AX,1
STF 2A
MSG 'Ingrese numero'
IN AX,1
STF 2C ; Almaceno el numero de 32 bits en 2C y 2D,
LDF 2A ; Cargo en AX la memoria 2A.
SUBF 2C ; Resta a AX el valor de 2C
MSG 'RESULTADO'
OUT 1,AX
HLT

;MENU DE MULTIPLICACION
#60
MSG 'MULTIPLICACION'
MSG 'Ingrese numero'
IN AX,1
STF 2A
MSG 'Ingrese numero'
IN AX,1
MULF 2A ; Multiplicacion de AX por lo que hay en 2A.
MSG 'RESULTADO'
OUT 1,AX
HLT

;MENU DE DIVISION
#70
MSG 'DIVISION'
MSG 'Ingrese numero'
IN AX,1
STF 2A
MSG 'Ingrese numero'
IN AX,1
STF 2C
LDF 2A
DIVF 2C ; Division de AX por lo que hay en 2A.
MSG 'RESULTADO'
OUT 1,AX
HLT

; DEFINIMOS VALORES A MEMORIA
#80
0000000000000001   ; Asignamos el valor de 1 a memoria 80
0000000000000010   ; Asignamos el valor de 2 a memoria 81
0000000000000011   ; Asignamos el valor de 3 a memoria 82
0000000000000100   ; Asignamos el valor de 4 a memoria 83
Ejercicio 1.2.1: Encendido y apagado de un LED con intermitencia de aproximadamente 1 segundo.
__CONFIG    0X3FF9
#INCLUDE<P16F84A.INC>
LIST P=16F84A
P EQU 0xC   ; VALOR EN MILISEGUNDO ENTRE 10
M EQU 0xD
N EQU 0xE

BSF STATUS,5
;INICIA PUERTO COMO SALIDA
MOVLW B'00000000'
MOVWF TRISB
;INICIA PUERTO COMO ENTRADA
MOVLW B'11111111'
MOVWF TRISA


BCF STATUS,5
;DESACTIVA COMPARADOR ANALOGICO
;MOVLW D'7'
;MOVWF CONCOM
CLRF PORTA
CLRF PORTB

INICIO
            BTFSS PORTA,0
            GOTO NO
            GOTO SI
NO
            BCF PORTB,0
            GOTO INICIO          

SI
            BSF PORTB,0
            GOTO INICIO

END
Diagrama de flujo

Ejercicio 1.2.2: Encendido de un LED por acción sobre un pulsador.
__CONFIG      0X3FF9


#INCLUDE<P16F84A.INC>

LIST P=16F84A
P EQU 0xC     ; VALOR EN MILISEGUNDO ENTRE 100
M EQU 0xD
N EQU 0xE
CONTADOR EQU 0XF
BSF STATUS,5
;INICIA PUERTO COMO SALIDA
MOVLW B'00000000'
MOVWF TRISB
;INICIA PUERTO COMO ENTRADA
MOVLW B'11111111'
MOVWF TRISA
BCF STATUS,5
;DESACTIVA COMPARADOR ANALOGICO
;MOVLW D'7'
;MOVWF CONCOM
CLRF PORTA
CLRF PORTB
INICIO
BSF PORTB,0
MOVLW D'5'
MOVWF P
CALL RETARDO

BCF PORTB,0
MOVLW D'5'
MOVWF P
CALL RETARDO
GOTO INICIO
RETARDO
TRES
            MOVLW         D'80'
            MOVWF         M
DOS
            MOVLW         D'250'
            MOVWF         N
UNO
            NOP
            NOP
            DECFSZ          N,1
            GOTO UNO
            DECFSZ          M,1
            GOTO DOS
            DECFSZ          P,1
            GOTO TRES
RETURN

Diagrama de Flujo
Ejercicio 1.2.3: Implementación de al menos 5 secuencias diferentes sobre ocho (8) LEDs controladas en selección por dos pulsadores, uno para seleccionar la secuencia siguiente y otro para seleccionar la secuencia anterior.
;*********Secuencia*de*leds*********
            list p=16F84A
            #include P16F84A.inc
            __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
;*******definición*de*variables*******
tempo3                        equ                  0x10
tempo1                        equ                  0x11
tempo2                        equ                  0x12
leds                 equ                  0x13
conta               equ                  0x14
;*************inicio***************
                        org       0
                        goto     inicio
inicio               org       0x20
                        bsf       STATUS,RP0
                        movlw 0xff
                        movwf TRISA
                        movlw 0x00
                        movwf TRISB
                        bcf       STATUS,RP0
ini                    clrf      tempo1
                        clrf      tempo2
                        clrf      leds
                        clrf      conta
                        movlw 0x05
                        movwf conta
segui                clrf      leds
rut1                 movf   leds,0
                        call      tabla
                        movwf PORTB
                        call      delaym           
                        incf      leds,1
                        movf   leds,0
                        xorlw   0x09
                        btfss    STATUS,Z
                        goto     rut1
                        decfsz  conta,1
                        goto     borra1
                        movlw 0x05
                        movwf conta
                        goto     rut2
borra1             clrf      leds
                        goto     rut1
rut2                 movf   leds,0
                        call      tabla
                        movwf PORTB
                        call      delaym
                        incf      leds,1
                        movf   leds,0
                        xorlw   0x12
                        btfss    STATUS,Z
                        goto     rut2
                        decfsz  conta,1
                        goto     borra2
                        movlw 0x05
                        movwf conta
                        goto     rut3
borra2             movlw 0x09
                        movwf leds
                        goto     rut2
rut3                 movf   leds,0
                        call      tabla
                        movwf PORTB
                        call      delaym
                        incf      leds,1
                        movf   leds,0
                        xorlw   0x1B
                        btfss    STATUS,Z
                        goto     rut3
                        decfsz  conta,1
                        goto     borra3
                        movlw 0x05
                        movwf conta
                        goto     rut4
borra3             movlw 0x12
                        movwf leds
                        goto     rut3
rut4                  movf   leds,0
                        call      tabla
                        movwf PORTB
                        call      delaym
                        incf      leds,1

                        movf   leds,0
                        xorlw   0x24
                        btfss    STATUS,Z
                        goto     rut4
                        decfsz  conta,1
                        goto     borra4
                        movlw 0x05
                        movwf conta
                        goto     rut5
borra4              movlw 0x1B
                        movwf leds
                        goto     rut4
rut5                  movf   leds,0
                        call      tabla
                        movwf PORTB
                        call      delaym
                        incf      leds,1
                        movf   leds,0
                        xorlw   0x2D
                        btfss    STATUS,Z
                        goto     rut5
                        decfsz  conta,1
                        goto     borra5
                        movlw 0x05
                        movwf conta
                        goto     rut6
borra5              movlw 0x24
                        movwf leds
                        goto     rut5
rut6                  movf   leds,0
                        call      tabla
                        movwf PORTB
                        call      delaym
                        incf      leds,1
                        movf   leds,0
                        xorlw   0x36
                        btfss    STATUS,Z
                        goto     rut6
                        decfsz  conta,1
                        goto     borra6
                        movlw 0x05
                        movwf conta
                        goto     rut7
borra6             movlw 0x2D
                        movwf leds
                        goto     rut6
rut7                 movf   leds,0
                        call      tabla
                        movwf PORTB
                        call      delaym
                        incf      leds,1
                        movf   leds,0
                        xorlw   0x3F
                        btfss    STATUS,Z
                        goto     rut7
                        decfsz  conta,1
                        goto     borra7
                        movlw 0x05
                        movwf conta
                        goto     rut8
borra7             movlw 0x36
                        movwf leds
                        goto     rut7
rut8                 movf   leds,0
                        call      tabla
                        movwf PORTB
                        call      delaym
                        incf      leds,1
                        movf   leds,0
                        xorlw   0x48
                        btfss    STATUS,Z
                        goto     rut8
                        decfsz  conta,1
                        goto     borra8
                        goto     ini
borra8             movlw 0x3F
                        movwf leds
                        goto     rut8
;***********la*tabla***************
tabla    bcf       STATUS,RP0
                        addwf  PCL,1
                        retlw    b'00000000';rut1                    retlw    b'00000001'
                        retlw    b'00000100'
                        retlw    b'00010000'
                        retlw    b'01000000'
                        retlw    b'10000000'
                        retlw    b'00100000'
                        retlw    b'00001000'
                        retlw    b'00000010'
                        retlw    b'00000000';rut2
                        retlw    b'00000010'   
                        retlw    b'00001000'
                        retlw    b'00100000'
                        retlw    b'10000000'
                        retlw    b'01000000'
                        retlw    b'00010000'
                        retlw    b'00000100'
                        retlw    b'00000001'
                        retlw    b'00000000';rut3
                        retlw    b'00000011'
                        retlw    b'00001100'   
                        retlw    b'00110000'
                        retlw    b'11000000'
                        retlw    b'00000011'
                        retlw    b'00001100'
                        retlw    b'00110000'
                        retlw    b'11000000'
                        retlw    b'00000000';rut4
                        retlw    b'11000000'
                        retlw    b'00110000'
                        retlw    b'00001100'   
                        retlw    b'00000011'
                        retlw    b'11000000'
                        retlw    b'00110000'
                        retlw    b'00001100'
                        retlw    b'00000011'
                        retlw    b'00000000';rut5
                        retlw    b'00000011'
                        retlw    b'00000110'
                        retlw    b'00001100'
                        retlw    b'00011000'   
                        retlw    b'00110000'
                        retlw    b'01100000'
                        retlw    b'11000000'
                        retlw    b'10000001'
                        retlw    b'11111111';rut6
                        retlw    b'00000000'
                        retlw    b'11111111'
                        retlw    b'00000000'
                        retlw    b'11111111'
                        retlw    b'00000000'   
                        retlw    b'11111111'
                        retlw    b'00000000'
                        retlw    b'11111111'
                        retlw    b'00000000';rut7
                        retlw    b'10000000'
                        retlw    b'11000000'
                        retlw    b'11100000'
                        retlw    b'11110000'
                        retlw    b'11111000'
                        retlw    b'11111100'   
                        retlw    b'11111110'
                        retlw    b'11111111'
                        retlw    b'11111111';rut8
                        retlw    b'01111111'
                        retlw    b'00111111'
                        retlw    b'00011111'
                        retlw    b'00001111'
                        retlw    b'00000111'
                        retlw    b'00000011'
                        retlw    b'00000001'   
                        retlw    b'00000000'
;************retardo*m*************
delaym            movlw 0x16
                        movwf tempo1
carget              movlw 0x32
                        movwf tempo2
carget2            movlw 0x32
                        movwf tempo3
reta1                decfsz  tempo3,1
                        goto     reta1
                        decfsz  tempo2,1
                        goto     carget2
                        decfsz  tempo1,1
                        goto     carget
                        return

                        end


 I.     Diagramas de flujo



El desarrollo de este programa consiste en poner en cierto orden las salidas del puerto B de forma tal que se vea como un juego de luces; en el programa tenemos 8 rutinas diferentes la cual cada una de ellas se repite 5 veces antes de darle paso a la siguiente.


(Distribución que le dimos a los leds.)

Para la apreciación de este programa es mejor verlo en funcionamiento, pero a continuación damos una somera idea del orden como se desarrolla el programa.


Rutina 1= ninguno / 1 / 3 / 5 / 7 / 8 / 6 / 4 / 2
Rutina 2=ninguno / 2 / 4 / 6 / 8 / 7 / 5 / 3 / 1
Rutina 3=ninguno / 1-2 / 3-4 / 5-6 / 7-8 /(bis)
Rutina 4=ninguno / 7-8 / 5-6 / 3-4 / 1-2 /(bis)
Rutina 5=ninguno / 1-2 / 2-3 / 3-4 / 4-5 / 5-6
                             / 6-7 / 7-8 / 8-1
Rutina 6= todos / ninguno / todos / ninguno
todos / ninguno / todos / ninguno / todos
Rutina 7= ninguno / 8 / 8-7 / 8-7-6 / 8-7-6-5   / 8-7-6-5-4 / 8-7-6-5-4-3 /8-7-6-5-4-3-2/todos
Rutina 8= todos/ 1-2-3-4-5-6-7 / 1-2-3-4-5-6
/ 1-2-3-4-5 / 1-2-3-4 / 1-2-3 / 1-2 / 1 /ninguno
Con el desarrollo de esta actividad pudimos jugar un poco con la imaginación, la creatividad y por su puesto el ingenio, ya que a pesar de la aparente simpleza en el desarrollo del programa, tuvimos inconvenientes por lo extenso que resulta realizar tantas rutinas iguales (aparentemente); pero gracias a ello tuvimos que investigar un poco mas hasta que hallamos una muy buena solución lo cual es el manejo de tablas.

Con el desarrollo de una tabla pudimos suprimir muchas líneas repetitivas que se tenían en el programa inicial y así solucionamos el problema de lo extenso del programa.

“Dicha tabla se encuentra dentro del diagrama de flujo en la parte de visualizar”

En este ejercicio pudimos aprender el manejo de pequeñas temporizaciones realizadas a través de repetición de instrucciones.

I.     Secuencia de LEDs controlada por un pulsador.



;*********secuencia*de*leds************          list p=16F84A
                #include P16F84A.inc
                __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
;*********definición*de*variables********
vel                          equ                         0x10     
tempo1                 equ                         0x11
tempo2                 equ                         0x12
leds                        equ                         0x13
conta                     equ                         0x14
tempo3                 equ                         0x15
;*************inicio******************
                               org          0
                               goto        inicio
inicio                      org          0x20
                               bsf          STATUS,RP0
                               movlw   0xff
                               movwf   TRISA
                               movlw   0x00
                               movwf   TRISB
                               bcf          STATUS,RP0
ini                           movlw   0x05
                               movwf   conta
                               movwf   vel
                               goto        pulsa
pulsa00                 call         porfin
pulsa                      clrf          leds
rut9                        movf      leds,0
                               call         tabla
                               movwf   PORTB
                               call         delaym
                               btfsc       PORTA,0
                               call         delay1 
                               btfsc       PORTA,0
                               goto        pulsa11
                               incf         leds,1
                               movf      leds,0
                               xorlw      0x09
                               btfss       STATUS,Z
                               goto        rut9
                               goto        pulsa
pulsa11                 call         porfin
pulsa1                   movlw   0x09
                               movwf   leds
rut10                      movf      leds,0
                               call         tabla
                               movwf   PORTB
                               call         delaym
                               btfsc       PORTA,0
                               call         delay1 
                               btfsc       PORTA,0
                               goto        pulsa22
                               incf         leds,1
                               movf      leds,0
                               xorlw      0x12
                               btfss       STATUS,Z
                               goto        rut10
                               goto        pulsa1
pulsa22                 call         porfin
pulsa2                   movlw   0x12
                               movwf   leds
rut11                      movf      leds,0
                               call         tabla
                               movwf   PORTB
                               call         delaym
                               btfsc       PORTA,0
                               call         delay1 
                               btfsc       PORTA,0
                               goto        pulsa33
                               incf         leds,1
                               movf      leds,0
                               xorlw      0x1B
                               btfss       STATUS,Z
                               goto        rut11
                               goto        pulsa2
pulsa33                 call         porfin
pulsa3                   movlw   0x1B
                               movwf   leds
rut12                      movf      leds,0
                               call         tabla
                               movwf   PORTB
                               call         delaym
                               btfsc       PORTA,0
                               call         delay1 
                               btfsc       PORTA,0
                               goto        pulsa44
                               incf         leds,1
                               movf      leds,0
                               xorlw      0x24
                               btfss       STATUS,Z
                               goto        rut12
                               goto        pulsa3
pulsa44                 call         porfin
pulsa4                   movlw   0x24
                               movwf   leds
rut13                      movf      leds,0
                               call         tabla
                               movwf   PORTB
                               call         delaym
                               btfsc       PORTA,0
                               call         delay1 
                               btfsc       PORTA,0
                               goto        pulsa55
                               incf         leds,1
                               movf      leds,0
                               xorlw      0x2D
                               btfss       STATUS,Z
                               goto        rut13
                               goto        pulsa4
pulsa55                 call         porfin
pulsa5                   movlw   0x2D
                               movwf   leds
rut14                      movf      leds,0
                               call         tabla
                               movwf   PORTB
                               call         delaym
                               btfsc       PORTA,0
                               call         delay1 
                               btfsc       PORTA,0
                               goto        pulsa66
                               incf         leds,1
                               movf      leds,0
                               xorlw      0x36
                               btfss       STATUS,Z
                               goto        rut14
                               goto        pulsa5
pulsa66                 call         porfin
pulsa6                   movlw   0x36
                               movwf   leds
rut15                      movf      leds,0
                               call         tabla
                               movwf   PORTB
                               call         delaym
                               btfsc       PORTA,0
                               call         delay1 
                               btfsc       PORTA,0
                               goto        pulsa77
                               incf         leds,1
                               movf      leds,0
                               xorlw      0x3F
                               btfss       STATUS,Z
                               goto        rut15
                               goto        pulsa6
pulsa77                 call         porfin
pulsa7                   movlw   0x3F
                               movwf   leds
rut16                      movf      leds,0
                               call         tabla
                               movwf   PORTB
                               call         delaym
                               btfsc       PORTA,0
                               call         delay1 
                               btfsc       PORTA,0
                               goto        pulsa00
                               incf         leds,1
                               movf      leds,0
                               xorlw      0x48
                               btfss       STATUS,Z
                               goto        rut16
                               goto        pulsa7
;**************la*tabla****************
tabla                      bcf          STATUS,RP0
                               addwf    PCL,1
                               retlw       b'00000000';rut1,9                            retlw       b'00000001'
                               retlw       b'00000100'
                               retlw       b'00010000'
                               retlw       b'01000000'
                               retlw       b'10000000'
                               retlw       b'00100000'
                               retlw       b'00001000'
                               retlw       b'00000010'
                               retlw       b'00000000';rut2
                               retlw       b'00000010'        
                               retlw       b'00001000'
                               retlw       b'00100000'
                               retlw       b'10000000'
                               retlw       b'01000000'
                               retlw       b'00010000'
                               retlw       b'00000100'
                               retlw       b'00000001'
                               retlw       b'00000000';rut3
                               retlw       b'00000011'
                               retlw       b'00001100'        
                               retlw       b'00110000'
                               retlw       b'11000000'
                               retlw       b'00000011'
                               retlw       b'00001100'
                               retlw       b'00110000'
                               retlw       b'11000000'
                               retlw       b'00000000';rut4
                               retlw       b'11000000'
                               retlw       b'00110000'
                               retlw       b'00001100'        
                               retlw       b'00000011'
                               retlw       b'11000000'
                               retlw       b'00110000'
                               retlw       b'00001100'
                               retlw       b'00000011'
                               retlw       b'00000000';rut5
                               retlw       b'00000011'
                               retlw       b'00000110'
                               retlw       b'00001100'
                               retlw       b'00011000'        
                               retlw       b'00110000'
                               retlw       b'01100000'
                               retlw       b'11000000'
                               retlw       b'10000001'
                               retlw       b'11111111';rut6
                               retlw       b'00000000'
                               retlw       b'11111111'
                               retlw       b'00000000'
                               retlw       b'11111111'
                               retlw       b'00000000'        
                               retlw       b'11111111'
                               retlw       b'00000000'
                               retlw       b'11111111'
                               retlw       b'00000000';rut7
                               retlw       b'10000000'
                               retlw       b'11000000'
                               retlw       b'11100000'
                               retlw       b'11110000'
                               retlw       b'11111000'
                               retlw       b'11111100'        
                               retlw       b'11111110'
                               retlw       b'11111111'
                               retlw       b'11111111';rut8
                               retlw       b'01111111'
                               retlw       b'00111111'
                               retlw       b'00011111'
                               retlw       b'00001111'
                               retlw       b'00000111'
                               retlw       b'00000011'
                               retlw       b'00000001'
                               retlw       b'00000000'
;***********retardos******************
delaym                  movlw   0x16
                               movwf   tempo1
carget                    movlw   0x32
                               movwf   tempo2
carget2                  movlw   0x32
                               movwf   tempo3
reta1                      decfsz    tempo3,1
                               goto        reta1
                               decfsz    tempo2,1
                               goto        carget2
                               decfsz    tempo1,1
                               goto        carget
                               return
delay1                   movlw   0x08
                               movwf   tempo1
carget3                  movlw   0x04
                               movwf   tempo2
reta2                      decfsz    tempo2,1
                               goto        reta2
                               decfsz    tempo1,1
                               goto        carget3
                               return
;*******Suelta pulsador1**********
porfin                    btfsc       PORTA,0
                               call         delay1
                               btfsc       PORTA,0
                               goto        porfin
                               return
                               end

 II.     Diagramas de flujo

El desarrollo de este programa es muy similar al anterior, con la diferencia de que nosotros controlamos el momento en el cual deseamos que cambie la rutina.


Este cambio se logra a través de una interrupción externa por medio de un pulsador.



Tanto las secuencias como las rutinas son iguales a las propuestas en el ejercicio 1, con la excepción de que el programa no cambia de rutina hasta que no detecte dicha interrupción.

Debido a la gran similitud de este ejercicio con el primero, las conclusiones y comentarios son casi los mismos; así que además de estas lo que nos queda por añadir son los comentarios y experiencias obtenidas con el manejo de la interrupción externa, las cuales son:
1-      El primer reto fue determinar en que parte del programa deberíamos chequear el bit por el cual generaríamos la interrupción.
2-      Una vez definido el punto anterior, nos encontramos con el problema de que esporádicamente las secuencias
cambiaban sin haberle dado la orden y después de investigar un poco supimos que en ocasiones la estática genera pulsos los cuales el pic toma como interrupciones, así que decidimos hacer una pequeña rutina donde él se tiene que cerciorar de que realmente la orden viene del pulsador y no de la estática. Para esto el pic va a un corto retardo después de haber detectado una señal en el pin respectivo y después del retardo vuelve y chequea si la señal esta todavía activa, en caso contrario ignora la primera señal y continua donde se había quedado.
3-      Después de solucionar este problema tuvimos otro, el cual era que cada vez que dábamos el pulso el programa saltaba mas de una rutina, lo cual después de pensar un rato llegamos a la conclusión de que se debía a que el pic es tan rápido que no nos daba tiempo de soltar el pulsador; así que decidimos hacer una pequeña rutina donde después de generar la interrupción, el programa no hace nada hasta asegurarse de que hemos soltado dicho pulsador.

I.     Secuencia  de  Leds  con  control  de  velocidad  y  tipo  de secuencia
;*********secuencia*de*leds****************

                list p=16F84A
                #include P16F84A.inc
                __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
;*************definicion*de*variables*******
vel                          equ                         0x10     
tempo1                 equ                         0x11
tempo2                 equ                         0x12
leds                        equ                         0x13
conta                     equ                         0x14
tempo3                 equ                         0x15
;*************inicio**********************
                               org          0
                               goto        inicio
inicio                      org          0x20
                               bsf          STATUS,RP0
                               movlw   0xff
                               movwf   TRISA
                               movlw   0x00
                               movwf   TRISB
                               bcf          STATUS,RP0
ini                           movlw   0x05
                               movwf   conta
                               movwf   vel
                               goto        pulsa
pulsa00                 call         porfin
pulsa                      clrf          leds
rut9                        movf      leds,0
                               call         tabla
                               movwf   PORTB
                               call         pulvel
                               btfsc       PORTA,0
                               call         delay1 
                               btfsc       PORTA,0
                               goto        pulsa11
                               incf         leds,1
                               movf      leds,0
                               xorlw      0x09
                               btfss       STATUS,Z
                               goto        rut9
                               goto        pulsa
pulsa11                 call         porfin
pulsa1                   movlw   0x09
                               movwf   leds
rut10                      movf      leds,0
                               call         tabla
                               movwf   PORTB
                               call         pulvel
                               btfsc       PORTA,0
                               call         delay1 
                               btfsc       PORTA,0
                               goto        pulsa22
                               incf         leds,1
                               movf      leds,0
                               xorlw      0x12
                               btfss       STATUS,Z
                               goto        rut10
                               goto        pulsa1
pulsa22                 call         porfin
pulsa2                   movlw   0x12
                               movwf   leds
rut11                      movf      leds,0
                               call         tabla
                               movwf   PORTB
                               call         pulvel
                               btfsc       PORTA,0
                               call         delay1 
                               btfsc       PORTA,0
                               goto        pulsa33
                               incf         leds,1
                               movf      leds,0
                               xorlw      0x1B
                               btfss       STATUS,Z
                               goto        rut11
                               goto        pulsa2
pulsa33                 call         porfin
pulsa3                   movlw   0x1B
                               movwf   leds
rut12                      movf      leds,0
                               call         tabla
                               movwf   PORTB
                               call         pulvel
                               btfsc       PORTA,0
                               call         delay1 
                               btfsc       PORTA,0
                               goto        pulsa44
                               incf         leds,1
                               movf      leds,0
                               xorlw      0x24
                               btfss       STATUS,Z
                               goto        rut12
                               goto        pulsa3
pulsa44                 call         porfin
pulsa4                   movlw   0x24
                               movwf   leds
rut13                      movf      leds,0
                               call         tabla
                               movwf   PORTB
                               call         pulvel
                               btfsc       PORTA,0
                               call         delay1 
                               btfsc       PORTA,0
                               goto        pulsa55
                               incf         leds,1
                               movf      leds,0
                               xorlw      0x2D
                               btfss       STATUS,Z
                               goto        rut13
                               goto        pulsa4
pulsa55                 call         porfin
pulsa5                   movlw   0x2D
                               movwf   leds
rut14                      movf      leds,0
                               call         tabla
                               movwf   PORTB
                               call         pulvel
                               btfsc       PORTA,0
                               call         delay1 
                               btfsc       PORTA,0
                               goto        pulsa66
                               incf         leds,1
                               movf      leds,0
                               xorlw      0x36
                               btfss       STATUS,Z
                               goto        rut14
                               goto        pulsa5
pulsa66                 call         porfin
pulsa6                   movlw   0x36
                               movwf   leds
rut15                      movf      leds,0
                               call         tabla
                               movwf   PORTB
                               call         pulvel
                               btfsc       PORTA,0
                               call         delay1 
                               btfsc       PORTA,0
                               goto        pulsa77
                               incf         leds,1
                               movf      leds,0
                               xorlw      0x3F
                               btfss       STATUS,Z
                               goto        rut15
                               goto        pulsa6
pulsa77                 call         porfin
pulsa7                   movlw   0x3F
                               movwf   leds
rut16                      movf      leds,0
                               call         tabla
                               movwf   PORTB
                               call         pulvel
                               btfsc       PORTA,0
                               call         delay1 
                               btfsc       PORTA,0
                               goto        pulsa00
                               incf         leds,1
                               movf      leds,0
                               xorlw      0x48
                               btfss       STATUS,Z
                               goto        rut16
                               goto        pulsa7
;*************la*tabla********************
tabla                      bcf          STATUS,RP0
                               addwf    PCL,1
                               retlw       b'00000000';rut1
                               retlw       b'00000001'
                               retlw       b'00000100'
                               retlw       b'00010000'
                               retlw       b'01000000'
                               retlw       b'10000000'
                               retlw       b'00100000'
                               retlw       b'00001000'
                               retlw       b'00000010'
                               retlw       b'00000000';rut2
                               retlw       b'00000010'        
                               retlw       b'00001000'
                               retlw       b'00100000'
                               retlw       b'10000000'
                               retlw       b'01000000'
                               retlw       b'00010000'
                               retlw       b'00000100'
                               retlw       b'00000001'
                               retlw       b'00000000';rut3
                               retlw       b'00000011'
                               retlw       b'00001100'        
                               retlw       b'00110000'
                               retlw       b'11000000'
                               retlw       b'00000011'
                               retlw       b'00001100'
                               retlw       b'00110000'
                               retlw       b'11000000'
                               retlw       b'00000000';rut4
                               retlw       b'11000000'
                               retlw       b'00110000'
                               retlw       b'00001100'        
                               retlw       b'00000011'
                               retlw       b'11000000'
                               retlw       b'00110000'
                               retlw       b'00001100'
                               retlw       b'00000011'
                               retlw       b'00000000';rut5
                               retlw       b'00000011'
                               retlw       b'00000110'
                               retlw       b'00001100'
                               retlw       b'00011000'        
                               retlw       b'00110000'
                               retlw       b'01100000'
                               retlw       b'11000000'
                               retlw       b'10000001'
                               retlw       b'11111111';rut6
                               retlw       b'00000000'
                               retlw       b'11111111'
                               retlw       b'00000000'
                               retlw       b'11111111'
                               retlw       b'00000000'        
                               retlw       b'11111111'
                               retlw       b'00000000'
                               retlw       b'11111111'
                               retlw       b'00000000';rut7
                               retlw       b'10000000'
                               retlw       b'11000000'
                               retlw       b'11100000'
                               retlw       b'11110000'
                               retlw       b'11111000'
                               retlw       b'11111100'        
                               retlw       b'11111110'
                               retlw       b'11111111'
                               retlw       b'11111111';rut8
                               retlw       b'01111111'
                               retlw       b'00111111'
                               retlw       b'00011111'
                               retlw       b'00001111'
                               retlw       b'00000111'
                               retlw       b'00000011'
                               retlw       b'00000001'
                               retlw       b'00000000'
;***************retardos******************
delaym                  movlw   0x16
                               movwf   tempo1
carget                    movlw   0x32
                               movwf   tempo2
carget2                  movlw   0x32
                               movwf   tempo3
reta1                      decfsz    tempo3,1
                               goto        reta1
                               decfsz    tempo2,1
                               goto        carget2
                               decfsz    tempo1,1
                               goto        carget
                               return
delay1                   movlw   0x08
                               movwf   tempo1
carget3                  movlw   0x04
                               movwf   tempo2
reta2                      decfsz    tempo2,1
                               goto        reta2
                               decfsz    tempo1,1
                               goto        carget3
                               return
;************cambio*de*velocidad**********
pulvel                     btfsc       PORTA,1
                               call         delay1
                               btfsc       PORTA,1
                               call         delaym
                               call         delaym
                               return
***********Suelta pulsador1***************
porfin                    btfsc       PORTA,0
                               call         delay1
                               btfsc       PORTA,0
                               goto        porfin
                               return
                               end

I.     Diagramas de flujo



Segunda parte

Ejercicio 1.2.1: Control de una pantalla LCD de mínimo 2x16 y Ejercicio 1.2.2:
Control de un teclado matricial mínimo 4x3.

_Move_Delay:

;Control de una pantalla LCD 2x16_Ejer1.c,63 ::                void Move_Delay() {
;Control de una pantalla LCD 2x16_Ejer1.c,64 ::                Delay_ms(500);     // velocidad de movimiento.
            MOVLW      3
            MOVWF      R11+0
            MOVLW      138
            MOVWF      R12+0
            MOVLW      85
            MOVWF      R13+0
L_Move_Delay0:
            DECFSZ     R13+0, 1
            GOTO       L_Move_Delay0
            DECFSZ     R12+0, 1
            GOTO       L_Move_Delay0
            DECFSZ     R11+0, 1
            GOTO       L_Move_Delay0
            NOP
            NOP
;Control de una pantalla LCD 2x16_Ejer1.c,65 ::                }
L_end_Move_Delay:
            RETURN
; end of _Move_Delay

_main:

;Control de una pantalla LCD 2x16_Ejer1.c,68 ::                void main( void )
;Control de una pantalla LCD 2x16_Ejer1.c,71 ::                TRISA.F4 = 1;
            BSF        TRISA+0, 4
;Control de una pantalla LCD 2x16_Ejer1.c,74 ::                Lcd_Init();                        // inicializar LCD
            CALL       _Lcd_Init+0
;Control de una pantalla LCD 2x16_Ejer1.c,76 ::                Lcd_Cmd(_LCD_CLEAR);               // limpia el display
            MOVLW      1
            MOVWF      FARG_Lcd_Cmd_out_char+0
            CALL       _Lcd_Cmd+0
;Control de una pantalla LCD 2x16_Ejer1.c,77 ::                Lcd_Cmd(_LCD_CURSOR_OFF);          // apaga el cursor
            MOVLW      12
            MOVWF      FARG_Lcd_Cmd_out_char+0
            CALL       _Lcd_Cmd+0
;Control de una pantalla LCD 2x16_Ejer1.c,78 ::                Lcd_Out(1,2,txt1);                 // escribe el texto en fila(1) columna(2)
            MOVLW      1
            MOVWF      FARG_Lcd_Out_row+0
            MOVLW      2
            MOVWF      FARG_Lcd_Out_column+0
            MOVLW      _txt1+0
            MOVWF      FARG_Lcd_Out_text+0
            CALL       _Lcd_Out+0
;Control de una pantalla LCD 2x16_Ejer1.c,85 ::                for(i=0; i<39; i++) {               // mueve el texto a la izquierda 39 veces
            CLRF       _i+0
L_main1:
            MOVLW      39
            SUBWF      _i+0, 0
            BTFSC      STATUS+0, 0
            GOTO       L_main2
;Control de una pantalla LCD 2x16_Ejer1.c,87 ::                Lcd_Cmd(_LCD_SHIFT_LEFT);
            MOVLW      24
            MOVWF      FARG_Lcd_Cmd_out_char+0
            CALL       _Lcd_Cmd+0
;Control de una pantalla LCD 2x16_Ejer1.c,88 ::                Move_Delay();
            CALL       _Move_Delay+0
;Control de una pantalla LCD 2x16_Ejer1.c,85 ::                for(i=0; i<39; i++) {               // mueve el texto a la izquierda 39 veces
            INCF       _i+0, 1
;Control de una pantalla LCD 2x16_Ejer1.c,89 ::                }
            GOTO       L_main1
L_main2:
;Control de una pantalla LCD 2x16_Ejer1.c,91 ::                Lcd_Cmd(_LCD_CLEAR);               // limpia el display
            MOVLW      1
            MOVWF      FARG_Lcd_Cmd_out_char+0
            CALL       _Lcd_Cmd+0
;Control de una pantalla LCD 2x16_Ejer1.c,92 ::                Lcd_Cmd(_LCD_CURSOR_OFF);          // apaga el cursor
            MOVLW      12
            MOVWF      FARG_Lcd_Cmd_out_char+0
            CALL       _Lcd_Cmd+0
;Control de una pantalla LCD 2x16_Ejer1.c,93 ::                Lcd_Out(1,3,txt2);                 // escribe el texto en fila(1) columna(3)
            MOVLW      1
            MOVWF      FARG_Lcd_Out_row+0
            MOVLW      3
            MOVWF      FARG_Lcd_Out_column+0
            MOVLW      _txt2+0
            MOVWF      FARG_Lcd_Out_text+0
            CALL       _Lcd_Out+0
;Control de una pantalla LCD 2x16_Ejer1.c,96 ::                Lcd_Out(2,1,txt3);                 // escribe el texto en fila(2) columna(1)
            MOVLW      2
            MOVWF      FARG_Lcd_Out_row+0
            MOVLW      1
            MOVWF      FARG_Lcd_Out_column+0
            MOVLW      _txt3+0
            MOVWF      FARG_Lcd_Out_text+0
            CALL       _Lcd_Out+0
;Control de una pantalla LCD 2x16_Ejer1.c,101 ::              pulso=0;
            BCF        _pulso+0, BitPos(_pulso+0)
;Control de una pantalla LCD 2x16_Ejer1.c,102 ::              while (pulso==0)
L_main4:
            BTFSC      _pulso+0, BitPos(_pulso+0)
            GOTO       L_main5
;Control de una pantalla LCD 2x16_Ejer1.c,104 ::              if( PORTA.F4==1 ) //Evalúa el valor del bit RA4.
            BTFSS      PORTA+0, 4
            GOTO       L_main6
;Control de una pantalla LCD 2x16_Ejer1.c,106 ::              delay_ms(300);
            MOVLW      2
            MOVWF      R11+0
            MOVLW      134
            MOVWF      R12+0
            MOVLW      153
            MOVWF      R13+0
L_main7:
            DECFSZ     R13+0, 1
            GOTO       L_main7
            DECFSZ     R12+0, 1
            GOTO       L_main7
            DECFSZ     R11+0, 1
            GOTO       L_main7
;Control de una pantalla LCD 2x16_Ejer1.c,107 ::              pulso = 1;
            BSF        _pulso+0, BitPos(_pulso+0)
;Control de una pantalla LCD 2x16_Ejer1.c,108 ::              Lcd_Cmd(_LCD_CLEAR);                // limpia el display
            MOVLW      1
            MOVWF      FARG_Lcd_Cmd_out_char+0
            CALL       _Lcd_Cmd+0
;Control de una pantalla LCD 2x16_Ejer1.c,109 ::              Lcd_Cmd(_LCD_CURSOR_OFF);          // apaga el cursor
            MOVLW      12
            MOVWF      FARG_Lcd_Cmd_out_char+0
            CALL       _Lcd_Cmd+0
;Control de una pantalla LCD 2x16_Ejer1.c,110 ::              Lcd_Out(1,3,txt4);                 // escribe el texto en fila(1) columna(3)
            MOVLW      1
            MOVWF      FARG_Lcd_Out_row+0
            MOVLW      3
            MOVWF      FARG_Lcd_Out_column+0
            MOVLW      _txt4+0
            MOVWF      FARG_Lcd_Out_text+0
            CALL       _Lcd_Out+0
;Control de una pantalla LCD 2x16_Ejer1.c,112 ::              delay_ms(2000);
            MOVLW      11
            MOVWF      R11+0
            MOVLW      38
            MOVWF      R12+0
            MOVLW      93
            MOVWF      R13+0
L_main8:
            DECFSZ     R13+0, 1
            GOTO       L_main8
            DECFSZ     R12+0, 1
            GOTO       L_main8
            DECFSZ     R11+0, 1
            GOTO       L_main8
            NOP
            NOP
;Control de una pantalla LCD 2x16_Ejer1.c,115 ::              }
L_main6:
;Control de una pantalla LCD 2x16_Ejer1.c,116 ::              }
            GOTO       L_main4
L_main5:
;Control de una pantalla LCD 2x16_Ejer1.c,120 ::              Lcd_Cmd(_LCD_CLEAR);               // limpia el display
            MOVLW      1
            MOVWF      FARG_Lcd_Cmd_out_char+0
            CALL       _Lcd_Cmd+0
;Control de una pantalla LCD 2x16_Ejer1.c,121 ::              Lcd_Cmd(_LCD_CURSOR_OFF);         // apaga el cursor
            MOVLW      12
            MOVWF      FARG_Lcd_Cmd_out_char+0
            CALL       _Lcd_Cmd+0
;Control de una pantalla LCD 2x16_Ejer1.c,122 ::              Lcd_Out(2,3,txt6);                 // escribe el texto en fila(2) columna(2)
            MOVLW      2
            MOVWF      FARG_Lcd_Out_row+0
            MOVLW      3
            MOVWF      FARG_Lcd_Out_column+0
            MOVLW      _txt6+0
            MOVWF      FARG_Lcd_Out_text+0
            CALL       _Lcd_Out+0
;Control de una pantalla LCD 2x16_Ejer1.c,128 ::              for(i=0; i<18; i++) {           // mueve el texto a la izquierda 39 veces
            CLRF       _i+0
L_main9:
            MOVLW      18
            SUBWF      _i+0, 0
            BTFSC      STATUS+0, 0
            GOTO       L_main10
;Control de una pantalla LCD 2x16_Ejer1.c,130 ::              Lcd_Cmd(_LCD_SHIFT_LEFT);
            MOVLW      24
            MOVWF      FARG_Lcd_Cmd_out_char+0
            CALL       _Lcd_Cmd+0
;Control de una pantalla LCD 2x16_Ejer1.c,131 ::              Move_Delay();
            CALL       _Move_Delay+0
;Control de una pantalla LCD 2x16_Ejer1.c,128 ::              for(i=0; i<18; i++) {           // mueve el texto a la izquierda 39 veces
            INCF       _i+0, 1
;Control de una pantalla LCD 2x16_Ejer1.c,132 ::              }
            GOTO       L_main9
L_main10:
;Control de una pantalla LCD 2x16_Ejer1.c,135 ::              Lcd_Cmd(_LCD_CLEAR);               // limpia el display
            MOVLW      1
            MOVWF      FARG_Lcd_Cmd_out_char+0
            CALL       _Lcd_Cmd+0
;Control de una pantalla LCD 2x16_Ejer1.c,136 ::              Lcd_Cmd(_LCD_CURSOR_OFF);          // apaga el cursor
            MOVLW      12
            MOVWF      FARG_Lcd_Cmd_out_char+0
            CALL       _Lcd_Cmd+0
;Control de una pantalla LCD 2x16_Ejer1.c,137 ::              Lcd_Out(2,3,txt7);                 // escribe el texto en fila(2) columna(2)
            MOVLW      2
            MOVWF      FARG_Lcd_Out_row+0
            MOVLW      3
            MOVWF      FARG_Lcd_Out_column+0
            MOVLW      _txt7+0
            MOVWF      FARG_Lcd_Out_text+0
            CALL       _Lcd_Out+0
;Control de una pantalla LCD 2x16_Ejer1.c,143 ::              for(i=0; i<19; i++) {               // mueve el texto a la izquierda 39 veces
            CLRF       _i+0
L_main12:
            MOVLW      19
            SUBWF      _i+0, 0
            BTFSC      STATUS+0, 0
            GOTO       L_main13
;Control de una pantalla LCD 2x16_Ejer1.c,145 ::              Lcd_Cmd(_LCD_SHIFT_LEFT);
            MOVLW      24
            MOVWF      FARG_Lcd_Cmd_out_char+0
            CALL       _Lcd_Cmd+0
;Control de una pantalla LCD 2x16_Ejer1.c,146 ::              Move_Delay();
            CALL       _Move_Delay+0
;Control de una pantalla LCD 2x16_Ejer1.c,143 ::              for(i=0; i<19; i++) {               // mueve el texto a la izquierda 39 veces
            INCF       _i+0, 1
;Control de una pantalla LCD 2x16_Ejer1.c,147 ::              }
            GOTO       L_main12
L_main13:
;Control de una pantalla LCD 2x16_Ejer1.c,151 ::              pulso=0;
            BCF        _pulso+0, BitPos(_pulso+0)
;Control de una pantalla LCD 2x16_Ejer1.c,152 ::              while (pulso==0)
L_main15:
            BTFSC      _pulso+0, BitPos(_pulso+0)
            GOTO       L_main16
;Control de una pantalla LCD 2x16_Ejer1.c,154 ::              if( PORTA.F4==1 ) //Evalúa el valor del bit RA4.
            BTFSS      PORTA+0, 4
            GOTO       L_main17
;Control de una pantalla LCD 2x16_Ejer1.c,156 ::              delay_ms(300);
            MOVLW      2
            MOVWF      R11+0
            MOVLW      134
            MOVWF      R12+0
            MOVLW      153
            MOVWF      R13+0
L_main18:
            DECFSZ     R13+0, 1
            GOTO       L_main18
            DECFSZ     R12+0, 1
            GOTO       L_main18
            DECFSZ     R11+0, 1
            GOTO       L_main18
;Control de una pantalla LCD 2x16_Ejer1.c,157 ::              pulso = 1;
            BSF        _pulso+0, BitPos(_pulso+0)
;Control de una pantalla LCD 2x16_Ejer1.c,158 ::              Lcd_Cmd(_LCD_CLEAR);                // limpia el display
            MOVLW      1
            MOVWF      FARG_Lcd_Cmd_out_char+0
            CALL       _Lcd_Cmd+0
;Control de una pantalla LCD 2x16_Ejer1.c,159 ::              Lcd_Cmd(_LCD_CURSOR_OFF);          // apaga el cursor
            MOVLW      12
            MOVWF      FARG_Lcd_Cmd_out_char+0
            CALL       _Lcd_Cmd+0
;Control de una pantalla LCD 2x16_Ejer1.c,160 ::              Lcd_Out(1,7,txt9);                 // escribe el texto en fila(1) columna(7)
            MOVLW      1
            MOVWF      FARG_Lcd_Out_row+0
            MOVLW      7
            MOVWF      FARG_Lcd_Out_column+0
            MOVLW      _txt9+0
            MOVWF      FARG_Lcd_Out_text+0
            CALL       _Lcd_Out+0
;Control de una pantalla LCD 2x16_Ejer1.c,162 ::              Lcd_Out(2,3,txt10);                 // escribe el texto en fila(1) columna(3)
            MOVLW      2
            MOVWF      FARG_Lcd_Out_row+0
            MOVLW      3
            MOVWF      FARG_Lcd_Out_column+0
            MOVLW      _txt10+0
            MOVWF      FARG_Lcd_Out_text+0
            CALL       _Lcd_Out+0
;Control de una pantalla LCD 2x16_Ejer1.c,164 ::              }
L_main17:
;Control de una pantalla LCD 2x16_Ejer1.c,165 ::              }
            GOTO       L_main15
L_main16:
;Control de una pantalla LCD 2x16_Ejer1.c,167 ::              while (1) {}  //bucle infinito
L_main19:
            GOTO       L_main19
;Control de una pantalla LCD 2x16_Ejer1.c,168 ::              }
L_end_main:
            GOTO       $+0
; end of _main












No hay comentarios:

Publicar un comentario