Pero saveis cual es la solucion...
Usar menos bibliotecas echas
[Término poco apropiado].
Crear una subrrutina ada
Ptada a
-lo que necesitais.
Y si es usar tmr0 pero como la usas para la portadora del infrarrojo por otro lado en una rutina podrias usarla para generar los largos de los pulsos serial, usar la cabeza no solo para aporrear paredes.
Tengo que crear un codigo que perdi ace tiempo (solo que espero que esta me salga mucho mas
[Término poco apropiado], ya lo posteare, anterior mente lo tenia posteado en electrnicafacil.
Funciona pero no es perfecto.
Pongamos que es un receptor ir de 8 salidas programable.
Programables simplemente por que al pulsar una tecla entro en la subrrutina creada por un servidor para leer y almacenar el ad
Ress y tecla en la eppro
M.
Es
´Valido para nec RC5 y panasonic.
Si quereis que lo su
Ba lo que quiero son criticas u mejoras del produc
To. (pongamos que no llega ocupar mucho mas de 600 intrucciones)
Hasta mil todavia se podia replantear algun chorradina pecul
Iar.
Y daria ante
-todo, quiero tu criterio. que por
-cierto dario, si que funciona perfectamente el micro stucio picbasic hasta win10 y con las mejoras de la bibliotecas para USB solo que el compilador PBP y el edito
R microestudio son dos cosas aparte y tenes que conseguir las dor o el micro que no tenga registrado.
Realmente voy a postear las subrrutinas que tengo echas para la lectura, comparacion y almacenado de infrarrojos.
Código:
'
' lectura infrarrojos
'
infrarrojos:
port_piloto=0
boton=0
contador=0
while port_ir=0 ' leemos el largo del pulso alto de inicio codigo
contador=contador+1
wend
if contador<400 then salto_ruido ' si es menor seguro sea ruido IR
contador=0
while port_ir=1 ' leemos el largo del pulso bajo de inicio codigo
contador=contador+1
if contador>260 then salto_ruido ' si es mayor seguro no sera correcto
wend
pulso=0
repeat
infra=0
while port_ir=0 ' cuenta el largo el pulso alto
infra=infra+1
if infra>130 then salto_barrido ' si desborda salimos a comprovarlo
if port_pulsar=0 then salto_ruido ' salimos de la rutina
wend
infra=0
while port_ir=1 ' cuenta el largo el pulso bajo
infra=infra+1
if infra>254 then salto_barrido ' si desborda salimos a comprovarlo
if port_pulsar=0 then salto_ruido ' salimos de la rutina
toggle port_piloto
wend
casilla=pulso>>3 ' divido entre 4 para encasillar en byte's
codigo[casilla]=codigo[casilla]<<1 ' desplazo byte para ingresar nuevo bit
if infra>110 then codigo[casilla]=codigo[casilla]+1 ' si es un 1 lo suma
pulso=pulso+1 ' cuenta el largo de bit serial
until pulso=48 ' limite maximo serial 48bit
salto_barrido:
if codigo[0]=codigos[0] then ' comprovamos byte de acceso bajo
if codigo[1]=codigos[1] then ' comprovamos el byte de acceso alto
boton=codigo[casilla] ' almaceno el ultimo byte en boton
retraso=0
endif ' se puede mejorar la veracidad de los 2
endif ' ultimos byte's. NEC, RC5, Panasonic48bit
salto_ruido:
port_piloto=1
return
Eesto co
Rresponderia ala lectura, hay que ajustar los valores un poco a relacion de osculador o de las paradas de interru
Pc
Iones, si no se puede
Hacer asi hay que
Hacerla por el puerto serial como interrucion psi.
Código:
'
' comprueva la tecla pulsada
'
tecla:
port_piloto=0
temp2=uncuarto+lluz ' aumenta 1/4 del minimo
temp1=hluz-uncuarto ' reduce el masimo 1/4 menos del maximo
select case boton ' comprovamos la accion de la tecla pulsada
case codigos[4] ' funcion encender apagar
if luz<temp1 then ' si la luz es menos de la mitad
' ajustar ara ascento descenso rapido
luz=temp1 ' pone a 7/8 de la intensidad
else
luz=temp2 ' pone a 1/8 de la intensidad
endif
tiempos=1
retraso=8
gosub temporizadores ' reten, (evita luz disco)
codigo[0]=0
tiempo=0
case codigos[5]' retraso de apagado de luz (dormir)
retraso=3
parada=3
indica=1
gosub indicaciones ' da dos destellos y baja la luz a 1/4
codigo[0]=0
tiempo=9700 ' aumenta el temporizador reduce el apagado en 20min+-
case codigos[3] ' bajamos el nivel de luz
if luz>lluz then luz=luz-1
tiempo=0
case codigos[2] ' suvimos el nivel de luz
if luz<hluz then luz=luz+1
tiempo=0
end select
boton=0
port_piloto=1
return
Esta donde comparo la tecla, pongamos que el p
Rograma propio es de un regulador PWM para
hiluminacion les en particular mi
Ha
Bitación con dos modulos de 10w led smd de 1100 lumenes.
Código:
'
' guardar infrarrojos
'
almacena_infra:
parada=5
indica=3 ' indica ciones del modo programacion
gosub indicaciones
temp3=0
repetir_codigo:
casilla=0
while port_ir=1 ' repite asta detectar señal infrarroja
if port_pulsar=0 then
gosub cargarcodigoIR
goto saltoalmacena
endif
wend
gosub infrarrojos
if casilla<2 then repetir_codigo:
if temp3=0 then
codigos[0]=codigo[0]
codigos[1]=codigo[1]
temp3=1
endif
if codigos[0]=codigo[0] and codigos[1]=codigo[1] then
temp3=temp3+1
codigos[temp3]=codigo[casilla]
parada=18
indica=1
gosub indicaciones
else
parada=3
indica=7
gosub indicaciones
endif
codigo[0]=0
codigo[1]=0
if temp3<5 then repetir_codigo
'
for temp1=2 to 7
write temp1,codigos[temp1-2]
next temp1
'
saltoalmacena:
parada=8
indica=3
gosub indicaciones
return' sale del modo programacion
Esta seria la parte para almacenar las teclas, cuando entro en modo programacion.
Faltaria las rutinas de parada (por no usar pause) la rutina de de temporizadores controlada por tmr1 sin interruccion, el encider etc.
Eespero
Dario que te guste un poco y comprendas lo que e echo. (pon que este tipo programacion es mas para chabales jovenes. pero que veo cada chapuza que me pregunto su el mismo que la escri
Be al verla el año siguiente no le dara asquito, por poner diminutivo. sin e
MBargo tu
Dario estas teniendo un buen enfoque a
-la hora de estructurar el programa para poder leerse despues.
Ya posteare el pr
Ograma cundo lo cree de nuevo, que estuve por empezar ahora, la verdad que mucho es solo copia pega de mis subrutinas, asi que acabaria pronto
eso es lo que quiero decir con una buena forma de estructurar los programas
Dario.
Uun cordial saludo
Por
-cierto, tampoco es una maravilla mi manera de programar, pero se puede entender lo que se hace en todo momento, y eso son solo 3 cachos.