BASCOM AVR в вопросах и ответах
Re: BASCOM AVR в вопросах и ответах
Не умеет. Исполняемый оператор в строке может быть только один. Мне тоже жаль. 
-
Novice user
- Мудрый кот
- Сообщения: 1704
- Зарегистрирован: Вт янв 05, 2016 10:14:25
- Откуда: поселок Мелеуз
Re: BASCOM AVR в вопросах и ответах
У меня вопрос по дисплеям нокиа 3310 и 5110-может кто решил
Как рисовать линии?бывает ли такая библиотека?или лучше создавать буфер на 504 ячейки,складывать рисунок туда и потом все передавать в жки как картинку?
Как рисовать линии?бывает ли такая библиотека?или лучше создавать буфер на 504 ячейки,складывать рисунок туда и потом все передавать в жки как картинку?
- andrusha152
- Первый раз сказал Мяу!
- Сообщения: 28
- Зарегистрирован: Вс май 15, 2016 19:02:01
- Откуда: Украина
Re: BASCOM AVR в вопросах и ответах
[uquote="Novice user",url="/forum/viewtopic.php?p=3286638#p3286638"]вопрос по I2C
Одно устройство подключено по I2C к одним портам(Config Scl = Portc.5,Config Sda = Portc.4),второе к другим(Config Scl = Portc.0,Config Sda = Portc.1),как переназначать программно порты?[/uquote]
Удалось решить этот вопрос? Если нет, вот пример с сайта Баскома, случайно нашел.
Одно устройство подключено по I2C к одним портам(Config Scl = Portc.5,Config Sda = Portc.4),второе к другим(Config Scl = Portc.0,Config Sda = Portc.1),как переназначать программно порты?[/uquote]
Удалось решить этот вопрос? Если нет, вот пример с сайта Баскома, случайно нашел.
Спойлер
Код: Выделить всё
'name : I2C-multibus.bas
'copyright : (c) 1995-2016, MCS Electronics
'purpose : demonstrates I2C multibus library
'micro : Mega88
'suited for demo : no, lib not included in demo
'commercial addon needed : no
'----------
$regfile = "m88def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 24
$framesize = 24
Config I2cbus = 0 , Scl = Portc.0 , Sda = Portc.1 'each bus requires a configuration of the SCL and SDA pins
Config I2cbus = 1 , Scl = Portc.2 , Sda = Portc.3 'this sample creates 4 busses
Config I2cbus = 2 , Scl = Portd.2 , Sda = Portd.3
Config I2cbus = 3 , Scl = Portd.4 , Sda = Portd.5
Dim J As Byte
For J = 0 To 3 'the first bus is 0 !!!
I2cbus = J 'select the BUS
I2cinit 'init the pins and state
Next
Do
For J = 0 To 3
I2cbus = J 'select the bus
I2csend &H40 , &B01010101 'send some data
Next
Waitms 100
Loop
End-
Novice user
- Мудрый кот
- Сообщения: 1704
- Зарегистрирован: Вт янв 05, 2016 10:14:25
- Откуда: поселок Мелеуз
Re: BASCOM AVR в вопросах и ответах
о,спасибо,попробую!
Re: BASCOM AVR в вопросах и ответах
Накидайте пожалуйста простую программу. Аттини 2313. Пусть на порт PB3 будет повешена кнопка, а на порт PB2 светодиод. кнопка подтянута на плюс внешним резистором 10Ком. Надо чтобы светодиод вспыхивал каждое 3-е нажатие кнопки например на 100милисекунд.
то есть жмём кнопку 1-2-3 (вспышка) 4-5-6 (вспышка) 7-8-9 (вспышка)
Да, антидребезг нужен.
-
Novice user
- Мудрый кот
- Сообщения: 1704
- Зарегистрирован: Вт янв 05, 2016 10:14:25
- Откуда: поселок Мелеуз
Re: BASCOM AVR в вопросах и ответах
[uquote="nik_81",url="/forum/viewtopic.php?p=3389902#p3389902"]Накидайте пожалуйста простую программу....[/uquote]
там делов то,можно и самому сладить...
там делов то,можно и самому сладить...
Re: BASCOM AVR в вопросах и ответах
4-й день бьюсь. Уже надоело. Без антидребезга у меня то на 2-е, то на 4-е нажатие срабатывает. А как всё это написать через прерывания я не осиляю. Готового примера в сети тоже не нашёл.
- Adagumer
- Поставщик валерьянки для Кота
- Сообщения: 2283
- Зарегистрирован: Чт ноя 15, 2012 20:47:59
- Откуда: Крымск
Re: BASCOM AVR в вопросах и ответах
nik_81 писал(а):Готового примера в сети тоже не нашёл.
A:
If Pind.2 = 0 Then 'при нажатии кнопки
Waitms 50 'антидребезг
Bitwait Pind.2 , Set 'ждём отпускания кнопки
Else
Goto A
End If
Re: BASCOM AVR в вопросах и ответах
Спасибо за помощь. Получилось следующее. Всё работает в протеусе, но почему то моргает не 0,1 Сек а где-то 1-1,5Сек, как будто код выполняется очень медленно или это просто глюк протеуса? И ещё вопрос почему при объявлении переменной для Аттини 13 протеус выдаёт ошибку, а для 2313 всё нормально. Не ужели не хватает памяти ? использую протеус версии 8,6 sp2
$regfile = "attiny2313.dat"
$crystal = 8000000
Config Portb.3 = Input 'настройка пина b3 на вход(S1)
Config Portb.2 = Output 'настройка пина b2 на выход(LED1)
Dim N As Byte ' Объявляем переменную N как байт
Do 'начало цикла
If Pinb.3 = 0 Then 'опрос кнопки и присвоение переменной N соответствующего значения
Waitms 10 ' задержка антидребезга
Bitwait Pinb.3 , Set 'ждём отпускания кнопки
N = N + 1 'с каждым нажатием увеличиваем N на 1
End If
If N = 3 Then Portb.2 = 1 Else Portb.2 = 0 ' 0 /@
If N = 3 Then waitms 100 ' Если светит, ждём 0,1С (моргаем)
If N = 3 Then N = 0 'N равен 3, то обнуляем
Loop 'конец цикла
End
$regfile = "attiny2313.dat"
$crystal = 8000000
Config Portb.3 = Input 'настройка пина b3 на вход(S1)
Config Portb.2 = Output 'настройка пина b2 на выход(LED1)
Dim N As Byte ' Объявляем переменную N как байт
Do 'начало цикла
If Pinb.3 = 0 Then 'опрос кнопки и присвоение переменной N соответствующего значения
Waitms 10 ' задержка антидребезга
Bitwait Pinb.3 , Set 'ждём отпускания кнопки
N = N + 1 'с каждым нажатием увеличиваем N на 1
End If
If N = 3 Then Portb.2 = 1 Else Portb.2 = 0 ' 0 /@
If N = 3 Then waitms 100 ' Если светит, ждём 0,1С (моргаем)
If N = 3 Then N = 0 'N равен 3, то обнуляем
Loop 'конец цикла
End
- andrusha152
- Первый раз сказал Мяу!
- Сообщения: 28
- Зарегистрирован: Вс май 15, 2016 19:02:01
- Откуда: Украина
Re: BASCOM AVR в вопросах и ответах
Немного причешу ваш код
Чтобы в Протеусе показывало правильно уберите галочку с фьюза CKDIV8.
Код: Выделить всё
$regfile = "attiny2313.dat"
$crystal = 8000000
Config Pinb.3 = Input 'настройка пина b3 на вход(S1)
Config Portb.2 = Output 'настройка пина b2 на выход(LED1)
Dim N As Byte ' Объявляем переменную N как байт
Config Debounce = 150 ' антидребезг
Reset Portb.2
N = 0
Do
If Pinb.3 = 0 Then
Bitwait Pinb.3 , Set
Incr N
If N = 3 Then
Set Portb.2
Waitms 100
Reset Portb.2
N = 0
End If
End If
Loop 'конец цикла
EndЧтобы в Протеусе показывало правильно уберите галочку с фьюза CKDIV8.
-
Novice user
- Мудрый кот
- Сообщения: 1704
- Зарегистрирован: Вт янв 05, 2016 10:14:25
- Откуда: поселок Мелеуз
Re: BASCOM AVR в вопросах и ответах
Не могу понять в чем дело-по прерыванию INT0 аттини2313а не просыпается,может еще чего не хватает?
$Crystal = 4000000
Config PORTB.2 = Output
Config Int0 = Low Level
On Int0 Button:
Enable Interrupts
Enable Int0
Do
Set PORTB.2
Wait 1
Reset PORTB.2
Powerdown
Loop
Button:
'Gifr = 64 'Wait 1
Return
End
Спойлер
$Regfile = "attiny2313a.dat"$Crystal = 4000000
Config PORTB.2 = Output
Config Int0 = Low Level
On Int0 Button:
Enable Interrupts
Enable Int0
Do
Set PORTB.2
Wait 1
Reset PORTB.2
Powerdown
Loop
Button:
'Gifr = 64 'Wait 1
Return
End
- Microtech
- Поставщик валерьянки для Кота
- Сообщения: 2052
- Зарегистрирован: Вт ноя 03, 2009 21:02:38
- Откуда: Москва
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
У меня работает Ваш код.
$crystal = 4000000
Config PORTB.2 = Output
Config Int0 = Low Level
Set Portd.2
On Int0 Button
Enable Interrupts
Enable Int0
Do
Set PORTB.2
Wait 1
Reset PORTB.2
Powerdown
Loop
Button:
'Gifr = 64 'Wait 1
Return
End
Убрал двоеточие после "On Int0 Button" (не влияет ни на что) и добавил "Set Portd.2", чтобы не паять резистор к плюсу.
Спойлер
$Regfile = "attiny2313a.dat"$crystal = 4000000
Config PORTB.2 = Output
Config Int0 = Low Level
Set Portd.2
On Int0 Button
Enable Interrupts
Enable Int0
Do
Set PORTB.2
Wait 1
Reset PORTB.2
Powerdown
Loop
Button:
'Gifr = 64 'Wait 1
Return
End
Убрал двоеточие после "On Int0 Button" (не влияет ни на что) и добавил "Set Portd.2", чтобы не паять резистор к плюсу.
-
Novice user
- Мудрый кот
- Сообщения: 1704
- Зарегистрирован: Вт янв 05, 2016 10:14:25
- Откуда: поселок Мелеуз
Re: BASCOM AVR в вопросах и ответах
У меня резистор к плюсу,в Powerdown не просыпался никак,в idle все норм но потребление около 1 ма-так и оставил
- Microtech
- Поставщик валерьянки для Кота
- Сообщения: 2052
- Зарегистрирован: Вт ноя 03, 2009 21:02:38
- Откуда: Москва
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Я запускал такты от внутреннего генератора на 8 МГц. Возможно, причина в настройках fuse бит, нужно включить задержку запуска?
-
domrustika
- Грызет канифоль
- Сообщения: 257
- Зарегистрирован: Чт мар 22, 2007 13:50:33
- Откуда: казань
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
ребят нужна помощь. есть код такой
код работает так. при T более 27 градусов реле включает нагрузку- вентиляторы. соответственно менее 27 реле не включается. НО
при таком коде считывается данные термодатчика каждую секунду, из за чего постоянно включается \выключается реле.
подскажите как изменить код так, что бы работало след образом -
1. измерял температуру не каждую секунду, а раз в 10 минут.
2. прошло 10 минут - измерил, если более 27 включил реле, снизил до 27 и выключился.
помогите пожалуйста!
Спойлер
Код: Выделить всё
Do
1wreset
If Err = 1 Then
Cls
Lcd "Err"
Do
Loop
Else
1wwrite &HCC
1wwrite &H44
Waitms 750
1wreset
1wwrite &HCC
1wwrite &HBE
A = 1wread()
B = 1wread()
If A > 248 Then
A = &HFF - A
B = &HFF - B
E = 2
Else
E = 1
End If
C = A / 16
D = B * 16
C = C + D
If E = 2 Then C = C + 1
If E = 1 And C = 0 Then E = 0
Cls
Lcd "V O D A= "
If E = 0 Then Lcd " " ; C ; "'" ; "C"
If E = 1 Then Lcd "+" ; C ; "'" ; "C"
If E = 2 Then Lcd "-" ; C ; "'" ; "C"
End If
If C <= 27 Then ' разМЫКАЕТ 2 И 3 контакт сверху реле . зеленый диод на реле ГОРИТ. это для ВыкЛЮЧЕНИЯ вентиляторов.
Reset Out_1
Locate 2 , 1
Lcd "C O O L E R O F F"
End If
If C > 27 Then ' в ином случае Замыкает 2 и 3 контакт сверху реле . зеленый диод на реле НЕ горит. это для ВКЛЮЧЕНИЯ вентиляторов.
Set Out_1
Locate 2 , 1
Lcd "C O O L E R O N"
End If
код работает так. при T более 27 градусов реле включает нагрузку- вентиляторы. соответственно менее 27 реле не включается. НО
при таком коде считывается данные термодатчика каждую секунду, из за чего постоянно включается \выключается реле.
подскажите как изменить код так, что бы работало след образом -
1. измерял температуру не каждую секунду, а раз в 10 минут.
2. прошло 10 минут - измерил, если более 27 включил реле, снизил до 27 и выключился.
помогите пожалуйста!
- andrusha152
- Первый раз сказал Мяу!
- Сообщения: 28
- Зарегистрирован: Вс май 15, 2016 19:02:01
- Откуда: Украина
Re: BASCOM AVR в вопросах и ответах
[uquote="domrustika",url="/forum/viewtopic.php?p=3436182#p3436182"]снизил до 27 и выключился.[/uquote]
Так не получится. Измерение раз в 10 минут. За это время температура может снизиться и до 20 градусов и ниже. Отсчет времени лучше всего делать по прерыванию таймера. Берете переменную, в обработчике прерывания таймера инкременируете ее. Когда она достигает определенного значения, меряете температуру, переменную сбрасываете в ноль. Включаете вентилятор. Но вентилятор будет крутить до следующего измерения.
Так не получится. Измерение раз в 10 минут. За это время температура может снизиться и до 20 градусов и ниже. Отсчет времени лучше всего делать по прерыванию таймера. Берете переменную, в обработчике прерывания таймера инкременируете ее. Когда она достигает определенного значения, меряете температуру, переменную сбрасываете в ноль. Включаете вентилятор. Но вентилятор будет крутить до следующего измерения.
-
domrustika
- Грызет канифоль
- Сообщения: 257
- Зарегистрирован: Чт мар 22, 2007 13:50:33
- Откуда: казань
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
спасибо! но было бы хорошо , если бы написали код как это будет выглядеть.

сам так не смогу написать
сам так не смогу написать
-
vanyap1
- Электрический кот
- Сообщения: 1048
- Зарегистрирован: Пт июл 30, 2010 11:49:03
- Откуда: Украина
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Этот код вообще не должен работать
Do
1wreset
If Err = 1 Then
Cls
Lcd "Err"
Do <<<<<<<<<
Loop <<<<<<<<<< Шта энто? как отсюда выбраться?
Do
1wreset
If Err = 1 Then
Cls
Lcd "Err"
Do <<<<<<<<<
Loop <<<<<<<<<< Шта энто? как отсюда выбраться?
- edm2007
- Поставщик валерьянки для Кота
- Сообщения: 2255
- Зарегистрирован: Вт апр 21, 2009 22:24:10
- Откуда: Иркутск
- Контактная информация:
Re: BASCOM AVR в вопросах и ответах
Так, видимо, и не планировалось оттуда выбираться. Если датчика нет, то усё, приехали. 

"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Re: BASCOM AVR в вопросах и ответах
BASCOM-AVR 2.0.8.1 и BASCOM-8051 2.0.16.0 http://rutracker.org/forum/viewtopic.php?t=5607303