Ver Mensaje Individual
Antiguo 27/03/2013, 16:11   #6
rina
Usuario Registrado
 
Fecha de ingreso: 21/may/2006
Mensajes: 11
rina está en el buen camino
pues la gran mayoria de mandos utilizan codificacion NEC o Rc5, si no es asi suele ser muy similar. tambien hay cidificaciones muy diferentes aunque lo mas comun es eso.

la verdad que concretamente no se que lenguaje a utilizado hay algunos comandos que no entiendo. (y el programilla es algo cutre dentro de la versatilidd de distintos codigos)

ace todvia no mucho mejore una subrrutina que uso para la lectura de estos mandos. en mi caso suelo usar el pic basic

lo siento de antemano por no saver arir una pequeña vetana para introducir parte del programa..


contador var word
infra var byte
b0 var infra.6 ' asignamos los bit altos a usar
b1 var infra.7
pulso var byte ' nos sirve para contar los pulsos del mando
boton var byte ' para introducir la tecla del mando
casilla var byte ' esta nos sirve con pulso para encasillar los bit en un byte
codigo var byte [8] ' donde introducimos el codigo

'se definen las interrucciones (todas desactivadas)

status=%00000000
option_reg=%10000000
intcon=%00000000

programa:
if portb.1=0 then gosub infrarrojos 'cuando etecta una señal seva a leerla
' b.1 porque es la patilla ala que conecto el receptor de infrarrojo (puede ser otra)
if codigo[0]=x and codigo[1]=x then gosub comprovar_boton
' X es por un decir, comprovamos quiue los 16bit del addess sean los que queremos
goto programa

' me imagino que esta es la subrrutina que mas os puede interesar
' pongamos que esto en particular es para un cristal de 8mhz pero va tambien de sobra a 4mhz o menos

infrarrojos:
pulso=0
contador=0
while portb.1=0 ' comprovamos si el primer pulso es vastante largo
contador=contador+1
wend
if contador<320 then fin_por_ruido
'
contador=0
while portb.1=1 ' lo mismo pero que no se pase de largo
contador=contador+1
if contador=420 then fin_por_ruido
wend
'
high porta.0 ' nos indica que esta leyendo el codigo
repeat 'una vez valido empezamos a leer los bit, maximo 64bit
infra=0
while portb.1=0
infra=infra+1 ' si el flanco se pasa de largo se pira
if infra=200 then fin_del_barrido
wend
casilla=pulso>>3 ' dividimos entre 8 para la casilla del bite
codigo[casilla]=codigo[casilla]<<1 ' desplaamos in bit ala izquierda para incrementar el nuevo
infra=0
while portb.1=1
infra=infra+1 ' leemos el bit con la informaion si se pas de rango salimos
if infra=255 then fin_del_barrido
if porta.4=0 then fin_del_barrido ' esta para acer vulto a 8mhz
wend
codigo[casilla]=codigo[casilla]+(b0|b1) 'introducimos el bit en el bite
pulso=pulso+1
until pulso=64
fin_del_barrido: ' por ahorrar programa
casilla=casilla-1 ' restamos una bite por el ultimo bit final
fin_por_ruido:
low porta.0
return

es un programa muy util y eficiente.. quizas alla que ajustar algunos valores a relacion del oscilador pero es mas que lo mismo. y bueno que esta es mucho mas mejorada de la ultima que tenia creada y eficiente.

la verda que no es por vacilar. pero me quedo de miedo ocupanddo poco codigo. aun asi se podria acer por la interruccion serial. pero bueno segun esta os poeis acer una idea espues para programarlo como interruccion del serial.

un saludo al foro y un placer ver tanto trabajo.. aunque todo lo importante sea como siempre de gente fuera de españa vamos estadounidenses, ingleses, etc.

aun asi un cordial saludo alos españoles que tambien les gusta estudiar todos estos temarios y no me refiero a la porqueria programa sino al resto de decodificcion etc
rina está desconectado
Respuesta rápida a este mensaje
Responder Citando Subir