BASCOM AVR в вопросах и ответах
Re: BASCOM AVR в вопросах и ответах
Да если начистоту, то все не так делаете.
PortB назначили на выход. Тут светодиоды сидят или кнопки?
во-вторых Config Pinb.0 = Input это неверная запись. Порту назначается вход или выход. А пин можно либо опросить, либо установить и сбросить.
В третьих оператор Toggle может только изменить состояние устройства на противоположное.
Ну и уж самое мистическое это строчки
A = 5
Incr A
A = Portb
сюда программа вообще не попадет. Это островок получился. да и не будет это работать в том виде. про который вы спрашиваете.
PS. могу за вас написать прогу для переключения светодиодов, если скажите на каком порту сидят кнопки и светодиоды. Или попытаетесь разобраться сами?
Ну и собственно такую программу можно написать разными путями
PortB назначили на выход. Тут светодиоды сидят или кнопки?
во-вторых Config Pinb.0 = Input это неверная запись. Порту назначается вход или выход. А пин можно либо опросить, либо установить и сбросить.
В третьих оператор Toggle может только изменить состояние устройства на противоположное.
Ну и уж самое мистическое это строчки
A = 5
Incr A
A = Portb
сюда программа вообще не попадет. Это островок получился. да и не будет это работать в том виде. про который вы спрашиваете.
PS. могу за вас написать прогу для переключения светодиодов, если скажите на каком порту сидят кнопки и светодиоды. Или попытаетесь разобраться сами?
Ну и собственно такую программу можно написать разными путями
"Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа." Ро́берт Ше́кли
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Я правильных ответов знаю мало, поэтому не стесняюсь и много спрашиваю.
Re: BASCOM AVR в вопросах и ответах
serg_svd писал(а):Да если начистоту, то все не так делаете.
PortB назначили на выход. Тут светодиоды сидят или кнопки?
во-вторых Config Pinb.0 = Input это неверная запись. Порту назначается вход или выход. А пин можно либо опросить, либо установить и сбросить.
В третьих оператор Toggle может только изменить состояние устройства на противоположное.
Ну и уж самое мистическое это строчки
A = 5
Incr A
A = Portb
сюда программа вообще не попадет. Это островок получился. да и не будет это работать в том виде. про который вы спрашиваете.
PS. могу за вас написать прогу для переключения светодиодов, если скажите на каком порту сидят кнопки и светодиоды. Или попытаетесь разобраться сами?
Ну и собственно такую программу можно написать разными путями
PortB назначил на выход тут сидят светодиоды, а на порт PortB.0 кнопка переключающая их.
Приведите пример или натолкните пожалуйста на путь истинный........
- dimon-790
- Мучитель микросхем
- Сообщения: 442
- Зарегистрирован: Пт авг 29, 2008 09:22:37
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Код: Выделить всё
$regfile = "m8def.dat"
$Crystal=4000000
$hwstack=40
$swstack=50
$framesize = 50
Dim A As Byte
Config Portb = Output
Config Pinb.0 = Input
A = 2
Portb = A
Do
Debounce Pinb.0 , 0 , En , Sub
Loop
En:
A = A * 2
If A > 32 Then A = 2
Portb = A
Returncattus если я тебя правильно понял , то должно работать...
Все мы работаем по методу Робинзона Крузо – ждем пятницу.
- Kill17
- Открыл глаза
- Сообщения: 63
- Зарегистрирован: Вс май 30, 2010 20:27:33
- Откуда: Санкт-Петербург
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Подскажите пожалуйста.
Компилятор ругается 66 ошибкой, мол порт уже открыт. Что не так делаю?
Код: Выделить всё
$regfile = "m32def.dat"
$Crystal=11059200
$hwstack=40
$swstack=16
$framesize = 32
Do
Open "comd.6:9600,8,n,1" For Output As #0
Printbin #0 , &H0096
Wait 1
Close #0
Open "comd.6:115200,8,n,1" For Output As #0 <---------- Ругается здесь
Printbin #0 , &H0024
Wait 1
Close #0
Loop
End
Компилятор ругается 66 ошибкой, мол порт уже открыт. Что не так делаю?
- Kill17
- Открыл глаза
- Сообщения: 63
- Зарегистрирован: Вс май 30, 2010 20:27:33
- Откуда: Санкт-Петербург
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Назрел другой вопрос, при использовании Baud #1, 14400 возможно ли подставить переменную в место скорости?
Делаю так. Мини пример
В таком виде передача просто падает, передается, только 00.
Делаю так. Мини пример
Код: Выделить всё
Dim A as Long
Open "coma.1:9600,8,n,1" for output #1
Do
A = 14400
Baud #1, A
Printbin #1, &H11223344
Loop
Close #1
End
В таком виде передача просто падает, передается, только 00.
Re: BASCOM AVR в вопросах и ответах
$regfile = "m8def.dat"
$crystal = 4000000
$hwstack = 40
$swstack = 16
$framesize = 32
Dim I As Integer
Dim H As Integer
Config Portc.0 = Input
Config Portd.0 = Output
Config Portd.1 = Output
Config Portd.2 = Output
Portb = 0
Do
Portc.0 = I
Incr I
For I = 0 To 2
H = 2 ^ I
Portd = H
Next I
Loop
End
Посмотрите пожалуйста на мою программу и скажите что не так в ней.....
$crystal = 4000000
$hwstack = 40
$swstack = 16
$framesize = 32
Dim I As Integer
Dim H As Integer
Config Portc.0 = Input
Config Portd.0 = Output
Config Portd.1 = Output
Config Portd.2 = Output
Portb = 0
Do
Portc.0 = I
Incr I
For I = 0 To 2
H = 2 ^ I
Portd = H
Next I
Loop
End
Посмотрите пожалуйста на мою программу и скажите что не так в ней.....
- Adagumer
- Поставщик валерьянки для Кота
- Сообщения: 2283
- Зарегистрирован: Чт ноя 15, 2012 20:47:59
- Откуда: Крымск
Re: BASCOM AVR в вопросах и ответах
Что-то не совсем понятно, Вы пин 0 порта С приравняли двухбайтному числу?
Re: BASCOM AVR в вопросах и ответах
Adagumer писал(а):Что-то не совсем понятно, Вы пин 0 порта С приравняли двухбайтному числу?
........
Последний раз редактировалось cattus Пт мар 08, 2013 15:31:58, всего редактировалось 1 раз.
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
cattus писал(а):я понимаю что вы тут все такие умные
Умные конечно, это вне всяких сомнений. Только дело в том, что никто таким не родился. По Вашему же поведению сразу стало понятно, что проще писать откровенную чушь, а потом задавать коварные вопросы типа "что на этой картинке не так?". Вместо того чтобы изучать сайты, посвященные баскому. Коих более чем предостаточно. И уже потом задавать вполне конкретные вопросы (которых сразу станет гораздо меньше). Вместо этого Вы собираете ересь в кучу (по которой прекрасно видно, что Вы вообще не разбираетесь в данной теме, даже на минимальном уровне), а затем упрекаете всех в насмехательстве. Вы чего решили-то, нагородить всего в кучу, а оно там само как-нибудь разберется?
Вам уже и варианты предлагали, и даже за Вас написать, а Вы только ноете, какие все злые и бессердечные. Так что же Вам нужно-то? Рисуйте схему, что и куда подключено, пишите ТЗ, как оно должно работать. Там и поговорим...
P.S. А вот править свое сообщение после ответа на него - нехорошо.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- max50
- Мучитель микросхем
- Сообщения: 497
- Зарегистрирован: Ср дек 10, 2008 21:24:28
- Откуда: Алтайский край, Барнаул
Re: BASCOM AVR в вопросах и ответах
cattus писал(а):P.S. А вот править свое сообщение после ответа на него - нехорошо.
Ага, здесь он же(МХ5) вообще тему удалил с моим ответом, а здесь mpx, сказал, что понял свои ошибки.
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
Re: BASCOM AVR в вопросах и ответах
Я хочу извиниться перед всеми за то что так наговорил, помогите с программой переключение трех светодиодов одной кнопкой, по очереди. И если можно с комментариями, что бы я мог понять принцип программы.
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Совсем другое дело.
Ладно, пусть на словах. Например: 5 светодиодов подключено к выводам PB1, PB2, PB3, PB4, PB5 микроконтроллера Atmega 8. Кнопка подключена к выводу PD0. При нажатии зажигается первый светодиод. При следующем нажатии зажигается второй (первый при этом гаснет) и все в том же духе. Понятно же, я думаю...
edm2007 писал(а):Рисуйте схему, что и куда подключено, пишите ТЗ, как оно должно работать.
Ладно, пусть на словах. Например: 5 светодиодов подключено к выводам PB1, PB2, PB3, PB4, PB5 микроконтроллера Atmega 8. Кнопка подключена к выводу PD0. При нажатии зажигается первый светодиод. При следующем нажатии зажигается второй (первый при этом гаснет) и все в том же духе. Понятно же, я думаю...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- max50
- Мучитель микросхем
- Сообщения: 497
- Зарегистрирован: Ср дек 10, 2008 21:24:28
- Откуда: Алтайский край, Барнаул
Re: BASCOM AVR в вопросах и ответах
Как-то так:
Код: Выделить всё
$regfile = "m8def.dat" 'установка модели микроконтроллера
$crystal = 1000000 'частота генератора1МГц
Config Portd.0 = Output 'настройка пинаd0 на выход(LED1)
Config Portd.1 = Output 'настройка пинаd1 на выход(LED2)
Config Portd.2 = Output 'настройка пинаd2 на выход(LED3)
Config Portc.0 = Input 'настройка пинаc0 на вход(S1)
Dim Effect As Byte
'инициализация светодиодов
Portd = 7 '@@@'
Waitms 300
Portd = 0 'OOO'
Waitms 300
'----------
Do 'начало цикла
'опрос кнопки и присвоение переменной Effect соответствующего значения
If Pinc.0 = 0 Then
Waitms 100
Incr Effect 'с каждым нажатием увеличиваем Effect на 1
End If
If Effect >= 4 Then Effect = 0 'Effect равен 4, то обнуляем
Select Effect
Case 0 : Portd = 0 'OOO'
Case 1 : Portd = 1 '@OO'
Case 2 : Portd = 2 'O@O'
Case 3 : Portd = 4 'OO@'
End Select
Loop 'конец цикла
'----------
End- Вложения
-
- Безымянный.PNG
- Схема
- (30.77 КБ) 608 скачиваний
Последний раз редактировалось max50 Сб мар 09, 2013 15:22:13, всего редактировалось 1 раз.
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Угу, можно и так. Осталось только при тестовом включении нормальную задержку вместо WaitmsTemp сделать.
P.S. Но я все же сделал бы именно подпрограмму опроса. Ну или включение светодиодов загнал бы именно в цикл проверки кнопки. А то постоянная запись в порт одного и того же значения как-то не очень красиво...
P.S. Но я все же сделал бы именно подпрограмму опроса. Ну или включение светодиодов загнал бы именно в цикл проверки кнопки. А то постоянная запись в порт одного и того же значения как-то не очень красиво...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
- max50
- Мучитель микросхем
- Сообщения: 497
- Зарегистрирован: Ср дек 10, 2008 21:24:28
- Откуда: Алтайский край, Барнаул
Re: BASCOM AVR в вопросах и ответах
edm2007 писал(а):Осталось только при тестовом включении нормальную задержку вместо WaitmsTemp сделать.
Спасибо, поправил.
edm2007 писал(а):P.S. Но я все же сделал бы именно подпрограмму опроса. Ну или включение светодиодов загнал бы именно в цикл проверки кнопки. А то постоянная запись в порт одного и того же значения как-то не очень красиво...
Проще не придумал. Для ознакомления, думаю, пойдет.
Того, кто не задумывается о далеких трудностях, ожидают близкие неприятности.
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
max50 писал(а):Проще не придумал. Для ознакомления, думаю, пойдет.
Да конечно пойдет, самое оно. Я просто к тому, что можно весь код заключить в If Pinc.0 = 0 Then ... End If. Тогда он будет выполняться только по факту нажатия. Сейчас же при каждом проходе даже в отстутствие нажатия все равно работает блок Select. И запись в порт. Страшного-то ничего, это просто уже мои тараканы.
P.S. Схему посмотрел, подтяжки-то у нас нет внешней. Тогда в коде включить нужно...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Re: BASCOM AVR в вопросах и ответах
Всем большое спасибо за помощь. Теперь немного понятно, стало... буду дальше пробовать разбираться...
Re: BASCOM AVR в вопросах и ответах
Добрый всем день, решил сделать свою меленькую программу на bascom, но уже запутался, И думаю в след раз буду на С писать.
Но суть не в этом. Нашел схему с исходником цифровой мономер... Но решил вместо сигментиков повесить LCD...
Но по образцу с того кода не хочет что то компилироваться... Ругается
(
Сам код
Но суть не в этом. Нашел схему с исходником цифровой мономер... Но решил вместо сигментиков повесить LCD...
Но по образцу с того кода не хочет что то компилироваться... Ругается
Сам код
'
$regfile = "m8def.dat" ' используем ATmega8
$crystal = 8000000
$lib "lcd4.lbx" 'используем 4-х битное подключение дисплея с помощью альтернативной библиотеки
$lib "mcsbyte.lbx" 'подключаем библиотеку функций
Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7
Config Lcd = 16 * 2 'используем дисплей на 2 строчки по 16 знакомест в каждой
Config Adc = Single , Prescaler = Auto , Reference = Avcc 'конфигурация АЦП
'объявляем переменные
Dim Wa As Word , Wb As Word , Wc As Word , Wd As Word , Any_var As Single , 'Ad_1 As Integer
Dim Chvar_1 As Single , Channel_1 As Integer , ' , Pst As String * 4 , Ad_2 As String * 4
Const Negativ = -1
Start Adc 'запускаем аналого-цифровое преобразование
Do
Wa = Getadc(0) 'считываем результат с пина 0 порта А.
Chvar_1 = Wa
Any_var = Chvar_1 / 2000 ' 2000 - можно задавать изгиб линии
Any_var = Negativ * Any_var
Any_var = Exp(any_var)
Chvar_1 = 1023 - Chvar_1
Chvar_1 = Chvar_1 / 12.035 'пересчет тут любая формула для требуемого диапазона или необходимой характеристики ==============
Any_var = Chvar_1 * Any_var
Chvar_1 = Any_var
'If Wa < 1023 Then
'If Chvar_1 > 0 Then Channel_1 = Chvar_1 ' присваиваем значения переменных для индикации
'If Chvar_1 > 80 Then Channel_1 = 80 'верхний предел показаний
'Else
'Channel_1 = 0
'End If
'End If
Locate 1 , 1 ' позиция курсора
Lcd "C0:" ; Chvar_1 ; " " 'выводим результат преобразования на ЖК
Waitms 100 ' зедержка 0,1 секунды
Loop
End
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Все прекрасно компилируется. На что ругается-то? Если Вы про закомментированый код, то просто пишите правильно:
Угу, там-то оно само напишется и все ошибки исправит.
Код: Выделить всё
If Wa < 1023 Then
If Chvar_1 > 0 Then Channel_1 = Chvar_1 ' присваиваем значения переменных для индикации
If Chvar_1 > 80 Then
Channel_1 = 80 'верхний предел показаний
Else
Channel_1 = 0
End If
End If
tomas111 писал(а):И думаю в след раз буду на С писать.
Угу, там-то оно само напишется и все ошибки исправит.

"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Re: BASCOM AVR в вопросах и ответах
Да я уже пробовал по разному .... о у меня error 61 ....
Может с баскомом что не так ...
Может с баскомом что не так ...
- Вложения
-
- Безымянный.JPG
- (151.83 КБ) 433 скачивания