|
Суббота, 14.09.2024, 11:27 |
Приветствую Вас Гость |
Автозапуск за 1500р. на ЛЮБОЙ сигнализации?! -> at13.ruГлавная | Регистрация | Вход | RSS |
BASCOM AVR - Исходники, вопросы и ответы - Форум
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= период в количестве тактов основного генератора
|
|
| |
|
|