Buscar este blog

sábado, 28 de noviembre de 2015

Control de giro de un motor con visualización en LCD e HYPERTERMINAL

PROCESSOR 16F877; PROCESADOR A UTILIZAR
INCLUDE <P16F877.INC>; LIBRERIA DEL PIC

; VARIABLES DEL DELAY
VAL1 EQU 0x30
VAL2 EQU 0x31

    ORG 0; VECTOR DE RESET
    GOTO INICIO
    ORG 5; INICIO DEL PROGRAMA

; CONFIGURACION DE PUERTOS
INICIO:
CLRF PORTA; LIMPIA LE PUERTO A
CLRF PORTB; LIMPIA LE PUERTO B
CLRF PORTC; LIMPIA LE PUERTO C
    CLRF PORTD; LIMPIA EL PUERTO D
CLRF PORTE; LIMPIA EL PUERTO E
    BSF STATUS, RP0
    BCF STATUS, RP1; SELECCIONA EL BANCO 1
MOVLW 06H; CONFIGURA PUERTOS A Y E COMO DIGITALES
    MOVWF ADCON1
    MOVLW 3FH; CONFIGURA PUERTO A COMO ENTRADA
    MOVWF TRISA
    CLRF TRISB; CONFIGURA PUERTO B COMO SALIDA
CLRF TRISC; CONFIGURA PUERTO C COMO SALIDA
    CLRF TRISD; CONFIGURA PUERTO D COMO SALIDA
CLRF TRISE; CONFIGURA PUERTO E COMO SALIDA

; CONFIGURACION PARA EL REGISTRO DEL TRANSMISOR
    BSF STATUS, RP0; BIT DE SELECCION DE VELOCIDAD
    MOVLW D'25'; VELOCIDAD DEL BAUD, 9600
MOVLW 0CFH; PROGRAMA TERMINALES RC7 RX COMO ENTRADA
MOVWF TRISC; Y RC6 - TX COMO SALIDA
MOVLW 24H; MODO ASINCRONO DE 8 BITS
MOVWF TXSTA; HABILITA LA TRANSMICION
    BCF PIE1, TXIE; INTERRUPCION DE TRANSMICINO INHABILITADA
BCF PIE1, RCIE; INTERRUPCION DE RECEPCINO INHABILITADA
BCF STATUS, RP0; SELECCIONA EL BANCO CERO
MOVLW 90H; RECEPCION HABILITADA PARA 8 BITS DE DATOS
MOVWF RCSTA

    ; COMFIGURACION PARA EL REGISTRO DE RECEPTOR
    BSF RCSTA, SPEN; HABILITA EL PUERTO SERIE
    BSF RCSTA, CREN; CONFIGURA LA RECEPCION CONTINUA EN MODO ASINCRONO

; PROGRAMA PRINCIPAL
PROGRAMA:
    CALL LCD_L1; CONFIGURA LA LCD

; LECTURA DE LA ENTRADA
; REVISA SI EN LA ENTRADA HAY UN CERO
REV0:
MOVF PORTA,0 ; LEE EL PUERTO A Y MANDA EL DATO A W
SUBLW 0x00 ; RESTA W CON CERO
BTFSS STATUS,Z ; REVISA SI LA RESTA ES CERO
GOTO REV1 ; NO, VE A REV1
CALL CERO ; SI VE A CERO

; REVISA SI EN LA ENTRADA HAY UN UNO
REV1:  
MOVF PORTA,0 ; LEE EL PUERTO A Y MANDA EL DATO A W
      SUBLW 0x01 ; RESTA W CON UNO
BTFSS STATUS,Z ; REVISA SI LA RESTA ES CERO
GOTO REV2 ; NO, VE A REV2
CALL UNO ; SI VE A UNO

; REVISA SI EN LA ENTRADA HAY UN DOS
REV2:  
MOVF PORTA,0 ; LEE EL PUERTO A Y MANDA EL DATO A W
      SUBLW 0x02 ; RESTA W CON DOS
BTFSS STATUS,Z ; REVISA SI LA RESTA ES CERO
GOTO REV0 ; NO, VE A PROGRAMA
CALL DOS ; SI VE A UNO


; SUBRRUTINAS DE DESPLEGADO
CERO:
    CALL LCD_L1; CONFIGURA LA LCD
    CALL M3; MUESTRA MENSAJE
MOVLW B'000'; MUEVE CERO A W
MOVWF PORTE; MANDA DATOS AL PUERTO E
CALL ESCRIBECERO
GOTO PROGRAMA

ESCRIBECERO:
MOVLW 'M'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'O'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'T'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'O'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'R'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW ' '        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'A'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'P'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'A'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'G'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'A'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'D'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'O'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL  
MOVLW ' '        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL  
    RETURN

UNO:
    CALL LCD_L1; CONFIGURA LA LCD
    CALL M1; MUESTRA MENSAJE
MOVLW B'001'
MOVWF PORTE; MANDA DATOS AL PORT E
CALL ESCRIBEUNO
GOTO PROGRAMA

ESCRIBEUNO:
MOVLW 'G'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'I'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'R'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'O'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW ' '        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'D'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'E'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'R'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'E'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'C'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'H'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'A'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW ' '        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL    
    RETURN

DOS:
    CALL LCD_L1; CONFIGURA LA LCD
    CALL M2; MUESTRA MENSAJE
MOVLW B'010'
MOVWF PORTE; MANDA DATOS AL PORT E  
CALL ESCRIBEDOS
GOTO PROGRAMA

ESCRIBEDOS:
MOVLW 'G'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'I'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'R'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'O'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW ' '        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'I'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'Z'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'Q'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'U'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'I'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'E'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'R'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'D'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW 'A'        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL
MOVLW ' '        
    MOVWF TXREG; MUEVE W AL REGISTRO DE TRANSMICION
    BSF STATUS, RP0; CAMBIO AL BANCO 1
    CALL TRANSMITE; TRANSMITE EL NUMERO AL CANAL  
    RETURN

; MENSAJES PARA ENVIAR
M1:
    MOVLW 'G'
    MOVWF PORTD
    CALL ESCRIBE
MOVLW 'I'        
    MOVWF PORTD      
    CALL ESCRIBE      
    MOVLW 'R'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'O'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW ' '
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'D'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'E'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'R'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'E'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'C'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'H'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'A'
    MOVWF PORTD
    CALL ESCRIBE
    RETURN    

M2:
    MOVLW 'G'
    MOVWF PORTD
    CALL ESCRIBE
MOVLW 'I'          
    MOVWF PORTD        
    CALL ESCRIBE      
    MOVLW 'R'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'O'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW ' '
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'I'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'Z'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'Q'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'U'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'I'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'E'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'R'
    MOVWF PORTD
    CALL ESCRIBE
  MOVLW 'D'
    MOVWF PORTD
    CALL ESCRIBE
  MOVLW 'A'
    MOVWF PORTD
    CALL ESCRIBE
    RETURN

M3:
    MOVLW 'M'
    MOVWF PORTD
    CALL ESCRIBE
MOVLW 'O'          
    MOVWF PORTD        
    CALL ESCRIBE        
    MOVLW 'T'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'O'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'R'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW ' '
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'A'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'P'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'A'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'G'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'A'
    MOVWF PORTD
    CALL ESCRIBE
    MOVLW 'D'
    MOVWF PORTD
    CALL ESCRIBE
MOVLW 'O'
    MOVWF PORTD
    CALL ESCRIBE
    RETURN    

; SUBRRUTINA PARA INICIALIZAR LA LCD
LCD_L1:
BCF PORTB,7; RS=0, MODO INSTRUCCION
CALL DELAY
    MOVLW 0X01; LIMPIA EL LCD
    MOVWF PORTD
    CALL COMANDO; SE DA DE ALTA EL COMANDO
    MOVLW 0x0C; SELECCIONA LA PRIMERA LINEA
    MOVWF PORTD
    CALL COMANDO; SE DA DE ALTA EL COMANDO
    MOVLW 0x3C; SE CONFIGURA EL CURSOR
    MOVWF PORTD
    CALL COMANDO; SE DA DE ALTA EL COMANDO
    BSF PORTB, 7; RS=1, MODO ALTO
    RETURN

; SUBRRUTINA PARA EJECUTAR COMANDOS
COMANDO:
    BSF PORTB,6; PON ENALE EN 1
    CALL DELAY; TIEMPO DE ESPERA
    CALL DELAY
BCF PORTB, 6; ENABLE =0
CALL DELAY
    RETURN    

; SUBRRUTINA PARA ESCRIBIR EN LA LCD
ESCRIBE:
    BSF PORTB,7; RS=1, MODO ALTO
    CALL COMANDO
    RETURN

; SUBRRUTINA PARA ESCRIBIR EN HYPERTERMINAL
TRANSMITE    
VERIFICA:; LOOP DE VERIFICACION
       btfss TXSTA,TRMT; PREGUNTA SI TERMINO LA TRANSMICION
       goto VERIFICA; NO, SIGUE VERIFICANDO
       bcf STATUS,RP0; SI, CAMBIA AL BANCO CERO
       return

; SUBRRUTINA DE DELAY
DELAY:        
    MOVLW 0x0F
    MOVWF VAL2
CICLO:
    MOVLW 0XFF
    MOVWF VAL1
CICLO2:
    DECFSZ VAL1, 1
    GOTO CICLO2
    DECFSZ VAL2,1
    GOTO CICLO
    RETURN

 END

1 comentario:

  1. How to earn money playing slots - JT Hub
    How to earn money playing slots? · Win 바카라 사이트 a slot machine 계룡 출장안마 · Paying a progressive jackpot · The player who 목포 출장마사지 wins a progressive jackpot 김해 출장안마 has no time to put 태백 출장마사지

    ResponderEliminar