Está en la página 1de 3

;Declaracion de constantes BotonA equ d'0' ;Los botones se ubican en RA2 y RA3 BotonB equ d'1' BotonC equ

d'2' BotonD equ d'3' ;Declaracion de datos en memoria ValorPORTA res 1 ;Variable que guarda el ultimo valor del puerto A ConteoRetardo res 1 ;Variable que guarda el conteo de retardo CONTADOR1 res 1 Cantidad res 1 ;======================================================================== ;Rutina principal ;---------------;Esta rutina se encuentra en la direccion 0x00000 (vector de arranque) clrf PORTA ;Se coloca el valor de los puertos a 0 antes de clrf PORTC ;establecerlos como salida bsf STATUS, RP0 ;Se selecciona el banco 1 movlw 0x06 ;Se establecen los canales del ADC en modo digital movwf ADCON1 movlw 0xFF ;Se colocan RA2 y RA3 como entradas, el resto son movwf TRISA clrf TRISB ;salidas clrf TRISC ;Todo el puerto C se establece como salidas bcf STATUS, RP0 ;Selecciona el banco 0 nuevamente Principal: movlw 0xC8 movwf Cantidad call Izquierda movlw 0xC8 movwf Cantidad call Izquierda movlw 0xC8 movwf Cantidad call Centro movlw 0xC8 movwf Cantidad call Centro movlw 0xC8 movwf Cantidad call Derecha movlw 0xC8 movwf Cantidad call Derecha ;En caso de haberlo estado, incrementa la

movlw 0xC8 movwf Cantidad call Centro movlw 0xC8 movwf Cantidad call Centro ;En caso de haberlo estado, incrementa la

goto Principal Derecha: bsf PORTB,0 movlw d'28' call Retardo bcf PORTB,0 movlw d'172' call Retardo decfsz Cantidad,F goto Derecha return Centro: bsf PORTB,0 movlw d'17' call Retardo bcf PORTB,0 movlw d'183' call Retardo decfsz Cantidad,F goto Centro return Izquierda: bsf PORTB,0 movlw d'6' call Retardo bcf PORTB,0 movlw d'194' call Retardo decfsz Cantidad,F goto Izquierda return

;Si fue asi, decrementa la cuenta en 1 ;Repite el proceso

Retardo: movwf ConteoRetardo Nuevo_Retardo: movlw d'25' movwf CONTADOR1 Retardo_1ms: decfsz CONTADOR1,F goto Retardo_1ms decfsz ConteoRetardo,f goto Nuevo_Retardo return

end

También podría gustarte