Documentos de Académico
Documentos de Profesional
Documentos de Cultura
;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
;----- -----
;----- Universidad de las Américas Puebla -----
;----- Departamente de Ing. Electrónica -----
;----- TESIS -----
;----- Primavera 2006 -----
;----- Luis R. Martinez Nunez ID. 118639 -----
;----- -----
;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
;----- -----
;----- Este es un programa que convierte una señal analogica a -----
;----- una señal digital y agrega componente de protocolo MIDI. -----
;----- -----
;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
;----- ----- ----- ----- DECLARACION DE VARIABLES ----- ----- ----- -------
;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
;----- ----- ----- ----- VECTOR DE INTERRUPCION ----- ----- ----- -------
;----------------------------------------------------------------------------
ORG 0X00
NOP
NOP
GOTO INICIALIZA
; ORG 0X04
; GOTO ISR
;----------------------------------------------------------------------------
;----- ----- ----- ----- INICIALIZACION DE VARIABLES ----- ----- ---- -------
;----------------------------------------------------------------------------
ORG 0X50
INICIALIZA
CLRF ADRESH
CLRF ADRESL
CLRF STATUS
CLRF WTEMP
CLRF STATEMP
CLRF CONVERSION
CLRF ANTERIOR
CLRF TEMPORAL
CLRF RETRASO1
CLRF RETRASO2
CLRF PORTA
CLRF PORTC
CLRF PORTD
108
BSF STATUS, RP0 ; Selecciona Banco1
; BSF TXSTA, BRGH ; High-Speed
MOVLW 0X27
MOVWF SPBRG ; Velocidad = 31.250Kbps, Fosc = 20MHz
MOVLW 0X26
MOVWF TXSTA ; 8 bits, TXEN ON, Asincrona, BGRH = 1
BCF STATUS, RP0 ; Selecciona Banco0
BSF RCSTA, SPEN ; Habilita los pines para transmision
;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
;----- ----- ----- ----- M A I N ----- ----- ----- ----- -----
;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
MAIN
NOP
CALL TRANSMITE
NOP
NOP
GOTO MAIN
NOP
-----------------------------------------------------------------------------
;----- ----- ----- ----- ----- SUBRUTINAS ----- ----- ----- -------------
;----------------------------------------------------------------------------
TRANSMITE
BTFSS PIR1, ADIF ; Checa si ya termino la conversion A/D
GOTO TRANSMITE
BCF PIR1, ADIF ; Limpia bandera de fin de conversion A/D
COMF ADRESH, 1
MOVF ADRESH, W ; Mueve la conversion al WREG
MOVWF CONVERSION ; Mueve la conversion a CONVERSION
MOVWF TEMPORAL ; Mueve la conversion a TEMPORAL
RRF CONVERSION, 1 ; Rota a la derecha para rango de 0-127
BCF CONVERSION, 7 ; Apaga el MSB de CONVERSION que viene de carry
MOVF CONVERSION, W
MOVWF PORTD ; Muestra la conversion en el PuertoD (TEMPORAL)
;CONTENSION
MOVF TEMPORAL, W ; Mueve la conversion al WREG
SUBWF ANTERIOR
BTFSC STATUS, Z ; Salta si esta apagado Zero (son iguales no envia) y polea
GOTO TACQ ; se cicla
NOP
;CC
MOVLW 0xB0 ; Mueve Controlador Canal 0 al TXREG para transmision
MOVWF TXREG
CALL LIBRE ; Identifica cuando se termina de transmitir por USART
BCF STATUS, RP0 ; Selecciona Banco0 despues de LIBRE
109
MOVLW 0x12 ; Mueve Numero de Controlador al TXREG para transmision
MOVWF TXREG ; 0x01 Modulation Wheel
CALL LIBRE ; Llama a LIBRE para transmitir el valor
BCF STATUS, RP0 ; Selecciona Banco0 despues de LIBRE
TACQ
MOVF TEMPORAL, W ; Mueve la conversion al WREG
MOVWF ANTERIOR ; La conversion ya es "anterior"
CALL OFFSET1 ; Tacq
CALL ACQ_TIME
BSF ADCON0, GO ; Reinicia conversion despues de Tacq
RETURN
LIBRE
BSF STATUS, RP0 ; Selecciona Banco1
BTFSC TXSTA, TRMT ; Salta si esta apagado TRMT (aun hay transmision) y polea
RETURN
GOTO LIBRE
OFFSET1
MOVLW 0X16 ; Define valores para registros de retardo
MOVWF RETRASO1 ; 20us de retraso para carga de capacitor de ADC
MOVLW 0X01
MOVWF RETRASO2
RETURN
OFFSET2
MOVLW 0XFF ; Define valores para registros de retardo
MOVWF RETRASO1 ; 50ms de retraso para NOTE ON / NOTE OFF MIDI
MOVLW 0XF4
MOVWF RETRASO2
RETURN
ACQ_TIME
NOP
DECFSZ RETRASO1 ; Ciclo de decremento de registros de retardo
GOTO ACQ_TIME
DECFSZ RETRASO2
GOTO ACQ_TIME
RETURN
END
110