Четверг, 25.04.2024, 07:56 Приветствую Вас Гость

Автозапуск за 1500р. на ЛЮБОЙ сигнализации?! -> at13.ru

Главная | Регистрация | Вход | RSS

BASCOM AVR - Исходники, вопросы и ответы - Форум

[ Обновленные темы · Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Модератор форума: Advanced  
Форум » Микроконтроллеры » Микроконтроллеры AVR » BASCOM AVR - Исходники, вопросы и ответы (Исходные коды, FAQ.)
BASCOM AVR - Исходники, вопросы и ответы
AdvancedДата: Вторник, 17.07.2012, 14:14 | Сообщение # 1
Подполковник
Группа: Модераторы
Сообщений: 138
Репутация: 0
Статус: Offline
В этом разделе делимся исходными кодами, прошивками и всем тем, что может пригодится начинающим и не только в области МК.

Максимальная длина сообщения 5000 символов, если текст превышает допустимого значения, то выкладывайте исходники в текстовых документах.
 
AdvancedДата: Среда, 18.07.2012, 11:53 | Сообщение # 2
Подполковник
Группа: Модераторы
Сообщений: 138
Репутация: 0
Статус: Offline
Исходник светофора:

Code
'Cветофор
'Robotsspace.ucoz.ru

$regfile = "m16def.dat" ' используем ATmega16
$crystal = 8000000 ' частота установленного кварца 8 mHz

Config Portd.2 = Output ' конфигурируем вывод 2 порта D на выход - подключаем к нему светодиод
Config Portd.4 = Output ' конфигурируем вывод 4 порта D на ВЫХОД - подключаем к нему светодиод
Config Portd.6 = Output ' конфигурируем вывод 6 порта D на ВЫХОД - подключаем к нему светодиод
Config Portb.0 = Output ' конфигурируем вывод 0 порта B на ВЫХОД - подключаем к нему светодиод
Config Portb.2 = Output ' конфигурируем вывод 2 порта B на ВЫХОД - подключаем к нему светодиод

' Для машин
Red 0 Alias Portd.2 ' присваиваем имя Red выводу 2 порта D
Yellow Alias Portd.4 ' присваиваем имя Yellow выводу 4 порта D
Green 0 Alias Portd.6 ' присваиваем имя Green выводу 6 порта D

' Для пешиходов
Red 1 Alias Portb.2 ' присваиваем имя Red 1 выводу 2 порта B
Green 1 Alias Portb.0 ' присваиваем имя Green 1 выводу 0 порта B

Do 'начало цикла программы

' Зажигаем красный для машин и зелёный для пешиходов на 3 секунды
Red 0 = 1 'устанавливаем на ножке порта лог 1 - светодиод горит
Green 1 = 1 'устанавливаем на ножке порта лог 1 - светодиод горит
Waitms 3000 'задержка в миллисекундах 3000мс = 3 секунды

' Зажигаем жёлтый на 3 секунды
Yellow = 1 'устанавливаем на ножке порта лог 1 - светодиод горит
Waitms 3000 'задержка в миллисекундах 3000мс = 3 секунды

' Моргаем зелёным для пешиходов 3 раза
Green 1 = 1 'устанавливаем на ножке порта лог 1 - светодиод горит
Waitms 500 'задержка в миллисекундах 500мс = 0.5 секунды
Green 1 = 0 'устанавливаем на ножке порта лог 0 - светодиод не горит
Waitms 500 'задержка в миллисекундах 500мс = 0.5 секунды
Green 1 = 1 'устанавливаем на ножке порта лог 1 - светодиод горит
Waitms 500 'задержка в миллисекундах 500мс = 0.5 секунды
Green 1 = 0 'устанавливаем на ножке порта лог 0 - светодиод не горит
Waitms 500 'задержка в миллисекундах 500мс = 0.5 секунды
Green 1 = 1 'устанавливаем на ножке порта лог 1 - светодиод горит
Waitms 500 'задержка в миллисекундах 500мс = 0.5 секунды
Green 1 = 0 'устанавливаем на ножке порта лог 0 - светодиод не горит
Waitms 500 'задержка в миллисекундах 500мс = 0.5 секунды
Green 1 = 1 'устанавливаем на ножке порта лог 1 - светодиод горит
Waitms 500 'задержка в миллисекундах 500мс = 0.5 секунды
Green 1 = 0 'устанавливаем на ножке порта лог 0 - светодиод не горит

' Гасим красный и жёлтый для машин. Зажигаем зелёный для машин. Гасим зелёный для пешиходов и зажигаем для них красный.
Red 0 = 0 'устанавливаем на ножке порта лог 0 - светодиод не горит
Yellow = 0 'устанавливаем на ножке порта лог 0 - светодиод не горит 'задержка в миллисекундах 3000мс = 3 секунды
Green 0 = 1 'устанавливаем на ножке порта лог 1 - светодиод горит
Green 1 = 0 'устанавливаем на ножке порта лог 0 - светодиод не горит
Red 1 = 1 'устанавливаем на ножке порта лог 1 - светодиод горит
Waitms 3000 'задержка в миллисекундах 3000мс = 3 секунды

' Гасим зелёный для машин и зажигаем красный для пешиходов и жёлтый.
Green 0 = 0 'устанавливаем на ножке порта лог 0 - светодиод не горит
Yellow = 1 'устанавливаем на ножке порта лог 1 - светодиод горит
Red 1 = 1 'устанавливаем на ножке порта лог 1 - светодиод горит
Waitms 1000 'задержка в миллисекундах 1000мс = 1 секунда
' Гасим жёлтый и красный(для пешиходов)
Yellow = 0 'устанавливаем на ножке порта лог 0 - светодиод не горит
Red 1 = 0 'устанавливаем на ножке порта лог 0 - светодиод не горит
Waitms 500 'задержка в миллисекундах 500мс = 0.5 секунды
Loop
'И переходим к началу программы
End
 
AdvancedДата: Среда, 18.07.2012, 11:56 | Сообщение # 3
Подполковник
Группа: Модераторы
Сообщений: 138
Репутация: 0
Статус: Offline
Вот так можно переключать светодиоды и делать бегущие огни:

Code
$regfile = "m8def.dat"
$crystal = 8000000

Config Pinc.0 = Output
Config Pinc.1 = Output
Config Pinc.2 = Output

Do
Pinc.0 = 1
Waitms 10
Pinc.1 = 1
Waitms 10
Pinc.2 = 1
Waitms 10

Loop

End
 
AdvancedДата: Среда, 18.07.2012, 11:59 | Сообщение # 4
Подполковник
Группа: Модераторы
Сообщений: 138
Репутация: 0
Статус: Offline
Включение/ выключение нагрузки 1 кнопкой:

Code

Config Portb.0 = Output ' конфигурируем вывод 2 порта B на ВЫХОД - подключаем к нему светодиод
Config Pinc.2 = Input ' конфигурируем вывод 2 порта С на ВХОД - подключаем к нему кнопку

Led Alias Portb.0 ' присваиваем имя LED выводу 0 порта B
Button Alias Pinc.2 ' присваиваем имя Button выводу 2 порта С

Do ' начало цикла программы

If Button = 0 Then ' УСЛОВИЕ - если на 2-й ножке порта С низкий логический уровень то...
Led = 1 ' устанавливаем на ножке 0 порта В высокий логический уровень (светодиод горит)
Else ' в противном случае...
Led = 0 ' устанавливаем на ножке 0 порта В низкий логический уровень (светодиод не горит)
End If 'конец условия

Loop
End
 
AdvancedДата: Среда, 18.07.2012, 12:00 | Сообщение # 5
Подполковник
Группа: Модераторы
Сообщений: 138
Репутация: 0
Статус: Offline
Другой вариант включения / выключения 1 кнопкой:

Code
Config Debounce = 10                    'время задержки в мс
Config Pind.7 = Input                    'настройка пина d7 на вход
Config Pinb.1 = Output                    'настройка пина b1 на выход
Set Portd.7                    'включить внутренний подтягивающий резистор
Reset Portb.1                    'сбросить порт
Vv Alias Pind.7                    'присваиваем порту имя Vv

1:                    'метка

Do                    'основной цикл программы

Debounce Vv , 0 , Led_on                    'если нажали кнопку, то идти на Led_on

Loop                    'конец основного цикла

Led_on:
Do                    'подпрограмма включения
Set Portb.1
Goto 2
Loop

2:                    'ждем второго нажатия
Do
Debounce Vv , 0 , Led_off
Loop

Led_off:                    'подпрограмма выключения
Do
Reset Portb.1
Goto 1
Loop

End                    'конец программы
 
AdvancedДата: Среда, 18.07.2012, 12:02 | Сообщение # 6
Подполковник
Группа: Модераторы
Сообщений: 138
Репутация: 0
Статус: Offline
Выводим надпись на ЖКИ дисплей (HDxxx winstar):

Code
$regfile = "2313def.dat"
$crystal = 4000000
$sim

Dim Count As Integer
Count = 0

Lcd "01.07.2012"               ' пишем текст на 1 строку
Wait 1
Lowerline                          ' с помощью этой команды переключаемся на нижнюю строку
Lcd "coІepёcxeјy.pд"         ' пишем текст на вторую строку   

End
 
AdvancedДата: Среда, 18.07.2012, 12:04 | Сообщение # 7
Подполковник
Группа: Модераторы
Сообщений: 138
Репутация: 0
Статус: Offline
Генерирование звука:

Code
$regfile = "m8def.dat"
$crystal = 8000000
Config Portb.0 = Output
Speaker Alias Portb.0

Do
Sound Speaker , 65 , 1274                     
Waitms 125                     
Sound Speaker , 87 , 954                        
Waitms 125                     
Sound Speaker , 98 , 850                     
Waitms 125                     
Sound Speaker , 87 , 954                     
Sound Speaker , 117 , 715                     
Waitms 125                     
Sound Speaker , 110 , 758                     
Waitms 125                     
Sound Speaker , 98 , 850                
Waitms 125                     
Sound Speaker , 110 , 758                         
Sound Speaker , 87 , 954                       
Waitms 125                     
Wait 2
Loop
 
AdvancedДата: Среда, 18.07.2012, 12:07 | Сообщение # 8
Подполковник
Группа: Модераторы
Сообщений: 138
Репутация: 0
Статус: Offline
Вот еще один интересный код, при включении светодиод горит, если нажать кнопку то светодиод начнет мигать, чтобы остановить мигание светодиода, нужно нажимать и держать кнопку, если кнопку отпустить - светодиод будет мигать.

Code
$regfile = "m8def.dat"
$crystal = 1000000

Config Pinb.0 = Input
Config Pinc.0 = Output

Do
If Pinb.0 = 0 Then
Portc.0 = 1
Else
   Pinc.0 = 1
   Waitms 3
   Pinc.0 = 0
   Waitms 3
   End If
Loop
End
 
AdvancedДата: Среда, 18.07.2012, 12:08 | Сообщение # 9
Подполковник
Группа: Модераторы
Сообщений: 138
Репутация: 0
Статус: Offline
Меню для ЖКИ дисплея вида 1602:

Code
Deflcdchar 0 , 16 , 24 , 28 , 30 , 28 , 24 , 16 , 32        'указатель курсора
Deflcdchar 5 , 32 , 32 , 32 , 32 , 32 , 32 , 32 , 32        'очистить знакоместо

'НАЗНАЧЕНИЕ КНОПОК КЛАВИАТУРЫ
Cv Alias Pina.0                    'КНОПКА КУРСОР ВЕРХ
Cn Alias Pina.1                    'КНОПКА КУРСОР ВНИЗ
M Alias Pind.3                    'КНОПКА ВВОД

'меню
Cls
Locate 1 , 1
Lcd "******MENU******"
Locate 2 , 2
Lcd "Run"
Locate 3 , 2
Lcd "Zadergka cikla"
Locate 4 , 2
Lcd "Setup"
Goto _menu_pos1

_menu_pos1:
Gosub _lcd_clear1
Locate 2 , 1
Lcd Chr(0)
Do
Debounce M , 0 , _run
Debounce Cn , 0 , _menu_pos2
Debounce Cv , 0 , _menu_pos3
Loop

_menu_pos2:
Gosub _lcd_clear1
Locate 3 , 1
Lcd Chr(0)
Do
Debounce M , 0 , _zadergka_cikla
Debounce Cn , 0 , _menu_pos3
Debounce Cv , 0 , _menu_pos1
Loop

_menu_pos3:
Gosub _lcd_clear1
Locate 4 , 1
Lcd Chr(0)
Do
Debounce M , 0 , _setup
Debounce Cn , 0 , _menu_pos1
Debounce Cv , 0 , _menu_pos2
Loop

'очистка знакоместа
_lcd_clear1:
Locate 2 , 1
Lcd Chr(5)
Locate 3 , 1
Lcd Chr(5)
Locate 4 , 1
Lcd Chr(5)
Return
 
AdvancedДата: Среда, 18.07.2012, 12:08 | Сообщение # 10
Подполковник
Группа: Модераторы
Сообщений: 138
Репутация: 0
Статус: Offline
Пикаем динамиком:

Code
Sound PortX.X, Pulses, Period
ound Speaker , 50 , 800

Pulses= количество импульсов (длительность)
Period= период в количестве тактов основного генератора
 
Форум » Микроконтроллеры » Микроконтроллеры AVR » BASCOM AVR - Исходники, вопросы и ответы (Исходные коды, FAQ.)
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск:

Поиск
Вход на сайт
Наш опрос
Какой у вас оператор сотовой связи
Всего ответов: 189
Статистика
Друзья сайта