Вопросы по программированию в Bascom AVR
|
|
Space | Дата: Пятница, 02.10.2009, 12:19 | Сообщение # 1 |
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
| Задавайте свои вопросы
|
|
| |
sasha | Дата: Пятница, 02.10.2009, 13:44 | Сообщение # 2 |
Язык программированя: Си и баском(учусь)
Зарегистрирован 16.02.2009
Группа: Новички
Сообщений: 371
Город: Актюбинск
Статус: Offline
| вот как написать еакую прогу на баскоме? када нажимаешь кнопку загориться светодиод а када второй раз нажимаешь выключился))) работает тоько с одной кнопкой)))
-=Наша_зависимость_от_роботов_возрастает_с_каждым_днем=-
|
|
| |
Space | Дата: Пятница, 02.10.2009, 15:06 | Сообщение # 3 |
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
| И когда вы только начнёте по сайту самостоятельно искать Вот здесь лежит эта прога. Рабочая 100%. Только что проверил. Вот так выглядет: Code $regfile = "m16def.dat" $crystal = 16000000
Config Pinb.0 = Output : Red_0 Alias Portb.0 Config Pinc.2 = Input : Кнопка_старт Alias Pinc.2 Config Pinc.3 = Input : Кнопка_стоп Alias Pinc.3
Основная: Do
If Кнопка_старт = 0 Then : Gosub Горит : End If If Кнопка_стоп = 0 Then : Gosub Не_горит : End If
Loop
Горит: Red_0 = 1 Goto Основная
Не_горит: Red_0 = 0 Goto Основная End
|
|
| |
sasha | Дата: Пятница, 02.10.2009, 20:32 | Сообщение # 4 |
Язык программированя: Си и баском(учусь)
Зарегистрирован 16.02.2009
Группа: Новички
Сообщений: 371
Город: Актюбинск
Статус: Offline
| проблема в том что весь процесс надо сделать при помощи одной кнопки(((
-=Наша_зависимость_от_роботов_возрастает_с_каждым_днем=-
|
|
| |
Space | Дата: Пятница, 02.10.2009, 21:37 | Сообщение # 5 |
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
| Quote (sasha) проблема в том что весь процесс надо сделать при помощи одной кнопки((( Попробуй так. Может заработает: Code $regfile = "m16def.dat" $crystal = 16000000
Config Pinb.0 = Output : Red_0 Alias Portb.0 Config Pinc.2 = Input : Кнопка_старт Alias Pinc.2
Основная: Do
If Кнопка_старт = 0 Then : Gosub Светодиод : End If
Loop
Светодиод: If Red_0 = 0 Then : Red_0 = 1 : Else : Red_0 = 0 : End If Goto Основная
End Добавлено (02.10.2009, 21:37) --------------------------------------------- Попробовал вроде как работает. Вообщем пробуй
|
|
| |
sasha | Дата: Четверг, 29.10.2009, 22:51 | Сообщение # 6 |
Язык программированя: Си и баском(учусь)
Зарегистрирован 16.02.2009
Группа: Новички
Сообщений: 371
Город: Актюбинск
Статус: Offline
| неа((( не работает
-=Наша_зависимость_от_роботов_возрастает_с_каждым_днем=-
|
|
| |
pashteet | Дата: Пятница, 30.10.2009, 19:34 | Сообщение # 7 |
Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
| Space, ты с прерываниями дело имел?
|
|
| |
Space | Дата: Суббота, 31.10.2009, 10:56 | Сообщение # 8 |
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
| нет, но если вопрос есть то задавай. Может помогу чем.
|
|
| |
pashteet | Дата: Суббота, 31.10.2009, 13:29 | Сообщение # 9 |
Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
| Есть вопрос, немогу выйти из программы (обработчика прерывания), если в ней есть цикл пример: Code $lib "mcsbyteint.lbx"
Config Rc5 = Pind.2
Config Int0 = Falling On Int0 Приём Nosave Enable Int0
Do
Loop
Приём: Disable Int0 Enable Interrupts Do Getrc5(address , Command) Command = Command And &B01111111
If Command = 1 Then : Set Led1 Waitms 100 Elseif Command = 2 Then : Set Led2 Waitms 100 Elseif Command = 3 Then : Set Led3 Waitms 100 Elseif Command = 4 Then : Set Led4 Waitms 100 Elseif Command = 5 Then : Waitms 100 : Enable Int0 : Return Waitms 100 Elseif Command = 7 Then : Reset Led4 Waitms 100 Elseif Command = 8 Then : Reset Led3 Waitms 100 Elseif Command = 9 Then : Reset Led2 Waitms 100 Elseif Command = 12 Then : Reset Led1 Waitms 100 End If Loop Enable Int0 Return
End Пробывал и другие циклы, и другие условия, всеравно из прерывания невыходит, впечатление, что МК "висит" Если же нет цикла, то все работает
|
|
| |
Space | Дата: Суббота, 31.10.2009, 22:59 | Сообщение # 10 |
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
| А на фига добавлять эту строчку (Enable Int0 ) в конце цикла. И вообще смысл сначало запретить прерывания на int0, а потом разрешать? Добавлено (31.10.2009, 22:59) --------------------------------------------- А вообще чтобы выйти из цикла ставь условие Until: Code Do Gosub 1 Loop
1: Do ' какое-то действие Loop Until A = 1 ' выполняем цикл до тех пор пока А=1 А=А+1 ' выполняем после выхода из цикла Return Почитай книженцию по Bascom-8051 там описано как выходить из разных циклов и как они работают
|
|
| |
pashteet | Дата: Суббота, 31.10.2009, 23:02 | Сообщение # 11 |
Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
| Я вхожу в обработчик по спаду (при приеме ТСОП) если не запрещать прерывания, то команды не будет принимать, а каждый раз (при нажатии кнопки не пульте) будет переходить в начало обработчика, хотя хз, завтра попробую так. Вообще смысл в том, чтобы безпрепядственно выполнить программу обработчик (вроде так) Ну вообще то смысл вопроса был именно в том, что мк виснит, если в прерывании есть какой - либо цикл, вверху был лиш пример, пробывал по разному организовать цикл и ниче не получается. Так вот, если все же это возможно, то как делать правильно?
|
|
| |
Space | Дата: Суббота, 31.10.2009, 23:06 | Сообщение # 12 |
Зарегистрирован 25.12.2007
Группа: Администраторы
Сообщений: 1103
Статус: Offline
| На этот вопрос затрудняюсь тебе ответить т. к. сам с прерываниями не работал ещё. Но попробуй похимичить с Until. Если не читал здесь, то почитай там подробно всё расписано.
|
|
| |
pashteet | Дата: Воскресенье, 01.11.2009, 18:25 | Сообщение # 13 |
Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
| уу, спасибо! Завтра обязательно почитаю Добавлено (01.11.2009, 18:25) --------------------------------------------- Кто-нибудь, подскажите плиз, где можно про UART почитать?
|
|
| |
Yura202 | Дата: Пятница, 06.11.2009, 21:51 | Сообщение # 14 |
Язык программированя: а что ето такое?
Зарегистрирован 06.11.2009
Группа: Новички
Сообщений: 25
Город: Тернополь
Статус: Offline
| А с чего лутше начинать учитса програмировать??? Ато вижу мне програмирование понадобитса. Я про програмирования ничего не знаю так што любой совет сылка все покажыте ПОЖАЛУСТА!
|
|
| |
pashteet | Дата: Суббота, 07.11.2009, 11:04 | Сообщение # 15 |
Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
| ИМХО с изучения английского языка, затем посмотреть примеры в баскоме и незабыть про синтаксис компилятора
|
|
| |