Por : Jefferson Tipán
domingo, 5 de enero de 2014
Bascom AVR
Xloader |
Variables e impresión por pantalla
|
||
3. Luxómetro con 4511 y 328p 4. Luxómetro con 4511 y 328p con pulsador |
Luxómetro Con Display de 7 segmentos
|
||
hola Jefferson Tipán , como estas ? Estoy realizando un luxómetro
ResponderEliminarcon 4511 y 328p con pulsador como proyecto similar al número 4 publicado en este blog , este debe prenderse mediante un pulsador y apagarse si el mismo valor se mantiene por 30 segundos , como se lo podría agregar a mi código ? desde ya muchas gracias y saludos.
$regfile = "m328pdef.dat"
$crystal = 40000000
$baud = 9600
Config Portd = Output
Config Portb = &B11
Sec1 Alias Portb.0
Sec2 Alias Portb.1
Sec1 = 1
Sec2 = 1
Portd = 0
'-------ADC-------------------------------------------------------
Config Adc = Single , Prescaler = Auto , Reference = Avcc
Start Adc
'-------7_Segmentos-----------------------------------------------
Dim Unidad As Byte , Decimal As Byte
Dim Resultado As Byte , Dato As Word ,
Dato = 0
'-------otras variables----------------------------------------------
Dim W As Word , Dato2 As Word , T As Word , Ok As Byte , A As Byte
T = 0
Ok = 0
A = 1
Do
Gosub Analizar
Gosub Presenta
Dato2 = Dato
While A = 1
Gosub Analizar
If Dato = Dato2 Then
If T <= 300 And Ok = 0 Then
Sec1 = 0
Sec2 = 0
Ok = 1
Else
Wait 1
Incr T
End If
Else
Dato2 = Dato
Gosub Presenta
Ok = 0
T = 0
End If
Wend
Loop
Analizar:
W = Getadc(0)
W = W / 10
If W > 99 Then
W = 99
End If
Dato = W
Return
Presenta:
Decimal = Dato / 10
Unidad = Dato Mod 10
Rotate Decimal , Left
Rotate Decimal , Left
Rotate Decimal , Left
Rotate Decimal , Left
Resultado = Decimal + Unidad
Portd = Resultado
Return
aquí trate de basarme en tu cogido y logre que si la misma variación se mantiene por 30 seg se apagan los display , pero no pude lograr hacer que se encienda con un pulsador . como que tu realizaste
ResponderEliminarGosub Analizar
Gosub Presenta
Dato2 = Dato
While A = 1
Gosub Analizar
If Dato = Dato2 Then
If T <= 300 And Ok = 0 Then
Sec1 = 0
Sec2 = 0
Ok = 1
Else
Wait 1
Incr T
End If
Else
Dato2 = Dato
Gosub Presenta
Ok = 0
T = 0
End If
Wend
Loop
--------------------------------------------------------------------------------
Do
If P1 = 0 Then
For I = 1 To 255 ' para que funcione el programa un tiempo determinado
For J = 1 To 25 ' calibrado para que comprueba la informacion cada 5 segundo, se puede modificar teniendo el cuenta las repeticiones y el tiempo
D1 = 1
D2 = 1
Gosub Luxo
Gosub Separa
Gosub Presenta
Waitms 200 'tiempo de espera para actualizar la informacion del display
Next
If W = Dato Then
Goto Apagado ' apaga los displays si la informacion se mantiene durante 5 segundos
End If
Dato = W
Next
Else
D1 = 0
D2 = 0
End If
Loop
Apagado:
D1 = 0
D2 = 0
Return
Luxo:
W = Getadc(0)
W = W / 10
If W > 99 Then
W = 99
End If
Print "i= " ; I ; " j= " ; J ; " w= " ; W ; " dato= " ; Dato
Return
-------------------------------------------------------------------------