Сайт "Электронщики" - скорая помощь для радиолюбителей. Здесь вы можете задавать вопросы и получать на них ответы от других пользователей.
Грамотно отвечайте, голосуйте, задавайте вопросы и т.о. зарабатывайте себе рейтинг.

прошивка микроконтроллера

0 голосов
здравствуйте, решил собрать велокомпьютерпо этой схеме: 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
13 Май, 15 от аноним в категории Микроконтроллеры

Ваш ответ

Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Соберите картинку
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.