Разработать систему, обеспечивающую прием данных с микросхемы КР1446ПМ1, вычисление текущей мощности (интервале в 1с), и интегрального значения мощности в виде 32-разрядного числа. При переполнении памяти вывести световое предупреждение. Разработать программу на языке Ассемблер для системы
Заказать уникальную курсовую работу- 26 26 страниц
- 0 + 0 источников
- Добавлена 10.06.2018
- Содержание
- Часть работы
- Список литературы
- Вопросы/Ответы
1 Задание 3
2 Принципиальная электрическая схема системы с описанием 4
3 Общее описание модулей программы 7
3.1 Блок схема работы главного модуля программы 9
3.2 Блок схема работы вспомогательных модулей 11
4 Карта памяти с указанием физического адресов областей программы, стека, переменных 15
4.1 Карта памяти программ 15
4.2 Карта памяти данных 16
5 Распечатка главного модуля с комментариями 19
6 Список использованных источников 23
7 Приложение 1. Листинг программы 24
Если в дальнейшем при отладке или доработке программы потребуется внести в них изменения, это значительно сократит затраченное программистом время и позволит избежать лишних ошибок. Выносим значение уставки таймера Т0 и его максимально количество циклов в начало программы..equN0=178.equN=100Объявляем, что последующие действия будут проводиться в кодовом сегменте.csegРазмещаем безусловный переход на начало основного модуля программы по адресу вектора сброса ($00000).org 0rjmpresetРазмещаем безусловный переход на начало модуля обработчика по адресу вектора прерывания по переполнению таймера Т0 ($00009).org 0x09rjmpT0_overflowНачало главный модуля программыreset:Выполняем инициализацию стекаldir16,$5foutspl,r16ldir16,$04outsph,r16Общение контроллера с «внешним миром» производится через порт D. Измерительная последовательность импульсов вводится в контроллер через PD5. Конфигурируем его на ввод. Единицей в соответствующем бите регистра PORTD подключаем резистор подтяжки к линии питания. Управление светодиодом производится низким уровнем на линии порта PD3.Конфигурируем его на вывод.Единицей в соответствующем бите регистра PORTDзадаем начальное состояние высокого уровня.ldir16,0x08outDDRD,r16ldir16,0x28outPORTD,r16По умолчанию в ATmega8 после сброса активен аналоговый компаратор. Мы не используем его в работе системы. Отключаем.ldir16,0x80outACSR,r16Выполняем инициализацию таймера Т0 (коэффициент пересчета предделителя).ldir16,0x05outTCCR0,r16Загружаем начальное значение уставки в счетный регистр Т0, производитего запуск.ldir16,N0outTCNT0,r16Выполняем инициализацию таймера Т1 (включена схема подавления помех, тактирование осуществляется по спадающему фронту импульса на входе Т1, обнуление счетного регистра).ldir16,0x86outTCCR1B,r16 clrr16outTCCR1A,r16outTCNT1H,r16outTCNT1L,r16Маскирование прерывания по переполнению таймера Т0.ldir16,0x01outTIMSK,r16СбросPинт.clrr19clrr20clrr21clrr22СбросPтек.clrr23clrr24Сброс счетчика циклов таймера Т0N.clrr25Общее разрешение прерываний.seiНачало бесконечного цикла.loop:rjmploopМодуль обработки прерывания по переполнению Т0T0_overflow:Общий запрет прерываний.cliСохранение в стеке регистра r16.pushR16Сохранение в стеке регистра SREG.inr16,SREGpushr16Загрузка начального значения уставки в счетный регистр Т0.ldir16,N0outTCNT0,r16Инкремент счетчика циклов таймера Т0 N.incr25Проверка N = Nмакс? Если не равно, переход на метку m1.cpir25,Nbrnem1Сброс счетчика циклов таймера Т0.N = 0.clrr25Содержимое счетчика Т1 копируем в переменную текущего значения мощности (чтение младший байт, старший байт);Ртек = Т1.inr23,TCNT1Linr24,TCNT1HСброс счетчика Т1 (запись старший байт, младший байт);Т1=0.clrr16outTCNT1H,r16outTCNT1L,r16Сложение Pинт = Ринт + Ртек.clrr16addr19,r23adcr20,r24adcr21,r17adcr22,r17Если переполнение разрядности переменной Pинт, то включить светодтод.brccm1cbiPORTD,3m1:Восстановление из стека регистра SREG.popr16outSREG,r16Восстановление из стека регистра r16.popr16Общее разрешение прерываний.seiВыход из модуля обработки прерывания.reti6 Список использованных источников1. Евстифеев А.В. Микроконтроллеры AVR семейства Mega. Руководство пользователя. — М.: Издательский дом «Додэка-ХХ1», 2007. — 592 с: ил. (Серия «Программируемые системы»).2. Мортон Дж. микроконтроллеры AVR. Вводный курс. / Пер. с англ. - М.: «Додэка-ХХ1», 2006-272 с.3. Предко М. Руководство по микроконтроллерам: В 2 т./М. Предко; Пер. с англ. Под ред. И. Шагурина, С.Б. Лужанского.- М.: Постмаркет, 2001-.-(Библиотека современной электроники). Т. 1, 2001.- 415 с: ил.4. Трамперт В. AVR-RISC микроконтроллеры. / Пер. с нем.-К.: «МК-Пресс»,2006.-464с.5. Ревич Ю.В. Практическое программирование микроконтроллеров AtmelAVR. на языке Ассемблера. — 2-е изд., испр. — СПб.: БХВ-Петербург, 2011. — 352с:6. Белов А.В. Самоучитель разработчика устройств на микроконтроллерах AVR. - СПб.: Наука и техника, 2008.- 544 с.7. Баранов В.Н. Применение микроконтроллеров AVR: Схемы, алгоритмы. Программы / В.Н. Баранов; Фирма "Atmel".-М.: Додэка: Додэка- XXI, 2004.-(Мировая электроника).- 287 с: ил.8. http://kazus.ru/modules/Guide/chips/kr1446pm1.pdf9. http://www.alldatasheet.com/datasheet-pdf/pdf/80247/ATMEL/ATMEGA8.html10. http://www.alldatasheet.com/datasheet-pdf/pdf/43368/SHARP/PC817.html7 Приложение 1. Листинг программы .include "m8def.inc".equN0=178 .equN=100 .cseg .org 0000000 c009 rjmpreset .org 0x09000009 c01f rjmpT0_overflow;Главный модуль программыreset: ;Инициализация стека00000a e50f ldir16,$5f00000b bf0d outspl,r1600000c e004 ldir16,$0400000d bf0e outsph,r16;Инициализация порта D (бит PD3 на вывод, PD3=1)00000e e008 ldir16,0x0800000f bb01 outDDRD,r16000010 e208 ldir16,0x28000011 bb02 outPORTD,r16;Отключение аналогового компаратора 000012 e800 ldir16,0x80000013 b908 outACSR,r16 ;Инициализация и запуск таймера Т0000014 e005 ldir16,0x05000015 bf03 outTCCR0,r16;Загрузка начального значения в Т0000016 eb02 ldir16,N0000017 bf02 outTCNT0,r16;Инициализация таймера 1000018 e806 ldir16,0x86000019 bd0e outTCCR1B,r1600001a 2700 clrr1600001b bd0f outTCCR1A,r1600001c bd0d outTCNT1H,r1600001d bd0c outTCNT1L,r16 ;Маскирование прерывания00001e e001 ldir16,0x0100001f bf09 outTIMSK,r16;СбросPинт000020 2733 clrr19000021 2744 clrr20000022 2755 clrr21000023 2766 clrr22;СбросPтек000024 2777 clrr23000025 2788 clrr24;СброссчетчикаN000026 2799 clrr25;разрешение прерываний000027 9478 sei ;Начало бесконечного циклаloop:000028 cfffrjmploop ;Обработка прерывания по переполнению Т0 T0_overflow:000029 94f8 cli;запрет прерываний00002a 930f pushR16;сохранение регистра r16 ;сохранение регистра SREG00002b b70f inr16,SREG00002c 930f pushr16 ;Загрузка начального значения в Т000002deb02 ldir16,N000002ebf02 outTCNT0,r1600002f 9593 incr25;инкремент счетчика N;N = 100?000030 3694 cpir25,N000031 f469 brnem1;N = 0000032 2799 clrr25;Ртек = Т1000033 b57c inr23,TCNT1L000034 b58d inr24,TCNT1H;Т1=0000035 2700 clrr16000036 bd0d outTCNT1H,r16000037 bd0c outTCNT1L,r16;Pинт = Ринт + Ртек000038 2700 clrr16000039 0f37 addr19,r2300003a 1f48 adcr20,r2400003b 1f51 adcr21,r1700003c 1f61 adcr22,r17;Если переполнение, то включить светодиод00003df408 brccm100003e 9893 cbiPORTD,3m1: ;восстановление регистра SREG00003f 910fpopr16000040 bf0foutSREG,r16000041 910f popr16;Восстановление регистра r16000042 9478 sei;разрешение прерываний000043 9518 reti;Выход из п/п обработки прерывания
2. Мортон Дж. микроконтроллеры AVR. Вводный курс. / Пер. с англ. - М.: «Додэка-ХХ1», 2006-272 с.
3. Предко М. Руководство по микроконтроллерам: В 2 т./М. Предко; Пер. с англ. Под ред. И. Шагурина, С.Б. Лужанского.- М.: Постмаркет, 2001-.-(Библиотека современной электроники). Т. 1, 2001.- 415 с: ил.
4. Трамперт В. AVR-RISC микроконтроллеры. / Пер. с нем.-К.: «МК-Пресс»,2006.-464с.
5. Ревич Ю.В. Практическое программирование микроконтроллеров Atmel AVR. на языке Ассемблера. — 2-е изд., испр. — СПб.: БХВ-Петербург, 2011. — 352с:
6. Белов А.В. Самоучитель разработчика устройств на микроконтроллерах AVR. - СПб.: Наука и техника, 2008.- 544 с.
7. Баранов В.Н. Применение микроконтроллеров AVR: Схемы, алгоритмы. Программы / В.Н. Баранов; Фирма "Atmel".-М.: Додэка: Додэка- XXI, 2004.-(Мировая электроника).- 287 с: ил.
8. http://kazus.ru/modules/Guide/chips/kr1446pm1.pdf
9. http://www.alldatasheet.com/datasheet-pdf/pdf/80247/ATMEL/ATMEGA8.html
10. http://www.alldatasheet.com/datasheet-pdf/pdf/43368/SHARP/PC817.html
Вопрос-ответ:
Какой функционал предоставляет система?
Система обеспечивает прием данных с микросхемы КР1446ПМ1, вычисление текущей мощности в заданном интервале в 1 секунду, расчет интегрального значения мощности в виде 32-разрядного числа. При переполнении памяти система выводит световое предупреждение.
Какие данные принимает система?
Система принимает данные с микросхемы КР1446ПМ1. Входные данные могут быть представлены в виде аналогового сигнала или цифрового сигнала.
Каким образом вычисляется текущая мощность в системе?
Текущая мощность вычисляется на основе данных, полученных с микросхемы КР1446ПМ1. В программе на языке Ассемблер реализован алгоритм, который выполняет вычисление текущей мощности в заданном интервале в 1 секунду.
Как выполняется расчет интегрального значения мощности?
Расчет интегрального значения мощности осуществляется путем накопления и суммирования текущей мощности в течение определенного времени. Результаты суммирования записываются в виде 32-разрядного числа. В программе на языке Ассемблер реализован соответствующий алгоритм.
Что происходит при переполнении памяти системы?
При переполнении памяти система выводит световое предупреждение. Это позволяет оператору обратить внимание на проблему и принять соответствующие меры, такие как сохранение данных и освобождение памяти.
Какой функционал предоставляет система для приема данных с микросхемы КР1446ПМ1?
Система обеспечивает прием данных с микросхемы КР1446ПМ1 и вычисление текущей мощности в заданном интервале в 1 секунду.
Какие данные система вычисляет и сохраняет?
Система вычисляет текущую мощность в заданном интервале в 1 секунду и сохраняет ее в виде 32-разрядного числа. Также система вычисляет интегральное значение мощности.
Что происходит, если память системы переполняется?
Если память системы переполняется, то система выведет световое предупреждение, которое сигнализирует о переполнении памяти.
Какая программа необходима для разработки системы?
Для разработки системы необходима программа на языке Ассемблер.