Foros de Electrónica

Comunidad de discusión sobre Automatización, Electrónica industrial, Microcontroladores y electrónica digital, Robótica, Domótica, Telemática, Tecnologías móviles, y muchos temas más.




16f84a cambio de entradas


       



#1  16f84a cambio de entradas
ikermendi
Ubicación: bilbo
Registrado: 25 Dic 2007
Mensajes: 2
citar
Buenas! soy nuevo en este mundo, la verdad es que no tengo ni zorra y tengo una duda que me esta volviendo loco y seguramente sera la mayor chorrada del mundo, pero bueno os la explico.

Tengo 4 entradas y 4 salidas en el puerto B y una entrada y otra salida en el puerto A para la comunicacion por puerto serie. De RB0-RB3 son entradas y el resto las salidas. El programa lo que tiene que hacer es detecar un cambio de interruptores de entrada y al detectarlo enviar los estados de esas interruptores por puerto serie. El ordenador las interpretara y devolvera una secuencia de 8 bits que sera la instruccion de salida. Esta informacion despues la quiero poner en el puerto B. El problema que tengo es que simulando el codigo en mplab funciona bien pero al probarlo no funciona el detector de cambio de entradas y siempre esta enviando datos no se queda en el bucle. El codigo es el sigiente:


Código: Seleccionar todo
main:
   bsf   STATUS, RP0   
   bcf   tx_port, tx_pin ; Pin TxD como salida
   movlw b'00001111'
   movwf TRISB
   bcf   STATUS, RP0
   clrf AUX
   bsf PORTA,tx_pin ;a 1 para la salida de puerto serie
   
loop: movf PORTB,W      ;kiero esperar asta que cambien
     subwf AUX,W      ;las entradas y cuando cambien
     btfsc STATUS,2   ;acer el salto para enviarlas por puerto serie
     goto loop
     movf PORTB,W
     call send_b      ;enviamos los 8bits de W
     call recv_b      ;espera hasta recivir un dato y lo guarda en W
     movwf PORTB   
     movf PORTB,0
     movwf AUX
     goto loop
     end


Por ejemplo, si tengo las 4 entradas a cero se queda en en bucle. RB0 se pone a uno, sale del bucle y envia 00000001. El pc interpreta y devuelve por ejemplo 10110000. Estos datos se guardan en W y los muevo al puerto B ya que los primeros 4 bit son d salida.

#2  
mabauti
Ubicación: México
Registrado: 22 Oct 2006
Mensajes: 1085
citar
acuerdate que en la vida real los interruptores mecanicos te generan una señal inestable al momento en que los oprimes; necesitas un subprograma de retardo para limpiar la señal o en su caso por hardware


#3  
electron
Ubicación: colombia
Registrado: 19 Dic 2007
Mensajes: 14
citar
Lo mejor será que modifiques el código para que envíe el dato cuando el interruptor sea presionado y SOLTADO, ya que debido a la frecuencia del procesador tendras resultados erroneos si lo mantienes presionado mas de 10ms.

 Responder





 Otros temas de interés 
No hay mensajes nuevos Como separar señales, si son entrada y salida de datos
No hay mensajes nuevos Circuito acondicionador de entrada 4-40mA y salida 0-10 V
No hay mensajes nuevos Entrada/Salida de audio a traves de USB
No hay mensajes nuevos Conectar salida video de camara a monitor video
No hay mensajes nuevos Circuito con reles para puerto paralelo con salida de 3.3v

Foros de Electronica
|| Cuestiones Elementales de Electrónica || Fuentes de alimentacion || Circuitos de radio || Diseño de circuitos en general ||
|| Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión ||
|| Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos ||