4. Первая программа



Автор: WildCat

Моргало светодиодное
Светодиодная моргалка - это, пожалуй, примерно тоже, что и "Hello world!", только с хардкорным электрическим уклоном. Это тот самый этап, когда вы будете готовы к запуску целой системы и проверки её работоспособности.

Для начала соберите небольшую тестовую схему.



К микроконтроллеру в стандартной обвязке (под стандартной обвязкой имеется ввиду источник питания и кварцевый резонатор с подтягивающими конденсаторами) необходимо подключить светодиод. Анодом подключите его к любому выводу порта D (читайте даташит, смотрите распиновку!), а катодом - к земле через резистор 220-560 ом.
Теперь приступим. Запустите BASCOM, создайте новый проект (File->New).



В появившемся окне редактора наберите следующую программу:



Заметьте: редактор осуществляет подсветку синтаксиса при вводе. Это очень удобно, сразу заметно, если вы где-то допустили ошибку.

В этой простейшей программе порт D настраивается на вывод. Потом на него подается значение 255. Таким образом все биты порта примут значение 1. Обратите внимание, что аппаратно доступны только младшие 7 бит (PD0-PD6).
По истечении 50 миллисекунд на порту D устанавливается значение 0, и все его биты также принимают значение 0. Через 50 миллисекунд цикл повторяется. В результате светодиод очень часто моргает.

После того, как вы ввели текст, нажмите File->Save и сохраните файл проекта в подходящее место. Назовите его ledflasher.bas. Так как BASCOM создает множество файлов после компиляции, неплохо было бы сохранять каждый проект в отдельную папку.

Зададим теперь настройки контроллера. Жмем Options->Compiler->Chip:



Чип по умолчанию установлен как AT90S2313:



Выберите вкладку Communication:



По умолчанию значение тактовой частоты установлено 10 МГц, но так как мы используем кварц на 4 МГц, выберите значение 4000000 из списка Frequency. Необходимо задавать тактовоую частоту кварца, который будет использоваться в схеме, так как все временные величины в программе рассчитываются из этого значения:



После того, как вы сохранили проект, нажмите Program->Compile (F7). BASCOM проверит синтаксис, и, если не найдет ни одной досадной ошибки, скомпилирует программу и скажет, сколько памяти она займет в МК указанного типа:



Теперь убедитесь, что питание на вашу схему подано, программатор подключен к устройству и ПК:



В BASCOM нажмите Program->Send to chip (F4). Если вы настроили BASCOM на использование внешнего компилятора, описаного ранее,появится окно TWinAVR. Дальше эта программа сделает следующее:
- Остановит работу МК (подаст 0 на линию сброса)
- Подключит шинный формирователь (74HCT244) к лапкам МК
- Поместит содержимое ledflasher.bin в программную память МК
- Сравнит загруженную программу с оригиналом
- Отключит шинный формирователь от МК
- Освободит линию сброса (подаст 1), МК начнет выполнять программу.
При программировании информация о текущих процессах отображается в отдельном окне:



После завершения программирования вам придется вручную закрыть TWinAVR, этого BASCOM за вас не сделает.

В награду за наши старания мы получим шустро моргающий светодиод.
Теперь поиграемся с кодом программы. Измените значения после команды Waitms, чтобы изменить время вспышек и пауз между ними. Нажмите F7, чтобы перекомпилировать программу, перепрограммируйте чип клавишей F4 и следите за изменениями в работе!

Теперь, когда все подключено, вы заметите, что при следующей загрузке компьютера контроллер не включится, пока вы не запустите TWinAVR. Это происходит оттого, что компьютер удерживает линию сброса на низком уровне, а TWinAVR сбрасывает её после записи программы или чтения конфигурации.



DECADALAB ALFA