HOLA, como proyecto fin de curso de el CF que estoy estudiando.. tengo que realizar una práctica con pic16f84... solo hemos hecho practicas con pequeños movimientos en leds...sencillas. pero quiero realizar un buen proyecto...mis conocimientos en control de LCD y motores es lo mirado por internet estos dias...
MI IDEA ES mediante 3 sensores de movimiento (al cruzarlos un objeto en una maketa) mostrará 3 mensajes diferentes, y estoy estudiando la posibilidad de poner motor paso a paso para levantar una pequeña maderita.. pero solo me qedan libres RA3 Y RA4..son 2.el LCD me ocupa todas las RB. tb puedo aprobechar RA2 por que el motor se activara simultaneamente al 3er mensaje...
solo e podido mirar programas ejemplo (utilizo MPLAB) y todos mis conocimientos del LCD es lo visto por internet estos dias..pego mi "boceto" de programa para la detección de los mensajes.. AHI VA:::
------------------------------------------------------------------------------------------------------------------------------------------
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST P=16f84A
INCLUDE <P16F84A INC>
CBLOCK 0x0C
ENDC
#DEFINE sensor1 PORTA,0;
#DEFINE sensor2 PORTA,1;
#DEFINE sensor3 PORTA,2;
W EQU 0
F EQU 1
ESTADO EQU 0x03
PUERTAA EQU 0x05
PUERTAB EQU 0x06
INTCOM EQU 0x0B
TEMP EQU 0X0D
;ZONA DE CÓDIGOS
;*******************************************************************************************
ORG 0
goto inicio
ORG 5
clrf PUERTAB
inicio
bsf ESTADO,5
clrf PUERTAB ;para el LCD, todo salidas?
movlw b'11100111' ;RA0-RA2 entradas, sensor, RA3yRA4 salidas motor
movwf PUERTAA
andlw b'00000111'
movwf TEMP
call LCD_inicializa ;ESTAS DEBEN SER LAS RUTINAS PARA INICIALIZAR EL DISPLAY, NO??
movlw Mensaje1 ;AQUI LO QUE QUIERO ES QUE CARGE EL MENSAJE 1, OSEA PUENTE ELEVADIZO, EL PREDEFINIDO.
call LCD_Mensaje
princip call LCD_Linea2 ;ALGORITMO PARA DETECTAR CUANDO EL BARCO CRUZA CADA SENSOR
movlw Mensaje1 ;carga el mensaje predef
movlw b'00000001' ;Detecta sensor en RA0
subwf TEMP,w
btfsc ESTADO,2
movlw Mensaje2 ;si estaba activo el sensro RA0
call LCD_Mensaje ;¿?¿?¿?¿?¿?¿--si estaba activo OK, pero si no...
movlw b'00000010' ;Detecta sensor en RA1
subwf TEMP,w
btfsc ESTADO,2
movlw Mensaje3 ;si estaba activo el sensor RA1
call LCD_Mensaje ;?¿?¿?¿?¿?¿
movlw b'00000100' ;Detecta sensor en RA2. (se presupone q no se dara el caso de 2 sensores a la vez a nivel alto)
subwf TEMP,w
btfsc ESTADO,2
movlw Mensaje4 ;si estaba activo el sensor RA2
call LCD_Mensaje
goto princip
Mensaje addwf PCL,F
Mensaje1 DT" PUENTE ELEVADIZO"
Mensaje2 DT" BARCO A 100M.",0x00
Mensaje3 DT" PUENTE LEVANTANDOSE.NO CRUZAR",0x00
Mensaje4 DT" PUENTE BAJANDO.",0x00
INCLUDE <RETARDOS.INC>
INCLUDE <LCD_4BIT.INC>
INCLUDE <LCD_MENS.INC>
END
------------------------------------------------------
NO PIDO ME REALICEN EL PROGRAMA, NI MUCO MENOS POR DIOS!! DISFRUTO SACÁNDOLO YO, EL MUNDO DE LOS PICS ES INCREIBLE.. solo agradeceria orientaciones respecto a el modo de detección de los sensores, y por supuesto respeco a los motores.
------------
GRACIAS POR SU ATENCIÓN.