Programación
;*****************Tipo de microcontrolador******************
LIST P=18F4620;Tipo de microcontrolador
INCLUDE <P18F4620.INC>;Llama a la libreria del microcontrolador
;*****************Configuracion de bits**********************
CONFIG OSC = INTIO67
CONFIG FCMEN = OFF
CONFIG IESO = OFF
CONFIG PWRT = ON
CONFIG BOREN = OFF
CONFIG BORV = 3
CONFIG WDT = OFF
CONFIG WDTPS = 1
CONFIG CCP2MX = PORTBE
CONFIG PBADEN = OFF
CONFIG LPT1OSC = OFF
CONFIG MCLRE = OFF
CONFIG STVREN = OFF
CONFIG LVP = OFF
CONFIG XINST = OFF
CONFIG CP0=OFF,CP1=OFF,CP2=OFF,CP3=OFF
CONFIG CPB = OFF
CONFIG CPD = OFF
CONFIG WRT0=OFF,WRT1=OFF,WRT2=OFF,WRT3=OFF
CONFIG WRTC = OFF
CONFIG WRTB = OFF
CONFIG WRTD = OFF
CONFIG EBTR0 = OFF
CONFIG EBTR1 = OFF
CONFIG EBTR2 = OFF
CONFIG EBTR3 = OFF
CONFIG EBTRB = OFF
;****************Declaracion de variables*********************
CBLOCK 0X100
TIEMPO
TIEMPO1
TIEMPO2
TIEMPO3
TIEMPO4
TIEMPO5
CONT
CONDICION
ESCRIBE_DATO
LEE_DATO
CONTADOR
NUM1
CONVL
CONVH
TIEMPO6
ENDC
#DEFINE _TX PORTA,RA0;DECLARACION DE ETIQUETAS
#DEFINE _RX PORTA,RA1;DECLARACION DE ETIQUETAS
ORG 0X00;Indica al ensamblador la direccion de memoria, inicio del pc "Vector de Inicio"
;************************Comandos***************************
;Zona de codigo ;Columna 1 Columna 2 Columna 3 Columna 4
;Etiquetas Operacion Operandos Comentarios
; Operacion Y datos
CALL _ALLDIGITAL
CALL _TRIS
CALL _OSCILADOR
CALL _BAUDIOS
BEGIN
CALL botones
FIN
GOTO BEGIN
_ALLDIGITAL
MOVLW B'00001111'
MOVWF BSR
BCF ADCON0,ADON
BSF ADCON1,PCFG3
BSF ADCON1,PCFG2
BSF ADCON1,PCFG1
BCF ADCON1,PCFG0
BSF CMCON,CM2
BSF CMCON,CM1
BSF CMCON,CM0
BCF CVRCON,CVREN
RETURN
_TRIS
MOVLW B'00001111'
MOVWF BSR
BSF TRISA,RA0
BCF TRISA,RA1
MOVLW .255
MOVWF TRISB
;CLRF TRISC
CLRF TRISD
;CLRF TRISE
BSF TRISE,RE0
RETURN
_OSCILADOR
MOVLW B'00001111'
MOVWF BSR
BCF OSCCON,IDLEN
BSF OSCCON,IRCF2
BSF OSCCON,IRCF1
BCF OSCCON,IRCF0
BSF OSCCON,SCS1
BSF OSCCON,SCS0
BCF OSCTUNE,INTSRC
BCF OSCTUNE,PLLEN
BCF OSCTUNE,TUN4
BCF OSCTUNE,TUN3
BCF OSCTUNE,TUN2
BCF OSCTUNE,TUN1
BCF OSCTUNE,TUN0
RETURN
_BAUDIOS
MOVLW .15
MOVWF BSR
MOVLW .0
MOVWF SPBRGH
MOVLW .25
MOVWF SPBRG
;*********************** CONFIGURACION TX *************************
BCF TXSTA,CSRC
BCF TXSTA,TX9
BSF TXSTA,TXEN
BCF TXSTA,SYNC
BSF TXSTA,BRGH
BCF TXSTA,BRG16
BCF TXSTA,TRMT
BCF TXSTA,TX9D
;*********************** CONFIGURACION RX *************************
BSF RCSTA,SPEN
BCF RCSTA,RX9
BCF RCSTA,SREN
BSF RCSTA,CREN
BCF RCSTA,ADEN
; BCF RCSTA,BRG16
; BCF RCSTA,TRMT
BCF RCSTA,RX9D
;*********************** LIMPIAR BUFFER ***************************
CLRF RCREG
RETURN
;*********************** TRANSMISION **********************************
__TX
;MOVLW 'A'
MOVWF TXREG
AUN_NO BTFSS TXSTA,TRMT ;INFORMA CUANDO SE EVIA EL ULTIMO DATO
GOTO NO_ENVIADO
GOTO ENVIADO
NO_ENVIADO
GOTO AUN_NO
ENVIADO
RETURN
botones
call boton_inicio;Estado inicial
call boton_1;
call boton_2;
call boton_3;
call boton_4;
call boton_5;
call boton_6;
call boton_7;
call boton_8;
call boton_9;
call boton_0;
call boton_A;
call boton_B;
call boton_C;
call boton_D;
call boton_E;
call boton_F;
CALL BOTON_BORRAR
return
;************************Estado inicial***************************
boton_inicio
MOVF PORTB,W;w=portB
XORLW .255 ;W XOR 255
BTFSS STATUS,Z ;SI ES VERDADERO SALTAR UNA LINEA
GOTO boton_1
MOVLW .64
MOVWF PORTD;TRASLADAR A PORTA
; MOVLW '0'
; CALL __TX
GOTO _NO
return
;************************Tecla 1***************************
boton_1
MOVF PORTB,W;w=portB
XORLW .119 ;W XOR 1
BTFSS STATUS,Z ;SI ES VERDADERO SALTAR UNA LINEA
GOTO boton_2
MOVLW .6
MOVWF PORTD;TRASLADAR A PORTA
MOVLW '1'
CALL __TX
CALL DELAY_500MS
GOTO _NO
return
;************************Tecla 2***************************
boton_2
MOVF PORTB,W;w=portB
XORLW .123;W XOR 2
BTFSS STATUS,Z ;SI ES VERDADERO SALTAR UNA LINEA
GOTO boton_3
MOVLW .91
MOVWF PORTD;TRASLADAR A PORTA
MOVLW '2'
CALL __TX
CALL DELAY_500MS
GOTO _NO
return
;************************Tecla 3***************************
boton_3
MOVF PORTB,W;w=portB
XORLW .125 ;W XOR 2
BTFSS STATUS,Z ;SI ES VERDADERO SALTAR UNA LINEA
GOTO boton_4
MOVLW .79
MOVWF PORTD;TRASLADAR A PORTA
MOVLW '3'
CALL __TX
CALL DELAY_500MS
GOTO _NO
return
;************************Tecla 4***************************
boton_4
MOVF PORTB,W;w=portB
XORLW .183 ;W XOR 2
BTFSS STATUS,Z ;SI ES VERDADERO SALTAR UNA LINEA
GOTO boton_5
MOVLW .102
MOVWF PORTD;TRASLADAR A PORTA
MOVLW '4'
CALL __TX
CALL DELAY_500MS
GOTO _NO
return
;************************Tecla 5***************************
boton_5
MOVF PORTB,W;w=portB
XORLW .187 ;W XOR 2
BTFSS STATUS,Z ;SI ES VERDADERO SALTAR UNA LINEA
GOTO boton_6
MOVLW .109
MOVWF PORTD;TRASLADAR A PORTA
MOVLW '5'
CALL __TX
CALL DELAY_500MS
GOTO _NO
return
;************************Tecla 6***************************
boton_6
MOVF PORTB,W;w=portB
XORLW .189 ;W XOR 2
BTFSS STATUS,Z ;SI ES VERDADERO SALTAR UNA LINEA
GOTO boton_7
MOVLW .125
MOVWF PORTD;TRASLADAR A PORTA
MOVLW '6'
CALL __TX
CALL DELAY_500MS
GOTO _NO
return
;************************Tecla 7***************************
boton_7
MOVF PORTB,W;w=portB
XORLW .215 ;W XOR 2
BTFSS STATUS,Z ;SI ES VERDADERO SALTAR UNA LINEA
GOTO boton_8
MOVLW .7
MOVWF PORTD;TRASLADAR A PORTA
MOVLW '7'
CALL __TX
CALL DELAY_500MS
GOTO _NO
return
;************************Tecla 8***************************
boton_8
MOVF PORTB,W;w=portB
XORLW .219 ;W XOR 2
BTFSS STATUS,Z ;SI ES VERDADERO SALTAR UNA LINEA
GOTO boton_9
MOVLW .127
MOVWF PORTD;TRASLADAR A PORTA
MOVLW '8'
CALL __TX
CALL DELAY_500MS
GOTO _NO
return
;************************Tecla 9***************************
boton_9
MOVF PORTB,W;w=portB
XORLW .221 ;W XOR 2
BTFSS STATUS,Z ;SI ES VERDADERO SALTAR UNA LINEA
GOTO boton_0
MOVLW .103
MOVWF PORTD;TRASLADAR A PORTA
MOVLW '9'
CALL __TX
CALL DELAY_500MS
GOTO _NO
return
;************************Tecla 0***************************
boton_0
MOVF PORTB,W;w=portB
XORLW .235 ;W XOR 2
BTFSS STATUS,Z ;SI ES VERDADERO SALTAR UNA LINEA
GOTO boton_A
MOVLW .63
MOVWF PORTD;TRASLADAR A PORTA
MOVLW '0'
CALL __TX
CALL DELAY_500MS
GOTO _NO
return
;************************Tecla A***************************
boton_A
MOVF PORTB,W;w=portB
XORLW .126 ;W XOR 2
BTFSS STATUS,Z ;SI ES VERDADERO SALTAR UNA LINEA
GOTO boton_B
MOVLW .119
MOVWF PORTD;TRASLADAR A PORTA
MOVLW 'A'
CALL __TX
CALL DELAY_500MS
GOTO _NO
return
;************************Tecla B***************************
boton_B
MOVF PORTB,W;w=portB
XORLW .190 ;W XOR 2
BTFSS STATUS,Z ;SI ES VERDADERO SALTAR UNA LINEA
GOTO boton_C
MOVLW .124
MOVWF PORTD;TRASLADAR A PORTA
MOVLW 'B'
CALL __TX
CALL DELAY_500MS
GOTO _NO
return
;************************Tecla C***************************
boton_C
MOVF PORTB,W;w=portB
XORLW .222 ;W XOR 2
BTFSS STATUS,Z ;SI ES VERDADERO SALTAR UNA LINEA
GOTO boton_D
MOVLW .57
MOVWF PORTD;TRASLADAR A PORTA
MOVLW 'C'
CALL __TX
CALL DELAY_500MS
GOTO _NO
return
;************************Tecla D***************************
boton_D
MOVF PORTB,W;w=portB
XORLW .238 ;W XOR 2
BTFSS STATUS,Z ;SI ES VERDADERO SALTAR UNA LINEA
GOTO boton_E
MOVLW .94
MOVWF PORTD;TRASLADAR A PORTA
MOVLW 'D'
CALL __TX
CALL DELAY_500MS
GOTO _NO
return
;************************Tecla E***************************
boton_E
MOVF PORTB,W;w=portB
XORLW .231 ;W XOR 2
BTFSS STATUS,Z ;SI ES VERDADERO SALTAR UNA LINEA
GOTO boton_F
MOVLW .121
MOVWF PORTD;TRASLADAR A PORTA
MOVLW 'E'
CALL __TX
CALL DELAY_500MS
GOTO _NO
return
;************************Tecla F***************************
boton_F
MOVF PORTB,W;w=portB
XORLW .237 ;W XOR 2
BTFSS STATUS,Z ;SI ES VERDADERO SALTAR UNA LINEA
GOTO boton_inicio
MOVLW .113
MOVWF PORTD;TRASLADAR A PORTA
MOVLW 'F'
CALL __TX
CALL DELAY_500MS
GOTO _NO
return
BOTON_BORRAR
BTFSS PORTE,RE0 ;COUT=1?
GOTO _NO_COM
GOTO _SI_COM
_NO_COM
GOTO _FIN_COM
_SI_COM
MOVLW 'S'
CALL __TX
CALL DELAY_500MS
_FIN_COM
RETURN
_NO
GOTO _FIN
_FIN
RETURN
;------------------------SECCION DE RETARDOS---------------------------------
_DELAY_100us
MOVLW D'12'
MOVWF TIEMPO
NOP
NOP
LOOP__ DECFSZ TIEMPO,F
GOTO RETARDOS
RETURN
RETARDOS
NOP
NOP
NOP
GOTO LOOP__
;-----------------------1MS---------------------------------------------------
DELAY_1MS
MOVLW D'62'
MOVWF TIEMPO
NOP
NOP
LOOP_ DECFSZ TIEMPO,F
GOTO RETARDO_
RETURN
RETARDO_
NOP
NOP
NOP
GOTO LOOP_
;-----------------------5_MS-----------------------------------------------
DELAY_5MS
MOVLW D'6'
MOVWF TIEMPO2
NOP
NOP
LOOP1_ DECFSZ TIEMPO2,F
GOTO RETARDO1_
RETURN
RETARDO1_
CALL DELAY_1MS
GOTO LOOP1_
;-----------------------10_MS-----------------------------------------------
DELAY_10MS
MOVLW D'3'
MOVWF TIEMPO3
NOP
NOP
LOOP2_ DECFSZ TIEMPO3,F
GOTO RETARDO2_
RETURN
RETARDO2_
CALL DELAY_5MS
GOTO LOOP2_
;-----------------------100_MS-----------------------------------------------
DELAY_100MS
MOVLW D'11'
MOVWF TIEMPO4
NOP
NOP
LOOP3_ DECFSZ TIEMPO4,F
GOTO RETARDO3_
RETURN
RETARDO3_
CALL DELAY_10MS
GOTO LOOP3_
;-----------------------1_S-----------------------------------------------
DELAY_1S
MOVLW D'11'
MOVWF TIEMPO5
NOP
NOP
LOOP4_ DECFSZ TIEMPO5,F
GOTO RETARDO4_
RETURN
RETARDO4_
CALL DELAY_100MS
GOTO LOOP4_
;-----------------------5_S-----------------------------------------------
DELAY_5S
MOVLW D'6'
MOVWF TIEMPO6
NOP
NOP
LOOP5_ DECFSZ TIEMPO6,F
GOTO RETARDO5_
RETURN
RETARDO5_
CALL DELAY_1S
GOTO LOOP5_
DELAY_500MS
CALL DELAY_100MS
CALL DELAY_100MS
CALL DELAY_100MS
CALL DELAY_100MS
CALL DELAY_100MS
RETURN
END