;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
martes, 26 de abril de 2011
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
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
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
;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
Suscribirse a:
Entradas (Atom)