Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Индикатор скорости

Сообщений 1 страница 8 из 8

1

Привет всем, хочу сделать для мотоцикла индикатор скорости.

Выглядеть должно так:

1-H-2-3-4-5-6 при опущеной подножке цифра мигает, сигнал (-) идет от переключателя в моторе для каждой скорости свой, при опущеной подножке сигнала нет, при поднятой (-)

Я написал программу но не знаю будет ли это работать

Код:
'--------------------------------------------------------------
'            mega8.bas
'    mega8 sample file
'--------------------------------------------------------------
$regfile = "m8def.dat"
$crystal = 8000000
'the internal oscillator of 8 Mhz was choosen in the fusebits
$baud = 19200

Ddrd = &B1111111
Config Pinc.0 = Input
Config Pinc.1 = Input
Config Pinc.2 = Input
Config Pinc.3 = Input
Config Pinc.4 = Input
Config Pinc.5 = Input
Config Pinb.0 = Input
Config Pinb.1 = Input



Do

If Pinc.0 = 0 Then                                          '1 Gang
Portd = &B0011000
Bitwait Pinc.0 , Set
Elseif Pinc.1 = 0 Then                                      '2 Gang
Portd = &B1101101
Bitwait Pinc.1 , Set
Elseif Pinc.2 = 0 Then                                      '3 Gang
Portd = &B1111001
Bitwait Pinc.2 , Set
Elseif Pinc.3 = 0 Then                                      '4 Gang
Portd = &B0110011
Bitwait Pinc.3 , Set
Elseif Pinc.4 = 0 Then                                      '5 Gang
Portd = &B1011011
Bitwait Pinc.4 , Set
Elseif Pinc.5 = 0 Then                                      '6 Gang
Portd = &B1011111
Bitwait Pinc.5 , Set
Elseif Pinb.0 = 0 Then                                      'Neutral H
Portd = &B0110111
Bitwait Pinb.0 , Set
Elseif Pinb.1 < 0 Then
Do                                                          'Seitenstaender
Toggle Pind.7
Waitms 500
Toggle Pind.7
Waitms 500
Loop Until Pinb.1 = 0
End If
Loop

Схема

Спасибо за помощь

0

2

Замечания с первого взгляда - $baud = 19200 не нужно, если не предполагаете работать с USART, не задекларирован порт D на выход, поэтому ожидать какую либо реакцию светодиодов на входные сигналы бесполезно. А вообще программа очень простая и есть смысл собрать реальное устройство, вместо датчиков поставить кнопки и всё вместе довести до логического конца. Успеха!

0

3

почитайте код получше,   Ddrd = &B1111111  порт D - выход. Нет некаких сенсоров , контакт замыкает на массу при каждом положении (7-штук).

0

4

А ты уверен, что BASCOM знает, что ты подразумеваешь под Ddrd?
В лексиконе BASCOM'а (среди мнемоник и зарезервированных слов) Ddrd нет. Это просто аббревиатура из даташита, обозначающая конфигурационный регистр порта D.
По моему, встретив в тексте программы строку Ddrd = &B1111111, компилятор воспримет это как попытку присвоить значение &B1111111 переменной Ddrd, которой при этом не было выделено место (Dim), ну и выдаст какую-нибудь ошибку.
А настраивать порт D на вывод надо как-нибудь иначе, например командой OUT по адресу, соответствующему Ddrd.

Отредактировано Русик (2007-03-12 14:27:56)

0

5

сайт создателя книги по AVR ,отличная книга.

Код написан на BASCOM-AVR

Код:
'002.BAS:   Auf Tastendruck LED einschalten
'Hardware:  Taster an PD2, LED an PD3
'---------------------------------------------------
$Regfile = "2313def.dat"  'AT90S2313-Deklarationen
$Crystal = 3686400    'Quarz: 3.6864 MHz
DDRD = &B0001000      'Pin PD3 Ausgang, Rest Eingang (pin d3 выход остальное вход) 
'PORTD = &B0000100    'PullUp von Pin PD2 aktivieren

Do
  If PIND.2 = 0 Then  'Wenn Taster (Pin PD2) gedrückt
    PORTD.3 = 1       'Rote LED (Pin PD3) an
  Else                'Wenn Taster nicht gedrückt
    PORTD.3 = 0       'Rote LED aus
  End If
Loop
End

0

6

Господа, а в чём проблема?

Чтобы проверить свои предположения необходимо:
1. Откомпилировать программу и посмотреть на наличие - отсутствие ошибок при компиляции
2. Запустить программу в симуляторе и пощёлкать на входные пины, посмотреть на реакцию выходных
3. Если в симуляторе всё ОК, собрать устройство на макетной плате

Для того чтобы проверить Ваш код, любому желающему необходимо проделать как минимум первых два пункта.
Написать код и ждать ответ, будет он работать или нет, можно очееень долгоооооооооооооооо. Пробуйте, экспериментируйте, задавайте конкретные вопросы. И ещё один совет. Собирайте железо и заливайте программу, иначе вы остановитесь и надолго. Ни один симулятор не может полностью заменить реальное устройство. Ваш индикатор скорости не намного сложнее простейших бегущих огней, описанных В.Н.Рубашка - BASCOM для начинающих с подробными комментариями на русском. Возьмите их за основу. Также, сколько человек ни будут писать одну и ту же программу, код будет разный.... А Вам необходим свой, иначе теряется весь смысл творчества.

0

7

Ну, в принципе, конечно, надо собирать и пробовать, спору нет. А вот насчёт конкретных вопросов - про Ddrd разговор был вполне конкретный, "гуру" могли бы вставить своё веское слово.
Я был, похоже, неправ. Попробовал - компилятор воспринимает это сочетание букв именно как регистр, а не переменную, хотя в хелпе я про это пока не нашёл и не знаю, почему это так. Буду искать .

0

8

Конкретный ответ насчёт Ddrd - так тоже можно. Зайдите на форум  http://www.mcselec.com/index2.php?optio … ;Itemid=59 и поищите Ddrd - я получил 46 ссылок.

0