| Главная » Каталог сайтов » Компьютеры |
| Железо [0] | Оцифрованный мир [0] |
| Компьютерная безопасность [0] | Периферия [0] |
| Компьютерная документация [0] | Программирование [17] |
| Компьютерные онлайн форумы [0] | Программное обеспечение [0] |
| Мобильные ПК [0] | Сети [0] |
| Операционные системы [0] |
| В разделе сайтов: 17 Показано сайтов: 1-5 |
Страницы: 1 2 3 4 » |
|
Выполнение лабораторной работы состоит из двух этапов: самостоятельная работа и работа на лабораторном стенде. Цель работы: Разработать программу вывода информации на светодиодный индикатор через порт РВ с использованием программной временной задержки. Примечание: переменная In1 содержит текущее значение выводимого в порт В значения. Ниже приведен исходный текст программы proba.asm, решающий поставленную задачу .include "2313def.inc" ; определение типа устройства для которого разработана программа .def In1 = r18 ; определить для хранения переменной In1 регистр r18 ; определение таблицы векторов прерываний rjmp MAIN ; сброс по reset , переход на начало программы; метка MAIN reti ; не определено; возврат reti ; reti ; reti ; reti ; reti ; reti ; reti ; reti ; reti ; reti ; reti ; ;----------------------------------------------------- ;начало программы MAIN: ldi r16,low(RAMEND);установка указателя стека out spl,r16 ldi r16,255 ; настройка порта В на вывод информации out ddrb,r16 ; ;------------------------------------------------------ ;основной цикл tostart: ldi In1,1 ; In1 = 1 oneop: ldi r16,low(50000) ;записать в регистры r16, r17 значение множителя временной ldi r17,high(50000);задержки с учётом, что шаг задержки 100 мкС для передачи в п/п временной задержки rcall wait ;вызов подпрограммы временной задержки com In1 ;инвертировать значение In1 (необходимость этого ; продиктована особенностями работы блока индикации) out portb, In1 ;вывести In1 в порт В com In1 ;инвертировать значение lsl In1 ;логический сдвиг влево на 1 разряд значения In1 breq tostart ;если In1 = 0, переход на метку tostart rjmp oneop ;в противном случае на метку oneop ;-------------------------------------------------------- ;подпрограмма временной задержки ; содержимое регистров r16 (младшая часть) и r17 (старшая часть) содержат множитель ;временной задержки wait: cpi r16,0 ;сравнить содержимое r16 с 0 breq wait1 ;переход на метку wait1 если 0 rcall wait100us ;вызов подпрограммы "задержка на 100 мкС" dec r16 ;вычесть единицу из содержимого регистра r16 rjmp wait ;перейти в начало п/п wait1: cpi r17,0 ;сравнить содержимое r16 с 0 breq waitend ;переход на метку waitend если 0 dec r16 ;вычесть единицу из содержимого регистра r16 dec r17 ;вычесть единицу из содержимого регистра r17 rjmp wait ;перейти в начало п/п waitend: ret ;возврат в основную программу ;--------------------------------------------- ; подпрограмма формирования временной задержки длительностью 100 мкС .equ CLK=4000000 ;присвоить переменной CLK значение тактовой частоты 4МГц wait100us: push r16 ;поместить r16 в стек ldi r16,((CLK/10000-16)/4) ; загрузить в регистр r16 коэффициент пересчёта ;тактовой частоты микроконтроллера в частоту 10 кГц ( период 100 мкС) ;с учётом времени выполнения цикла wait100us1 wait100us1: nop ;"нет операции" задержка счета на 1 цикл тактовой частоты dec r16 ;вычесть единицу из содержимого регистра r16 brne wait100us1 ;перейти на wait100us1если содержимое r16 не равно 0 pop r16 ;загрузить из стека регистр r16 ret ;выход из подпрограммы" После компиляции и загрузки программы в Flash память микроконтроллера на линейке светодиодных индикаторов наблюдается заданная информационная последовательность с частотой смены состояний порядка 0,5 сек Выводы: В ходе выполнения лабораторной работы получены навыки программирования порта ввода/вывода общего назначения и разработки программы временной задержки без применения периферийных устройств микроконтроллера. подробное описание составления алгоритма на asmAVR здесь |
|
Здравствуйте на этой странице сайта мы посвящаем описание настройки прошивок для микроконтроллеров Atmega. Ниже приведены необходимые мероприяти для программирования в среде AVR. -http://trol.0fees.net/links.php |
|
RESERVED - как следует из названия, этот бит зарезервирован для каких-то неизвестных простым смертным целей фирмой Atmel. Ни при каких условиях не рекомендуется менять его состояние (т.е. надо оставлять его таким, как он установлен при изготовлении МК). В этой строке встречаются биты с другими названиями, как правило, это биты включения режима совместимости с устаревшими типами МК, на смену которым выпущены новые. Обычно в конце названия такого fuse-бита имеется символ С - от COMPATIBLE (совместимый).
OCDEN - бит, разрешающий работу схемы внутрикристалльного отладчика (On Chip Debug ENable). Никогда не оставляйте установленным этот бит в коммерческих продуктах! Иначе не гарантируется сохранность вашей интеллектуальной собственности! JTAGEN - бит, разрешающий работу интерфейса программирования JTAG. По сравнению с SPI-интерфейсом, JTAG обладает расширенными возможностями. Не рекомендуется без необходимости оставлять этот бит установленным, т.к. в этом случае потребляемый МК ток возрастает. SELFPRGEN - бит, разрешающей программе МК производить запись в память программ, т.е. производить самопрограммирование. DWEN - бит, разрешающий работу DebugWire - однопроводного отладочного интерфейса. Не рекомендуется оставлять его установленным в коммерческих изделиях по причинам, изложенным выше. EESAVE - бит, после установки которого при стирании памяти МК содержимое EEPROM данных будет сохраняться нетронутым, т.е. не будет стерто. SPIEN - бит, разрешающий работу интерфейса внутрисхемного программирования МК по SPI. Этот бит может быть легко переустановлен при помощи параллельного программатора (или JTAG, если таковой разрешен и имеется в МК). Все МК выпускаются с установленным битом SPIEN, снять его по интерфейсу SPI невозможно. WDTON - бит, после установки которого сторожевой таймер WDT включается сразу после подачи питания и не может быть отключен программно. Если бит не установлен, то включением и отключением WDT можно управлять программно. Группа битов BODLEVEL. Может быть либо один такой бит, либо несколько, тогда они нумеруются, начиная с нуля. Значение этих битов определяет порог срабатывания схемы BOD - детектора уровня питающего напряжения. BODEN - бит, включающий схему аппаратного детектора недопустимого уровня питающего напряжения, т.е. схему BOD. RSTDISBL - бит, отключающий сигнал внешнего сброса от вывода микроконтроллера и подключающий к нему схему порта ввода-вывода. Этот бит имеется только в тех МК, у которых вывод аппаратного сброса совмещен с одинм из портов ввода-вывода. Это бит, ошибочная установка которого может лишить вас возможности программирвоать МК по SPI, т.к. наличие сигнала сброса - обязательное условие включения режима программирования микроконтроллера. По возможности не устанавливайте этот бит, если намерены продолжать работать с МК при помощи последовательных программаторов. Переустановка этого бита возможна только при помощи параллельного программатора (или выскоквольтного последовательного программатора для некоторых моделей). CKDIV8 - бит, включающий предварительное деление частоты кварцевого (или иного имеющегося) тактового генератора на 8. То есть при включенном этом бите и применении кварцевого резонатора на 8 МГц реальная тактовая частота МК составит 1 МГц. CKOUT - бит, разрешающий вывод тактовой частоты на один из выводов МК (для тактирования других устройств). SUT1 и SUT0 - биты, управляющие режимом запуска тактовых генераторов МК. Связаны с нижеописываемыми битами, определяющими тип и частоту тактового генератора, причем связь весьма хитрая и запутанная. При ошибочной их установки возможны ситуации неустойчивого запуска генератора или неодногратного сброса МК в процессе подачи на него питания. CKOPT - бит, определяющий режим работы встроенного генератора тактовой частоты для работы с кварцевыми резонаторами. Реально изменяет коэффициент усиления встроенного инвертора в схеме генератора. Ошибочная установка может приводить к неустойчивому запуску кварцевого генератора, вплоть до возбуждения его не на той гармонике, что надо (в моей практике был случай, когда из-за этого бита кварц запускался или только при питании МК напряжением не выше 3,6В, или только после прикосновения к выводу XTAL1 пинцетом) Группа битов CKSEL0...CKSEL3 - биты, комбинация которых определяет тип и частоту работающего тактового генератора. Всего возможно до 16 комбинаций, однако не все определены для всех типов МК. Ошибочная установка комбинации этих битов может сделать МК "мертвым" - он не будет работать в схеме и не будет обнаруживаться последовательными программаторами - это вторая наиболее частая беда начинающих. |
|
Удобная программа призванная облегчить жизнь радиолюбителям работающим с микроконтроллерами AVR. Позволяет проводить расчет параметров UART. Упростить работу с 8 и 16 разрядными таймерами в разных режимах. Помогает наладить работу с TWI (I2C), указать параметры сторожевого таймера и многое другое. 1.Baud Rate Calculator Расчет параметров UART. 2. Timer Calculator Работа с 8 и 16 разрядными таймерами в разных режимах. 3.TWI Calculator Работа с TWI (I2C) 4.Watchdog Calculator Параметры сторожевого таймера 5.FMUL Calculator 6.32-bit Number Calculator 7.ASCII Calculator Арифметика с вещественными числами, преобразования и т.д. сылка |
|
Лекции по основам построения трансляторов
Упрощенная модель компиляторов. Транслятор. Интерпритатор Модель Компилятора. Лексический блок. Генератор кода Основные понятия Грамматика Классификация грамматик по Хомскому Синтенциальные формы Синтаксические деревья Задача грамматического разбора Восходящий и низходящий грамматический разбор Построение лексического блока Регулярные грамматики и конечные автоматы Проэктирование лексического сканера Автоматы с магазинной памятью Обработка цепочки с помощью магазинного автомата Трансляция цепочек с помощью МП-автомата Низходящий грамматический разбор с возвратами Низходящий грамматический разбор с помощью МП-автоматов S-грамматики Процедура разпознавания предложений S-грамматики Q-грамматики Множество выбора правила Q-грамматики LL(1) грамматика Множество выбора LL1 грамматики Транслирующая грамматика. Грамматика цепочного перевода Атрибутные транслирующие грамматики Наследуемые и синтезируемые атрибуты Примеры атрибутных транслирующих грамматик L-атрибутные грамматики Правила вычисления атрибутов Атрибутный магазинный автомат Основные конфигурации автоматов Трансляция оператора присваивания Трансляция условного оператора Грамматика для логического выражения Трансляция оператора цикла Постоение множества выбора. Определение аннулирующих нетерминалов и правил Построение отношения "Начинается прямо с" Вычисления отношения "Начинается с" Построение отношения "Прямо перед" Построение отношения "Прямо на конце" Вычисления отношения "на конце" Вычисления отношения "перед" Расширение отношения "перед" включением концевого маркера Вычисление множества След и множества выбора Восходящй грамматический разбор. Распознание методом "перенос-опознание" Управление автоматом типа "перенос-опознание" Принцип переноса Правила построения управляющей таблицы Безсуффиксные ПО грамматики Принцип свёртывания Грамматика слабого предшествования. Принцип вталкивания Простые грамматики смешанной стратегии предшествования (простые ССП грамматики) |

















