Paso 3: Software
¿Ese archivo está aquí: http://electroniclessons.com/Laser.txt
Sin embargo, voy a comentar también en el código principal, que está por debajo. Trata de seguir a lo largo de!
INICIALIZAR; RUTINA DE PUESTA EN MARCHA
MOVLW B '1001'; GPIO0 = ADC-EN - GPIO1 = ZUMBADOR - GPIO3 = ENTRADA PULSADOR
GPIO DE TRIS; INICIALIZAR
MOVLW B'01000000; CONFIGURACIÓN DEL ADC
MOVWF ADCON0; INICIALIZAR
CLRF GPIO; CLARO TODAS LAS E/S
MOVLW B '00001000'; NO ES IMPORTANTE A ESTE CÓDIGO
OPCIÓN
LLAMADA LOOP3; LLAMADA DE CORTO RETARDO
INICIO:
BTFSC GPIO, 3; ESPERAR BOTÓN A PRESIONAR
GOTO INICIO; SI NO, PUEDE OTRA VEZ
LLAMADA LOOP3; SI SÍ, UNA SERIE DE TRES RETRASOS ANTES DE LA EXPLORACIÓN PARA UN CAMBIO EN LA LUZ
LLAMADA LOOP3
LLAMADA LOOP3
EXPLORACIÓN:
MOVLW B '01000001'; ENCENDER ADC
MOVWF ADCON0; INICIALIZAR
BSF ADCON0, GO; TOMAR LECTURA DE ADC
WAITADC:
BTFSC ADCON0, GO; Encuesta de lectura completar
GOTO WAITADC; Si no hace, mantener la votación
MOVLW B '00000011'; Coloque de 03H en registro compare (Comparar contra aproximadamente 60mv)
SUBWF DIRECCIÓN, C; Comparar la instrucción
BTFSC STATUS, C; Si la lectura del ADC es más de 03H, se ha detectado un incumplimiento
GOTO SIGUIENTE; Si se ha detectado incumplimiento a ir la siguiente rutina
GOTO EXPLORACIÓN; Si no, tomar a otro ADC leyendo
SIGUIENTE
BSF GPIO, 1; encender el zumbador
LLAMADA LOOP3; serie de dos demoras
LLAMADA LOOP3
BCF GPIO, 1; Apague el timbre
LLAMADA LOOP3; serie de dos demoras
LLAMADA LOOP3
BTFSC GPIO, 3; ¿ha sido empujado el botón?
GOTO SIGUIENTE; Si no, otra vez un pitido
; en caso afirmativo, goto espera estado
WAITSTATE:
BTFSS GPIO, 3; Compruebe para ver si todavía ser boton
GOTO WAITSTATE; Si es así, revise de nuevo
LLAME A LOOP1; Si no, llame un breve retraso, luego reiniciar
RESET
; LOOP3/4 trabajo juntos como una rutina de retardo largo
LOOP3:
MOVLW 0 X 00
MOVWF TEMP1
MOVLW 0XF0
MOVWF TEMP2
LOOP4:
DECFSZ TEMP1
GOTO LOOP4
DECFSZ TEMP2
GOTO LOOP4
VOLVER
FINAL