martes, 26 de abril de 2011

LCD 2X16 ASM ---CAMBIO DE MANDO

;mostrar cambio de mando en lcd

    LIST P=16F877A
    INCLUDE "P16F877A.INC"

RS    EQU    .0
E    EQU    .1
AUX    EQU    20H
VALOR    EQU    21H
VALOR1    EQU    22H
LCD_CONT    EQU    23H
LCD_DATO    EQU    24H

    BANKSEL        TRISC
    CLRF        TRISA
    CLRF        TRISC
    MOVLW        06H
    MOVWF        ADCON1
    BANKSEL        PORTA
INICIO:
    MOVLW    .18
    CALL    RETARDO
    MOVLW    30H
    CALL    CONTROL
    MOVLW    .5
    CALL    RETARDO
    MOVLW    30H
    CALL    CONTROL
    MOVLW    .1
    CALL    RETARDO
    MOVLW    30H
    CALL    CONTROL
    MOVLW    38H
    CALL    CONTROL
    MOVLW    08H
    CALL    CONTROL   
    MOVLW    0CH
    CALL    CONTROL
    MOVLW    06H
    CALL    CONTROL
    MOVLW    03H
    MOVLW    .1
    CALL    CONTROL
    CALL    ADDRESS
    CLRF    AUX
VOLVER:
    MOVF    AUX,0
    CALL    T_LINEA1
    XORLW    0
    BTFSC    STATUS,Z
    GOTO    LINEA2
    CALL    DATO
    INCF    AUX,1
    GOTO    VOLVER
LINEA2:
   
    CLRF    AUX
    MOVLW    44H
    CALL    ADDRESS
VOLVER1:
    MOVF    AUX,0
    CALL    T_LINEA2
    XORLW    0
    BTFSC    STATUS,Z
    GOTO    FIN
    CALL    DATO
    INCF    AUX,1
    GOTO    VOLVER1
FIN:
    GOTO    FIN

CONTROL:
    MOVWF    LCD_CONT
    MOVLW    .2
    CALL     RETARDO
    BCF        PORTA,RS
    BSF        PORTA,E
    MOVF    LCD_CONT,0
    MOVWF    PORTC
    BCF        PORTA,E
    RETURN
DATO:
    MOVWF    LCD_DATO
    MOVLW    .1
    CALL     RETARDO
    BSF        PORTA,RS
    BSF        PORTA,E
    MOVF    LCD_DATO,0
    MOVWF    PORTC
    BCF        PORTA,E
    RETURN
ADDRESS:
    ADDLW    80H
    CALL    CONTROL
    RETURN

T_LINEA1:
    ADDWF    PCL,1
    DT        "CAMBIO DE",0
T_LINEA2:
    ADDWF    PCL,1
    DT        "MANDO",0

RETARDO:

    MOVWF    VALOR
SALTO:
    MOVLW    .249
    MOVWF    VALOR1
SALTO1:
    NOP
    DECFSZ    VALOR1,1
    GOTO    SALTO1
    DECFSZ    VALOR,1
    GOTO    SALTO
    RETURN

    END

Fibonnaci ASM

LIST     P=16F877A
INCLUDE P16F877A.INC
X        EQU        0x20
Y        EQU        0x21
FIB        EQU        0x22
CONT    EQU        0X23
RET1    EQU        0X24
RET2    EQU        0X25
RET3    EQU        0X26
    BANKSEL        TRISA
    MOVLW        0xFF
    MOVWF        TRISB
    CLRF        TRISE
    MOVLW        0x00
    MOVWF        TRISD   
    BANKSEL        PORTA
    CLRF        PORTD
INICIO:
    MOVLW        .0
    MOVWF        X
    MOVLW        .1
    MOVWF        Y
    MOVLW        .12
    MOVWF        CONT
    MOVLW        0x00
SUMAR:
    BTFSS        PORTB,0
    GOTO        SUMAR
    CALL        RETARDO
    MOVLW        0x00
    ADDWF        X,0
    ADDWF        Y,0
    MOVWF        PORTD
    MOVWF        FIB
    MOVLW        0xFF
    ANDWF        Y,0
    MOVWF        X
    MOVLW        0xFF
    ANDWF        FIB,0
    MOVWF        Y
    DECFSZ        CONT,1
    GOTO        SUMAR
    GOTO         INICIO
RETARDO:
    MOVLW        .70
    MOVWF        RET1
TRES:
    MOVLW        .70
    MOVWF        RET2
DOS:
    MOVLW        .70
    MOVWF        RET3
UNO:
    DECFSZ        RET3,1
    GOTO        UNO
    DECFSZ        RET2,1
    GOTO        DOS
    DECFSZ        RET1,1
    GOTO        TRES
    RETURN
    END

Manejo de teclado ASM

;programa de teclado

LIST    P=16F877A
INCLUDE    "P16F877A.INC"

CUENTA        EQU    20H
ANTERIOR    EQU    21H
VALOR        EQU    22H
VALOR1        EQU    23H

    BANKSEL        TRISA
    MOVLW        0F0H
    MOVWF        TRISB
    CLRF        TRISC
    BCF            OPTION_REG,7
    BANKSEL        PORTC
    CLRF        PORTC
INICIO:
    CLRF    CUENTA
    CALL    BARRIDO
    MOVLW    .16
    XORWF    CUENTA,0
    BTFSC    STATUS,Z
    GOTO    INICIO
    MOVF    CUENTA,0
    CALL    TECLA
    MOVWF    PORTC
    GOTO    INICIO

BARRIDO:
    MOVLW    B'11110111'
REGRESO:
    MOVWF    PORTB
    BTFSS    PORTB,7
    GOTO    FIN_PULSO
    INCF    CUENTA,1
    BTFSS    PORTB,6
    GOTO    FIN_PULSO
    INCF    CUENTA,1
    BTFSS    PORTB,5
    GOTO    FIN_PULSO
    INCF    CUENTA,1
    BTFSS    PORTB,4
    GOTO    FIN_PULSO
    INCF    CUENTA,1
    MOVLW    .16
    XORWF    CUENTA,0   
    BTFSC    STATUS,Z
    RETURN
    BSF        STATUS,C
    RRF        PORTB,0
    GOTO    REGRESO

FIN_PULSO:
    MOVF    PORTB,0
    MOVWF    ANTERIOR
VOLVER:
    MOVF    PORTB,0
    XORWF    ANTERIOR,0
    BTFSS    STATUS,Z
    RETURN
    CALL    RETARDO
    GOTO    VOLVER

RETARDO:
    MOVLW    .20
    MOVWF    VALOR
SALTO1:
    MOVLW    .249
    MOVWF    VALOR1
SALTO:
    NOP
    DECFSZ    VALOR1,1
    GOTO    SALTO
    DECFSZ    VALOR,1
    GOTO    SALTO1
    RETURN

TECLA:
    ADDWF    PCL,1
    DT        .7,.8,.9,0AH
    DT        .4,.5,.6,0BH
     DT        .1,.2,.3,0CH
    DT        0FH,.0,0EH,0DH


    END




       


   
   
       

domingo, 3 de abril de 2011

PROGRAMAS EN ASM

DEBER DE MICROCONTROLADORES


REALIZAR LOS SIGUIENTES PROGRAMAS EN ENSAMBLADOR

1.      Realizar  la siguiente secuencia de luces:  (se pueden mostrar en cualquier puerto), cada salida deberá mostrarse 0,5 segundos, y en forma cíclica.

00000000
10000001
11000011
11100111
11111111
11100111
11000011
10000001
00000000 

CÓDIGO
            List      P=16F877A
            include "p16F877A.INC"
           
            PRIMERO EQU 20H
            SEGUNDO EQU 21H
            TERCERO EQU 22H
            BANKSEL TRISB                      ;BANCO1
            MOVLW          00H      
            MOVWF          TRISB              ;PUERTOB COMO SALIDA
            BANKSEL PORTB                    ;BANCO0
            CLRF PORTB                                        ;ENCERAR PUERTO B
INICIO:
            MOVLW          00H
            MOVWF          PORTB
            CALL    RETARDO
            MOVLW          81H
            MOVWF          PORTB
            CALL    RETARDO
            MOVLW          0C3H
            MOVWF          PORTB
            CALL    RETARDO
            MOVLW          0E7H
            MOVWF          PORTB
            CALL    RETARDO
            MOVLW          0FFH
            MOVWF          PORTB
            CALL    RETARDO
            MOVLW          0E7H
            MOVWF          PORTB
            CALL    RETARDO
            MOVLW          0C3H
            MOVWF          PORTB
            CALL    RETARDO
            MOVLW          081H
            MOVWF          PORTB
            CALL    RETARDO
            MOVLW          00H
            MOVWF          PORTB
            CALL    RETARDO
            GOTO INICIO
RETARDO:
            MOVLW          .10
            MOVWF          PRIMERO
VUELTA3:
            MOVLW          .50
            MOVWF          SEGUNDO
VUELTA2:
            MOVLW          .249
            MOVWF          TERCERO
VUELTA1:
            NOP
            DECFSZ           TERCERO,1
            GOTO  VUELTA1
            DECFSZ           SEGUNDO,1
            GOTO  VUELTA2
            DECFSZ           PRIMERO,1
            GOTO  VUELTA3
            RETURN
END



SIMULACIÓN






sábado, 2 de abril de 2011

Programa sencillo en ASM

;AECHM
;1.    Realizar  la siguiente secuencia de luces:  (se pueden mostrar en cualquier puerto), cada salida deberá mostrarse 0,5 segundos, y en forma cíclica.

    List     P=16F877A
    include "p16F877A.INC"
   
    ;DECLARACION DE VARIABLES
    PRIMERO EQU 20H
    SEGUNDO EQU 21H
    TERCERO EQU 22H
    BANKSEL TRISB ;BANCO1
    MOVLW    00H     
    MOVWF    TRISB ;PUERTOB COMO SALIDA
    BANKSEL PORTB ;BANCO0
    CLRF PORTB    ;ENCERAR PUERTO B
;PRINCIPAL
INICIO:
    MOVLW    00H
    MOVWF    PORTB
    CALL    RETARDO
    MOVLW    81H
    MOVWF    PORTB
    CALL    RETARDO
    MOVLW    0C3H
    MOVWF    PORTB
    CALL    RETARDO
    MOVLW    0E7H
    MOVWF    PORTB
    CALL    RETARDO
    MOVLW    0FFH
    MOVWF    PORTB
    CALL    RETARDO
    MOVLW    0E7H
    MOVWF    PORTB
    CALL    RETARDO
    MOVLW    0C3H
    MOVWF    PORTB
    CALL    RETARDO
    MOVLW    081H
    MOVWF    PORTB
    CALL    RETARDO
    MOVLW    00H
    MOVWF    PORTB
    CALL    RETARDO
    GOTO INICIO
RETARDO:
    MOVLW    .10
    MOVWF    PRIMERO
VUELTA3:
    MOVLW    .50
    MOVWF    SEGUNDO
VUELTA2:
    MOVLW .249
    MOVWF    TERCERO
VUELTA1:
    NOP
    DECFSZ    TERCERO,1
    GOTO    VUELTA1
    DECFSZ    SEGUNDO,1
    GOTO    VUELTA2
    DECFSZ    PRIMERO,1
    GOTO    VUELTA3
    RETURN
END