Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

25/12/2007 #1


16f84a cambio de entradas
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 información 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:
main:
	bsf	STATUS, RP0	
	bcf	tx_port, tx_pin ; Pin T 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		;quiero 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.
25/12/2007 #2


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

01/02/2008 #3


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.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.