Четверг, 25.04.2024, 02:30
| RSS
[SEARCH_TITLE]
[SEARCH_FORM]
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Архив - только для чтения
Форум » Программирование » Программирование на языке С, Бейсик и Асемблер » Вопросы по программированию в Bascom AVR (Например как работать с шимом, ацп и т. д.)
Вопросы по программированию в 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
И когда вы только начнёте по сайту самостоятельно искать shout
Вот здесь лежит эта прога. Рабочая 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

Пробывал и другие циклы, и другие условия, всеравно из прерывания невыходит, впечатление, что МК "висит"
Если же нет цикла, то все работает pardon
 
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
На этот вопрос затрудняюсь тебе ответить scratch_one-s_head т. к. сам с прерываниями не работал ещё. Но попробуй похимичить с Until.
Если не читал здесь, то почитай там подробно всё расписано.
 
pashteetДата: Воскресенье, 01.11.2009, 18:25 | Сообщение # 13








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
уу, спасибо! Завтра обязательно почитаю good

Добавлено (01.11.2009, 18:25)
---------------------------------------------
Кто-нибудь, подскажите плиз, где можно про UART почитать?

 
Yura202Дата: Пятница, 06.11.2009, 21:51 | Сообщение # 14








Язык программированя: а что ето такое?
Зарегистрирован 06.11.2009
Группа: Новички
Сообщений: 25
Город: Тернополь
Статус: Offline
А с чего лутше начинать учитса програмировать??? Ато вижу мне програмирование понадобитса.
Я про програмирования ничего не знаю так што любой совет сылка все покажыте
ПОЖАЛУСТА! help help
 
pashteetДата: Суббота, 07.11.2009, 11:04 | Сообщение # 15








Зарегистрирован 21.09.2009
Группа: Новички
Сообщений: 225
Город: Волжский
Статус: Offline
ИМХО с изучения английского языка, затем посмотреть примеры в баскоме и незабыть про синтаксис компилятора
 
Форум » Программирование » Программирование на языке С, Бейсик и Асемблер » Вопросы по программированию в Bascom AVR (Например как работать с шимом, ацп и т. д.)
  • Страница 1 из 6
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • »
Поиск: