здравствуйте, решил собрать велокомпьютерпо этой схеме:
http://cxem.net/mc/mc154.php Там 4 свободных порта на контроллере, я хочу прицепить кнопку к 7 выводу, и запрограммировать так: При длительном нажатии (2сек) включались габариты (лог.1 на 2 ноге), при повторном таком же нажатии отключались, а при кратковременном нажатии загоралась фара (лог 1 на 3 ноге) и так же кнопкой отключалась. И еще, если возможно прицепить к 15 ноге термодатчик ds18b20 и при длительном нажатии (более4сек) переводить устройство в режим измерения уличной температуры, а при простое велика более минуты (отсутствие сигнала с геркона) отключать дисплей и освещение для экономии аккумулятора. Помогите пожалуйста, очень нужно. Или подскажите как это сделать Заранее спасибо
Вот сам первоначальный код написанный в bascom avr :
'Прошивка для велокомпьютера на МК Atmel Attiny 2313
'Версия велокомпьютера: 1.0
'Операционная система велокомпьютера: OS11 V2.2 (VeloComputer)
'Тактовая частота МК велокомпьютера: 4МГц (внешний кварц)
'Дисплей: HD44780 16*1
'Велокомпьютер тестировался на велосипеде Keltt VCT26-90
'Длинна колеса (по умолчанию): 208см
'Разработчик: Яковлев Александр Вячеславович
'E-mail: haker.by@mail.ru
'Сайт: http:\\os11.ucoz.ru
'Беларусь, Витебск 06.08.2012
$regfile = "attiny2313.dat"
$crystal = 12000000
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.1 , Rs = Portb.0
Config Lcd = 16 * 1a
Const Coleso = 1.09 '190см
Config Pind.2 = Input
Config Pind.4 = Input 'OK
Config Pind.5 = Input 'CANCEL
Config Pind.6 = Input
Config Int0 = Falling
On Int0 Speedok
Enable Interrupts
Enable Int0
Dim Temptotal As Byte
Dim Total As Long
Dim All As Long
Dim Speed As Word
Dim Flag As Bit
'Dim S As Bit
Enable Interrupts
Enable Timer1
Config Timer1 = Timer , Prescale = 64
On Timer1 Incrt:
Start Timer1
$eeprom
Alldata:
Data 17%
$data
Readeeprom All , Alldata
Cls
Lcd "Starting OS11..."
Sound Portb.2 , 300 , 200
Wait 3
Cls
Lcd "Ver:2.2 (VeloC)"
Wait 1
Cls
Lcd "Yakovlev A. V."
Wait 3
Cls
Cursor Off
Do
Disable Interrupts
Locate 2 , 5
Lcd "km/h"
Locate 2 , 3
If Speed < 10 Then Lcd Speed ; " "
If Speed > 9 Then Lcd Speed
Locate 1 , 1
Lcd Total ; "m"
Enable Interrupts
'If Flag = 0 Then
'If Pind.2 = 0 Then
'Total = Total + Coleso
'All = All + Coleso
'Temptotal = Temptotal + Coleso
'Flag = 1
'End If
'End If
'If Pind.2 = 1 Then Flag = 0
If Pind.6 = 0 Then
Cls
Lcd "All:" ; All ; "m"
Sound Portb.2 , 150 , 90
Waitms 100
Sound Portb.2 , 150 , 90
Waitms 100
Sound Portb.2 , 150 , 90
Wait 2
Cls
End If
If Pind.4 = 0 Then
Cls
Lcd "All:" ; All ; "m Saved!"
Sound Portb.2 , 500 , 100
Writeeeprom All , Alldata
Wait 2
Cls
End If
If Pind.5 = 0 Then
Cls
Lcd "Total clear!"
Sound Portb.2 , 500 , 250
Wait 1
Total = 0
Cls
End If
'If S = 0 Then
'If Speed = 0 Then
'Sound Portb.2 , 500 , 250
'Waitms 100
'Sound Portb.2 , 500 , 250
'Waitms 100
'Sound Portb.2 , 500 , 250
'S = 1
'End If
'End If
'If Speed <> 0 Then S = 0
Loop
Speedok:
Total = Total + Coleso
All = All + Coleso
Temptotal = Temptotal + Coleso
Waitms 50
Gifr = 64
Return
Incrt:
Speed = 0
Speed = Temptotal
Temptotal = 0
Speed = Speed * 3600
Speed = Speed / 1000
Return