*		*
/TITLE "SERVO.ASM"
;*** *** ***
;EL SISTEMA OPERA CON UN PIC16F877A EN
;CONFIGURACION OSCILADOR DE CRISTAL DE 4 MHZ
;SOFWARE ELABORADO POR:
;NOMBRE COD. 000000
;*** *** ***
/LIST P=16F877A, F=INHX8M
/INCLUDE "P16F877A.INC"

/__CONFIG  _CP_OFF & _DEBUG_OFF & _WRT_OFF & _CPD_OFF & _LVP_OFF & _PWRTE_OFF &  _WDT_OFF & _XT_OSC


TEMP1 EQU 0X20
TEMP2 EQU 0X21
TEMP3 EQU 0X22
P_H EQU 0X23
P_M EQU 0X24
P_L EQU 0X25
;*** *** ***
/ORG 0000
/GOTO START
/ORG 0004
/GOTO SER_INT
/ORG 0005
START
/CALL SX1
/CALL INI_PORT
/CALL INI_REG
MAIN
/BTFSS PORTD,4
/GOTO R_A
/BTFSS PORTD,5
/GOTO R_D
/BTFSS PORTD,6
/GOTO R_I
/BTFSS PORTD,7
/GOTO R_R
/GOTO MAIN
;*** *** ***
R_A
/BSF PORTD,0
/BSF PORTD,2
/CALL SMX1
/BCF PORTD,0
/BCF PORTD,2
/GOTO MAIN
;*** *** ***
R_D
/BSF PORTD,0
/BSF PORTD,3
/CALL SMX1
/BCF PORTD,0
/BCF PORTD,3
/GOTO MAIN
;*** *** ***
R_I
/BSF PORTD,1
/BSF PORTD,2
/CALL SMX1
/BCF PORTD,1
/BCF PORTD,2
/GOTO MAIN
;*** *** ***
R_R
/BSF PORTD,1
/BSF PORTD,3
/CALL MSX1
/BCF PORTD,1
/BCF PORTD,3
/GOTO MAIN
;*** *** ***
INI_PORT
/BSF STATUS,RP0
/MOVLW 0XF0
/MOVWF PORTD
/BCF STATUS,RP0
/RETURN
;*** *** ***
INI_REG
/CLRF PORTD
/RETURN
;*** *** ***
/MSX1
/GOTO DELAY
;*** *** ***
/SX1
/GOTO DELAY
;*** *** ***
/DELAY
/RETURN

;*** *** ***
SX1/
/MOVLW D'44'
/MOVWF P_H
/MOVLW D'31'
/MOVWF P_M
/MOVLW D'243'
/MOVWF P_L
/GOTO DELAY
;*** *** ***
MSX100
/MOVLW D'14'
/MOVWF P_H
/MOVLW D'166'
/MOVWF P_M
/MOVLW D'13'
/MOVWF P_L
/GOTO DELAY
;*** *** ***
MSX200
/MOVLW D'173'
/MOVWF P_H
/MOVLW D'72'
/MOVWF P_M
/MOVLW D'4'
/MOVWF P_L
/GOTO DELAY
;*** *** ***
DELAY
/MOVFW P_H
/MOVWF TEMP3
/MOVFW P_M
/MOVWF TEMP2
/MOVFW P_L
/MOVWF TEMP1
/DECFSZ TEMP1,F
/GOTO $-1
/DECFSZ TEMP2,F
/GOTO $-5
/DECFSZ TEMP3,F
/GOTO $-9
/RETURN
;*** *** ***
/END