Fecha actual Vie Feb 22, 2019 3:22 am
Para un programador, el nivel más bajo posible en una computadora es alguna variedad de lenguaje ensamblador. Después de esto, es necesario aprender Electrónica para manejar y entender la parte física de cualquier sistema de computadoras o electrónico en general.
Usuarios leyendo este tema:
Ninguno
por ~~ » Sab Jul 08, 2017 1:10 pm
- Código: Seleccionar todo
LIST P=16F84 ;Se utlizara un PIC 16F84
RADIX HEX ;Se usara sistema hexadecimal
OPTION EQU 0X01 ;Direccion OPTION
STATUS EQU 0X03 ;Direccion STATUS
PORTA EQU 0X05 ;Direccion PORTA
PORTB EQU 0X06 ;Direccion PORTB
SELECTO EQU 0X0C ;Direccion SELECTO
DETECTA EQU 0X0D ;Direccion DETECTA
goto INICIO ;Ir a INICIO
INICIO bsf STATUS,5 ;Se selecciona banco 1
movlw b'11111111' ;Mover a w el binario
movwf PORTA ;Configurar PORTA como entradas
movlw b'11000001' ;Mover a w el binario
movwf PORTB ;Configurar PORTB como entradas y salidas
bcf STATUS,5 ;Seleccionar banco 0
movlw b'00000011' ;Mover a w el binario
movwf SELECTO ;Mover el binario a SELECTO
movf PORTA,0 ;Mover a w estados PORTA
andwf SELECTO,0 ;Realizar AND entre PORTA y SELECTO y guardar en w
addlw b'00000001' ;Sumar 1 a w y guardar en w
movwf DETECTA ;Guardar resultado ADD en DETECTA
CICLO btfss PORTB,6 ;Salto si estado de 6 es 1 Temporizador
goto CICLO ;Ir a CICLO
btfsc PORTB,7 ;Salto si estado de 7 es 0 Sensor humedad
goto CICLO ;Ir a CICLO
btfsc PORTA,2 ;Salto si estado de 2 es 0 Nivel bajo
goto LLENADO ;Ir a LLENADO
btfsc PORTA,3 ;Salto si estado de 3 es 0 Nivel alto
goto VACIADO ;Ir a VACIADO
goto LLENADO ;Ir a LLENADO
LLENADO bcf PORTB,5 ;Pasar 5 a estado 0 Valvula vaciado
bsf PORTB,3 ;Pasar 3 a estado 1 Valvula 1 abierta
bsf PORTB,1 ;Pasar 1 a estado 1 Bomba 1 ON
bsf PORTB,4 ;Pasar 4 a estado 1 Valvula 2 abierta
bsf PORTB,2 ;Pasar 2 a estado 1 Bomba 2 ON
btfss PORTA,3 ;Salto si estado de 3 es 1 Nivel alto
goto LLENADO ;Ir a LLENADO
goto VACIADO ;Ir a VACIADO
VACIADO bsf PORTB,5 ;Pasar 5 a estado 1 Valvula vaciado
bcf PORTB,3 ;Pasar 3 a estado 0 Valvula 1 cerrada
bcf PORTB,1 ;Pasar 1 a estado 0 Bomba 1 OFF
bcf PORTB,4 ;Pasar 4 a estado 0 Valvula 2 cerrada
bcf PORTB,2 ;Pasar 2 a estado 0 Bomba 2 OFF
btfsc PORTA,2 ;Salto si estado de 2 es 0 Nivel bajo
goto VACIADO ;Ir a VACIADO
CUENTA decfsz DETECTA ;Decrementa en 1 a DETECTA
goto CICLO ;Ir a CICLO
sleep ;Poner a dormir al PIC
end ;Fin de programa
-
~~
-
por ~~ » Sab Jul 08, 2017 4:30 pm
Agregado código para evitar iniciar el llenado hasta que el tanque esté totalmente vacío.
- Código: Seleccionar todo
LIST P=16F84 ;Se utlizara un PIC 16F84
RADIX HEX ;Se usara sistema hexadecimal
OPTION EQU 0X01 ;Direccion OPTION
STATUS EQU 0X03 ;Direccion STATUS
PORTA EQU 0X05 ;Direccion PORTA
PORTB EQU 0X06 ;Direccion PORTB
SELECTO EQU 0X0C ;Direccion SELECTO
DETECTA EQU 0X0D ;Direccion DETECTA
goto INICIO ;Ir a INICIO
INICIO bsf STATUS,5 ;Se selecciona banco 1
movlw b'11111111' ;Mover a w el binario
movwf PORTA ;Configurar PORTA como entradas
movlw b'11000001' ;Mover a w el binario
movwf PORTB ;Configurar PORTB como entradas y salidas
bcf STATUS,5 ;Seleccionar banco 0
movlw b'00000011' ;Mover a w el binario
movwf SELECTO ;Mover el binario a SELECTO
movf PORTA,0 ;Mover a w estados PORTA
andwf SELECTO,0 ;Realizar AND entre PORTA y SELECTO y guardar en w
addlw b'00000001' ;Sumar 1 a w y guardar en w
movwf DETECTA ;Guardar resultado ADD en DETECTA
CICLO btfss PORTB,6 ;Salto si estado de 6 es 1 Temporizador
goto CICLO ;Ir a CICLO
btfsc PORTB,7 ;Salto si estado de 7 es 0 Sensor humedad
goto CICLO ;Ir a CICLO
btfsc PORTA,2 ;Salto si estado de 2 es 0 Nivel bajo
goto LLENADO ;Ir a LLENADO
btfsc PORTA,3 ;Salto si estado de 3 es 0 Nivel alto
goto VACIADO ;Ir a VACIADO
goto LLENADO ;Ir a LLENADO
LLENADO bcf PORTB,5 ;Pasar 5 a estado 0 Valvula vaciado
bsf PORTB,3 ;Pasar 3 a estado 1 Valvula 1 abierta
bsf PORTB,1 ;Pasar 1 a estado 1 Bomba 1 ON
bsf PORTB,4 ;Pasar 4 a estado 1 Valvula 2 abierta
bsf PORTB,2 ;Pasar 2 a estado 1 Bomba 2 ON
btfss PORTA,3 ;Salto si estado de 3 es 1 Nivel alto
goto LLENADO ;Ir a LLENADO
goto VACIADO ;Ir a VACIADO
VACIADO bsf PORTB,5 ;Pasar 5 a estado 1 Valvula vaciado
bcf PORTB,3 ;Pasar 3 a estado 0 Valvula 1 cerrada
bcf PORTB,1 ;Pasar 1 a estado 0 Bomba 1 OFF
bcf PORTB,4 ;Pasar 4 a estado 0 Valvula 2 cerrada
bcf PORTB,2 ;Pasar 2 a estado 0 Bomba 2 OFF
btfsc PORTA,2 ;Salto si estado de 2 es 0 Nivel bajo
goto VACIADO ;Ir a VACIADO
CUENTA decfsz DETECTA ;Decrementa en 1 a DETECTA
FIN
movlw b'00001100' ;w=Máscara de bits
movwf 255 ;Cargar la máscara en la posición temporal 255
movf PORTA,1 ;Mover a f estados PORTA
andwf 255,0 ;Realizar AND entre 255 y PORTA, y guardar en w
movwf 255 ;Guardar resultado AND en 255
tstfsz 255,0 ;Ver si l resultado de AND es 0 para iniciar el ciclo
goto FIN ;Descansar mientras haya agua
goto CICLO ;Ir a CICLO
sleep ;Poner a dormir al PIC
end ;Fin de programa
-
~~
-
por ~~ » Lun Jul 10, 2017 11:29 pm
- Código: Seleccionar todo
LIST P=16F84 ;Se utlizara un PIC 16F84
RADIX HEX ;Se usara sistema hexadecimal
OPTION EQU 0X01 ;Direccion OPTION
STATUS EQU 0X03 ;Direccion STATUS
PORTA EQU 0X05 ;Direccion PORTA
PORTB EQU 0X06 ;Direccion PORTB
SELECTO EQU 0X0C ;Direccion SELECTO
DETECTA EQU 0X0D ;Direccion DETECTA
DIRECTO EQU 0X0E ;Direccion DIRECTO
goto INICIO ;Ir a INICIO
INICIO bsf STATUS,5 ;Se selecciona banco 1
movlw b'11111111' ;Mover a w el binario
movwf PORTA ;Configurar PORTA como entradas
movlw b'11000001' ;Mover a w el binario
movwf PORTB ;Configurar PORTB como entradas y salidas
bcf STATUS,5 ;Seleccionar banco 0
movlw b'00000011' ;Mover a w el binario
movwf SELECTO ;Mover el binario a SELECTO
movf PORTA,0 ;Mover a w estados PORTA
andwf SELECTO,0 ;Realizar AND entre PORTA y SELECTO y guardar en w
addlw b'00000001' ;Sumar 1 a w y guardar en w
movwf DETECTA ;Guardar resultado ADD en DETECTA
CICLO btfss PORTB,6 ;Salto si estado de 6 es 1 Temporizador
goto CICLO ;Ir a CICLO
btfsc PORTB,7 ;Salto si estado de 7 es 0 Sensor humedad
goto CICLO ;Ir a CICLO
LLENADO bcf PORTB,5 ;Pasar 5 a estado 0 Valvula vaciado
bsf PORTB,3 ;Pasar 3 a estado 1 Valvula 1 abierta
bsf PORTB,1 ;Pasar 1 a estado 1 Bomba 1 ON
bsf PORTB,4 ;Pasar 4 a estado 1 Valvula 2 abierta
bsf PORTB,2 ;Pasar 2 a estado 1 Bomba 2 ON
btfss PORTA,3 ;Salto si estado de A3 es 1 Nivel alto
goto LLENADO ;Ir a LLENADO
bsf DIRECTO,0 ;Poner a 1 el bit 0 de DIRECTO
VACIADO bsf PORTB,5 ;Pasar 5 a estado 1 Valvula vaciado
bcf PORTB,3 ;Pasar 3 a estado 0 Valvula 1 cerrada
bcf PORTB,1 ;Pasar 1 a estado 0 Bomba 1 OFF
bcf PORTB,4 ;Pasar 4 a estado 0 Valvula 2 cerrada
bcf PORTB,2 ;Pasar 2 a estado 0 Bomba 2 OFF
btfss DIRECTO,0 ;Salto si DIRECTO,0 ES 1
goto VACIADO ;Ir a VACIADO
btfsc PORTA,2 ;Salto si estado de 2 es 0 Nivel bajo
goto VACIADO ;Ir a VACIADO
bcf DIRECTO,0 ;Poner a 0 el bit 0 de DIRECTO
CUENTA decfsz DETECTA ;Decrementa en 1 a DETECTA
goto CICLO ;Ir a CICLO
sleep ;Poner a dormir al PIC
end ;Fin de programa
-
~~
-
Volver a
Electrónica
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 11 invitados