Буду признателен, если кто поможет.
___
P.S. голова опухла
KOTик писал(а):Прикрепляю весь код + протеус.
vem566 писал(а):KOTик писал(а):Прикрепляю весь код + протеус.
В исходном коде есть переменные temp и wtime. Они описаны, им что то присваивается, но они нигде не используются.
У нас уже 0:30. Завтра вставать. Потом исправлю исходник, если сам не успеешь.
Код: Выделить всё
...
'/// ---> ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ
Dim V As Eram Byte 'переменная EEPROM
Dim Click As Byte 'переменная шага для SETUP
Dim Store As Byte 'еще одна переменная для SETUP
'Dim Delaytime As Byte 'переменная задержки
Dim Wtime As Byte 'переменная задержки
Dim Temp As Integer 'переменная задержки
Wtime = 100 'положили 100 в переменную Wtime, далее будем ее увеличивать и записывать в переменную Temp
Dim Button As Bit
Button = 1
'/// ---> НАСТРОЙКА ПОРТОВ
Config Portb.0 = Output 'OUT
Config Pinb.2 = Input 'кнопка запуска
Config Pinb.4 = Input 'кнопка установки временной задержки
Pinb.4 = 1
Portb = &B00010100 'подтяжка PINB.2 и PINB.4
Zapusk Alias Pinb.2 'Zapusk для PINB.2
Btn Alias Pinb.4 'Btn для PINB.4
'/// ---> НАЧАЛО ОСНОВНОГО ЦИКЛА ПРОГРАММЫ
Do
...
Debounce Zapusk , 1 , Led_on , Sub 'управляется плюсом (+)
Debounce Zapusk , 0 , Led_off , Sub 'управляется плюсом (+)
'/// ---> УСТАНОВКА ЗАДЕРЖКИ
If Click = 4 Then Click = 1 'Если нажали 4ый раз, то переходим
If Click = 1 Then Temp = Wtime * 1000 'Если нажали 1 раз, увеличиваем переменную Wtime (у нас она равна 100) и кладем в переменную Temp
If Click = 2 Then Temp = Wtime * 2000
If Click = 3 Then Temp = Wtime * 3000
If Button = 1 Then
If Btn = 0 Then
Button = 0
Store = Click + 1 'Увеличиваем время задержки на 1 шаг (1 шаг равен 10секундам)
Waitms 50
V = Store 'записываем значение задержки в ЕЕПРОМ
End If
End If
If Btn = 1 Then Button = 1
...
Loop
'/// ---> ВЫКЛЮЧАЕМ ФОНАРЬ
Led_off:
Waitms 50
Portb.0 = 0
Waitms 50
Return
'/// ---> ВКЛЮЧАЕМ ФОНАРЬ
Led_on:
Waitms 50
Portb.0 = 1 'включаем фонарь
Waitms 50
Click = Store
Store = V 'считываем значением с ЕЕПРОМ и кладем ее в Store
Wait Store 'Присваиваем Wait-у переменную задержки Store. Т.е. ждем столько секунд, сколько установили (было записано в ЕЕПРОМ)
Return 'возврат в основной цикл
vem566 писал(а):.... Если нажали 1 раз, увеличиваем переменную Wtime (у нас она равна 100) и кладем в переменную Temp ....
А дальше? В каком месте используются переменные Wtime и(или) Temp? И зачем это присвоение?
Кстати, при эмуляции в протеусе значение байта в eprom после нажатия кнопки не меняется. Т. е. ничего и не записывается.
Честно говоря не видно никакого следствия, у Вас задержка это Waitms, теперь далееKOTик писал(а):Каждое нажатие инкрементирует переменную Click и, как следствие, увеличивается задержка (Temp = Wtime * XX).
pavel1979 писал(а):в режиме спящего режима ,как можно организовать подобное в баском?
amv2000 писал(а):pavel1979 писал(а):в режиме спящего режима ,как можно организовать подобное в баском?
Можно тут ознакомиться http://avrproject.ru/publ/poleznaja_inf ... r/4-1-0-64
Так вроде они с 1202 похожи. http://we.easyelectronics.ru/blog/lcd_gfx/pavel1979 писал(а):есть ли у кого пример работы с дисплеем нокиа 1280?

pavel1979 писал(а):C индикаторами ничего не вышло
можно ли использовать переменный резистор как энкодер и как можно это организовать-смысл понимаю но вот программно..
значит так-переменный резистор,к крайним выв которого подано - и + 5 в,мк измеряет напряжение на среднем выв,при половине напряжения(резистор в среднем положении) переменная variable не изменяется.При небольшом повороте резистора variable увеличивается в ту или иную сторону в зависимости от направления поворота резистора,скорость изменения variable зависит от угла поворота ручки резистора,вернули ручку в среднее положение-variable не изменяется,как то так
Код: Выделить всё
Do
....
'/// ---> ЗАПУСК ADC
Start Adc
U = Getadc(2) 'Считываем значение с PINB.4 (tiny13)
If U >= 651 Then 'Если значение больше или равно 651
Gosub inkrement 'Переходим по метке inkrement, где увеличиваем Вашу переменную
Elseif U <= 650 Then 'Если значение меньше или равно 650
Gosub dekrement 'Переходим по метке dekrement, где уменьшаем Вашу переменную
...
...
Loop
'/// ---> ОБРАБОТЧИК
inkrement:
... 'здесь ваши операции с переменной(ами)
waitms 50
return
dekrement:
... 'здесь ваши операции с переменной(ами)
waitms 50
return
pavel1979 писал(а):ну примерно тоже я и сделал,но нужно чтобы шаг зависел от угла поворота ручки.мах значение 1024,значит середина 1024/2=512
KOTик писал(а):pavel1979 писал(а):ну примерно тоже я и сделал,но нужно чтобы шаг зависел от угла поворота ручки.мах значение 1024,значит середина 1024/2=512
Вычислить угол поворота с потенциометра - Хмм... Не представляю себе.
