LENGUAJE ENSAMBLADOR


                          Procesadores
Procesador: Es una dispositivo digital capaz de ejecutar una
serie de tareas por medio de una secuencia de instrucciones
denominada programa


Intel 4004: Primer microprocesador  (1971)         

Propósito General

Microprocesadores

Dedicados

Microcontroladores

DSP

ASIC


Diferencias entre up y MCU

Un microprocesador es un sistema abierto con el que puede construirse una
computadora con las características deseadas, acoplándole los periféricos y
módulos necesarios
Un microcontrolador es un sistema cerrado que contiene una computadora
completa y de recursos limitados que no se pueden modificar.         



El lenguaje ensamblador (código simbólico) es un tipo de lenguaje
de bajo nivel utilizado para escribir programas de computadora, y
constituye la representación más directa del código máquina específico
para cada arquitectura de computadoras legible por un programador

El lenguaje ensamblador es denominado de bajo nivel debido a su
interacción con los recursos del procesador del microcontrolador, por

lo que es necesario tener un conocimiento detallado de los mismos.

Ventajas:
Velocidad
Eficiencia de tamaño (del código ejecutable)
Flexibilidad
Desventajas:
Tiempo de programación
Programas fuente grandes
Peligro de afectar recursos inesperadamente
Falta de portabilidad.


                                                   PROGRAMAS

          ;1.3 Diseñe un programa que encienda y apague el puerto B 
          ;cada intervalo de tiempo definido por el nibble bajo del 
          ;puerto A, en milisegundos
 LIST P=16F628A
                  #INCLUDE ¨P16F628A.INC¨
         __CONFIG 0X3D18
CBLOCK 20
CUENTA
  CUENTA
DATO
ENDC
           
                  ORG     0X00
                        GOTO    INICIO
                  ORG     0X05
                  
 INICIO         MOVLW   0X07
                             MOVWF   CMCON
                          BCF     STATUS,5
                        MOVLW   0XFF
                          MOVWF   TRISA
                     CLRF    TRISB
                          BSF     STATUS,5

                                                    DENUEVO    MOVF    PORTA,W  ;SEPARAMOS EL NIBLE BAJO
                                                       ANDLW   0X0F               ;DEL PUERTO A 
               MOVWF   DATO                  
                  
TIEMPO  CALL    RETARDO
                                                                      DECFSZ  DATO,W     ;DECREMENTAMOS DATO                        
              GOTO    TIEMPO      
                                                                   MOVLW   0XFF       ;ENCENDEMOS PUERTO B
                MOVWF   PORTB
                 
TIEMPO2   CALL    RETARDO
                  DECFSZ  DATO,W                
                  GOTO    TIEMPO2
                                                       CLRF    PORTB    ;BORRAMOS SALIDA 
                     GOTO    DENUEVO 
                  
                     RETARDO     MOVLW   .100     ;RETARDO FORMULA (4M+3MN+3)
                                                         MOVWF   CUENTA2  ;(4*100+3*100*2*3)= 1003 MICRO SEG. 
                     CICLO2         MOVLW   .2       ;= APROXIMADO A 1 MILISEGUNDO
  MOVWF   CUENTA
   CICLO          DECFSZ  CUENTA,F
                  GOTO    CICLO 
                             DECFSZ  CUENTA2,F
                    GOTO    CICLO2
        RETURN
 END      
 - ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
              ;1.5 Diseñe un programa que encienda la cantidad de pines del 
             ;puerto B especificados por el nibble bajo del puerto A            

               LIST  P=16F628A
             INCLUDE ¨P16F628A.INC¨
             __CONFIG 0X3D18
             CBLOCK   20H
             NUMERO
             ENDC
             ORG      0X00
             GOTO     INICIAR
             ORG      0X05
             
           
INICIAR                      
             MOVLW   0X07
             MOVWF   CMCON
             BCF     STATUS,5
             MOVLW   0XFF
             MOVWF   TRISA
             CLRF    TRISB
             BSF     STATUS,5

DENUEVO      MOVF    PORTA,W  ;SEPARAMOS EL NIBLE BAJO
             ANDLW   0X0F     ;DEL PUERTO A 
             CALL    TABLA
             GOTO    SALIR
             
  TABLA      ADDWF   PCL,F    ;ADQUIRIMOS VALOR DE TABLA
             RETLW   0XOO
             RETLW   0X01
             RETLW   0X03
             RETLW   0X07           
             RETLW   0X0F
             RETLW   0X1F
             RETLW   0X3F
             RETLW   0X7F   
             RETLW   0XFF
             
  SALIR      MOVWF   PORTB    ;SACAMOS EL VALOR DE TABLA
             GOTO    DENUEVO  ;POR EL PUERTO B E INICIAMOS EL PROGRAMA
             END
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
             ;1.7 Diseñe un programa que muestre un contador ascendente o
             ;descendente en un display de 7 segmentos
             ;dependiendo de un bit del puerto A, si el bit es “0” el display
             ;de 7 segmentos contará descendente, si es “1”
             ;contará de manera ascendente. El conteo será cada 0.5 segundos.

             LIST  P=16F628A
             INCLUDE ¨P16F628A.INC¨
             __CONFIG 0X3D18
             CBLOCK   20H
             VARIABLE
             CUENTA
             CUENTA2
             CUENTA3
             ENDC
             ORG      0X00
             GOTO     INICIAR
             ORG      0X05
           
   
INICIAR                    
             MOVLW   0X07
             MOVWF   CMCON
             BCF     STATUS,5
             MOVLW   0XFF
             MOVWF   TRISA
             CLRF    TRISB
             BSF     STATUS,5
PRINCIPAL    CLRF    VARIABLE
             BTFSS   PORTA,1
             GOTO    PRINCIPAL
             GOTO    CONTAR
         

DECREMENTO   CALL    RETARDO
             MOVLW   0X08      ;NUMERO = 8
             SUBWF   VARIABLE
             BTFSC   STATUS,Z
             GOTO    IGUALA8
             INCF    VARIABLE,F
             MOVF    VARIABLE,W
             CALL    TABLA
             CALL    DISPLAY7
             BTFSC   PORTA,1
             GOTO    DECREMENTO
             GOTO    INCREMENTO

 TABLA       ADDWF   PCL,F    ;ADQUIRIMOS VALOR DE TABLA
             RETLW   0X3F     ;0
             RETLW   0X06     ;1
             RETLW   0X5B     ;2
             RETLW   0X47     ;3    
             RETLW   0X66     ;4
             RETLW   0X6D     ;5
             RETLW   0X7D     ;6
             RETLW   0X07     ;7

IGUALA8      CLRF    NUMERO
             GOTO    DECREMENTO
             
         
DISPLAY7     MOVWF   PORTB
             GOTO    DECREMENTO

INCREMENTO   CALL    RETARDO
             MOVLW   0X08      ;NUMERO = 8
             SUBWF   VARIABLE
             BTFSC   STATUS,Z
             GOTO    IGUALA82
             DECF    VARIABLE,F
             MOVF    VARIABLE,W
             CALL    TABLA
             CALL    DISPLAY72
             BTFSS   PORTA,1
             GOTO    INCREMENTO
             GOTO    DECREMENTO

IGUALA82     CLRF    NUMERO
             GOTO    INCREMENTO

DISPLAY72    MOVWF   PORTB
             GOTO    INCREMENTO

RETARDO    

             MOVLW   .9       ;RETARDO DE MEDIOSEGUNDO (4MP+3MNP+AP+3)
             MOVWF   CUENTA3  ;P(60404)+3 =5436663 MICROSEG =.5 SEGUNDOS
CICLO3       MOVLW   .100     ;M
             MOVWF   CUENTA2
CICLO2       MOVLW   .200     ;N
             MOVWF   CUENTA
CICLO       DECFSZ  CUENTA,F
             GOTO    CICLO
             DECFSZ  CUENTA2,F
             GOTO    CICLO2
             DECFSZ  CUENTA3,F
             GOTO    CICLO3
             RETURN
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
              
             ;1.8 Simule un dado electrónico, el puerto B despliega del 1 al 6 
             ;mientras se mantenga presionado el pin RA4 el 
             ;puerto desplegará continuamente de 1 al 6, al dejar de presionarse 
             ;deberá mostrar el último valor visualizado

             LIST  P=16F628A
             INCLUDE ¨P16F628A.INC¨
             __CONFIG 0X3D18
             CBLOCK   20H
             NUMERO
             ENDC
             ORG      0X00
             GOTO     INICIAR
             ORG      0X05
             
             
INICIAR                  
             MOVLW   0X07
             MOVWF   CMCON
             BCF     STATUS,5
             MOVLW   0XFF
             MOVWF   TRISA
             CLRF    TRISB
             BSF     STATUS,5
             CLRF    NUMERO
REPITE       
            BTFSS    PORTA,4   ;CHECAMOS SI FUE PRESIONADO RA4
            GOTO     REPITE    ;SI NO ES PRESIONADO REPITE
            GOTO     DADO



 DADO      
           MOVLW     0X07      ;NUMERO = 7?
           SUBWF     NUMERO
           BTFSC     STATUS,Z  
           GOTO      IGUALA7   ;NUMERO IGUAL A 7 SALE Y BORRA 
           DECF      NUMERO,F  ;SIGUE PROGRAMA Y DECREMENTA NUMERO
           BTFSC     PORTA,4   ;VEMOS SI SE SOLTO BOTON 
           GOTO      DADO
           GOTO      SALIR

IGUALA7    CLRF      NUMERO    ;BORRA NUMERO
           GOTO      DADO 
  
SALIR      MOVF      NUMERO,W   ;VISUALISAMOS EL NUMERO
           MOVWF     PORTB
           GOTO      REPITE 
           END                
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
              
             ;  1.9 Diseñe un programa que lea el puerto A y 
             ;  muestre los bits impares invertidos en el puerto B

             LIST  P=16F628A
             INCLUDE ¨P16F628A.INC¨
             __CONFIG 0X3D18
             CBLOCK   20H
             NUMERO
             ENDC
             ORG      0X00
             GOTO     INICIAR
             ORG      0X05           

INICIAR                      
             MOVLW   0X07
             MOVWF   CMCON
             BCF     STATUS,5
             MOVLW   0XFF
             MOVWF   TRISA
             CLRF    TRISB
             BSF     STATUS,5
PROGRAMA     MOVF    PORTA,W
             XORLW   0XAA
             MOVWF   PORTB
             GOTO    PROGRAMA
             END  

0 comentarios:

Publicar un comentario