Главная              Рефераты - Производство

Микропроцессорный измерительный преобразователь биоэлектрических сигналов - курсовая работа

Федеральное агентство по образованию

Рязанский государственный радиотехнический университет

Кафедра ИИБМТ

Курсовая работа по дисциплине:

«Микропроцессоры и микро-ЭВМ

в медико-биологических исследованиях»

на тему:

«Микропроцессорный измерительный преобразователь биоэлектрических сигналов»

Выполнил:

Проверил:

Рязань 2008

Содержание

Введение……………………………………………………………….4

Теоретическая часть…………………………………………………..6

1. Алгоритм программы………………………………………….

2. Структурная схема……………………………………………..8

3. Функциональная схема………………………………………...9

4. Принципиальная схема………………………………………...14

5. Аналитическое описание алгоритма вычислений……………16

6. Алгоритм……………………………………………………… 20

7. Описание форматов регистров специальных функций………21

8. Программа ………………………………………………………23

9. Отладка системы в целом………………………………………28

Заключение……………………………………………………………..32

Список литературы…………………………………………………….33

Приложения…………………………………………………………….34

ВВЕДЕНИЕ

Роль и место микропроцессоров в медико-биологической практике

Микропроцессор (МП) играет такую же роль в вычислительной технике, а в частности в медико-биологических исследованиях, как и центральный процессор ЭВМ. Высокая серийность и надежность МП при малых габаритных размерах и низ­кой стоимости аппаратуры, разработанной на их основе, делает возможным их широкое распространение в медицинских приборах и системах.

На основе МП могут быть построены вычислительные и управ­ляющие устройства, позволяющие автоматизировать практически все процессы в медицине:

- прием больного на учет в поликлинике и выделение места в больнице;

- ведение истории болезни;

- обра­ботка данных осмотра и опроса больного;

- проведение функци­ональной диагностики и клинико-лабораторного анализа;

- контроль за состоянием больных и их лечением.

Среди многочисленных применений МП в медицинских прибо­рах и системах можно выделить два основных направления, ока­завшихся наиболее плодотворными.

Первое направление заключается в усовершенствовании меди­цинских диагностических приборов с целью уменьшения объема рутинных операций и упрощения взаимодействия с прибором не­квалифицированного персонала. Для этого в приборах автомати­зируется функции управления, улучшается формы представления выходных данных за счет применения отображения текста и гра­фиков на дисплее прибора, осуществляется контроль корректно­сти ввода данных и обеспечивается самоконтроль неисправностей. Это направление затронуло практически все виды медицинских диагностических приборов.

Второе направление связано с автоматизацией сбора, обработ­и, передачи и анализа биологических сигналов. Автоматический анализ биологических сигналов находит применение в клиничес­кой медицине для функциональной диагностики и автоматизиро­ванного наблюдения за больными, профилактической медицине при профосмотрах и массовых обследованиях населения, авиакосмической и спортивной медицине для контроля состояния человек,находящегося в экстремальных условиях, и т. П.

Большинство медицинских сигналов по своей природе являются непрерывными (аналоговыми). Широкое применение цифровых устройств и компьютеров для обработки медико-биологических сигналов невозможно без применения устройств преобразования аналоговых сигналов в цифровые, то есть без преобразователей биоэлектрических сигналов.

Измерительный преобразователь биоэлектрических сигналов используется для регистрации физиологических параметров пациента и передачи их в ПК для последующей реализации методик лечения по методу биологической обратной связи (БОС) в центрах реабилитации и профилактики, в учебных заведениях. Диапазоны измерения: ЧСС от 20 до 200 1/мин, погрешность 1 1/мин; ЧД от 10 до 120 1/мин, погрешность 1 1/мин; сопротивления кожного покрова от 10 до 500 кОм, погрешность 5%; температуры от 34 до 400 С, погрешность 0,10 С.

Архитектура микроконтроллера AduC 816

AduC816 является законченным препроцессором интеллектуального датчика (преобразователя), включающим в себя: два сигма-дельта АЦП высокого разрешения, 8-разрядное микропроцессорное устройство управления, встроенную неразрушаемую FLASH/EE память программ/данных. Это малопотребляющее устройство принимает сигналы низкого уровня непосредственно с первичного преобразователя.

Кроме двух независимых АЦП (основного и дополнительного ) в составе имеется датчик температуры и усилитель PGA, что позволяет выполнять прямые измерения сигналов низкого уровня. АЦП с встроенным цифровым фильтром предназначены для измерения низкочастотных сигналов в широком динамическом диапазоне таких, как сигналы с устройств взвешивания, тензометров или сигналы с температурных датчиков. Частота (поток) данных на выходе АЦП программируется, и его выходное разрешение будет меняться в зависимости от установленных усиления и частоты.

Устройство работает с кварцем 32 Кгц, а встроенная система ФАПЧ образует требуемую частоту 12.58 МГц. Эта частота подаётся на программируемый делитель, на выходе которого и образуется рабочая тактовая частота ядра. Ядро представляет собой микроконтроллер 8052, поэтому система команд совместима с набором 8051. машинный цикл ядра состоит из 12 циклов рабочей тактовой частоты. На кристалле содержится 8Кб неразрушаемой FLASH/EE памяти программ, 640 байт FLASH/EE памяти данных и 256 байт оперативной памяти данных с произвольным доступом (RAM).

В составе AduC816 имеются дополнительные аналоговые элементы: 12-разрядный ЦАП, источники тока, монитор источника питания. Встроенная цифровая периферия кристалла включает в себя: сторожевой таймер, счётчик временного интервала, три таймера/счётчика и последовательные порты. Заводское ПЗУ поддерживает режимы последовательной загрузки и отладки (через UART). Устройство работает от источника питания от +3В до +5В.

Подробная блок-схема AduC816 показана на рис. 1.

Структурная схема


X – измеряемая величина

Y – выходная величина

Блок предварительной обработки производит усиление, фильтрацию и аналого-цифровое преобразование сигнала. Цифровой сигнал поступает в общую магистраль, связанную с МПС и внеш­ними устройствами. Микропроцессорная система осуществляет обработку цифрового сигнала, сравнение его с пороговыми величинами и отображение результатов обработки посредством периферийных устройств.

Функциональная схема

Схема преобразователя, разрабатываемая в данной курсовой работе, носит название 4-проводного подключения. Она включает в себя основной сигма-дельта АЦП, предназначенный для преобразования сигналов первичных датчиков.

Сигма-дельта АЦП являются преобразователями интегрирующего типа. Основным принципом их работы является усреднение результатов измерения на большом интервале времени для уменьшения погрешности, вносимой шумами, и увеличения разрешающей способности.

В составе AduC816 имеются так же два одинаковых источника постоянного тока 200мА. Они оба подают ток с AVDD на вывод #3 (IEXC1) или вывод #4(IEXC2). Источники тока программируемы и их можно сконфигурировать как отдельные токи по 200мкА на оба вывода микросхемы, либо объединить в один ток 400 мкА и подать на любой из выводов. Эти токи можно использовать для возбуждения внешнего резистивного моста либо резистивного датчика температуры.

Основной АЦП имеет четыре связанных с ним входных вывода, обозначаемых как AIN1-AIN4, которые можно сконфигурировать как два полных дифференциальных канала. Схема для выполнения аналогового измерения, в данном случае - интерфейс к термопреобразователю сопротивления (ТС), использует два вывода AIN1 и AIN2. Внешнее дифференциальное опорное напряжение создаётся током, протекающим через резистор R1. Этот же ток протекает непосредственно через ТС, на котором создаётся дифференциальное напряжение, пропорциональное температуре. Это дифференциальное напряжение подаётся непосредственно на положительный и отрицательный входы основного АЦП (AIN1 и AIN2 соответственно). Второй внешний резистор,R2, используется для гарантии того, чтобы абсолютная величина аналогового напряжения на отрицательном входе не стала ниже предельного значения, специфицированного для AduC816, т.е., AGND+100мВ.

Вход канала можно программировать на один из восьми диапазонов входных сигналов от ±20мВ до ±2.56В.

Аналоговые входы AduC816 могут принимать однополярные (униполярные) либо биполярные входные сигналы. Наличие диапазонов для обработки биполярных сигналов не означает подачу на вход отрицательного напряжения относительно системной земли AGND. Однополярные и биполярные сигналы на входе AIN(+) основного АЦП являются таковыми только по отношению к напряжению (относительно) на входе AIN(-). Например, если на входе AIN(-) присутствует напряжение 2.5 В, а АЦП сконфигурирован для работы с однополярным напряжением, в диапазоне 0мВ-+20мВ, то допустимый диапазон напряжений на входе AIN(+) составит 2.5-2.52. Если на входе AIN(-) присутствует напряжение 2.5В, и AduC816 сконфигурирован для работы с напряжением в диапазоне ±1.28В, то допустимый диапазон напряжений на входе AIN(+) составит 1.22-3.78В, т.е. 2.5В±1.28В.

Входной мультиплексор подключает выбранный входной канал к внутреннему буферному усилителю. Буферный усилитель – каскад с высоким входным импедансом. Это означает, что устройство может работать с источниками сигнала значительного импеданса на аналоговом входе и, если потребуется, непосредственно на этом входе может выполняться RC-фильтрация для уменьшения шумов и наводок.

Выход буфера АЦП подаёт на встроенный усилитель с программируемым коэффициентом усиления PGA. Диапазон усиления PGA может быть запрограммирован на восемь поддиапазонов однополярных и биполярных входных сигналов. Диапазон PGA устанавливается с помощью бит выбора диапазона в регистре управления основным АЦП ADC0CONSFR. При установленном бите внешнего источника опорного напряжения и его величине VREF =2.5В поддиапазонами входного однополярного напряжения будут: 0мВ-+20мВ, 0мВ-+40мВ, 0мВ-+80мВ, 0мВ-+160мВ, 0мВ-+320мВ, 0мВ-+640мВ, 0В-+1.28В, 0В-+2.56В. Поддиапазоны для биполярных сигналов:±20мВ, ±40мВ, ±80мВ, ±160мВ, ±320мВ, ±640мВ, ±1.28В, ±2.56В. Данные поддиапазоны напряжений являются номинальными, которые должны присутствовать на входе PGA.

Сигма-дельта АЦП обычно состоит из двух основных блоков: аналогового модулятора и цифрового фильтра. Сигма-дельта модулятор даёт поток 1-битных данных (со стабилизирующим прерыванием) на цифровой фильтр. Скважность импульсов в потоке несёт информацию о входном преобразуемом напряжении. Фильтр AduC816 представляет собой низкочастотный фильтр с функцией передачи вида SINC3 или (sinx/x)3, основной задачей которого является подавление шумов квантования, порождаемых модулятором. Поток данных (частота преобразования) и полоса фильтра программируются через регистр фильтра SF.

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

В результате, в каждом АЦП содержится оконечный суммирующий каскад с тем, чтобы каждое последующее выходное слово с фильтра суммировалось и усреднялось с предыдущим для получения корректного результата, который и будет записан в SFR данных АЦП.

Прежде чем стать результатом преобразования выходное слово с цифрового фильтра предварительно нормируется на калибровочные коэффициенты.

После аналого-цифрового преобразования сигнал сохраняется в энергонезависимой FLASH/EE памяти. Микроконтроллер осуществляет обработку этого сигнала и результат выводит на внутренний 12-битный ЦАП с выходом в виде напряжения. ЦАП имеет на выходе буферный усилитель напряжения с размахом сигнала от –питания-до-питания, способный управлять нагрузкой 10Ком/100пФ.

8Кбайт FLASH/EE памяти программ располагаются в младших 8К байтах из наличных 64К байтов адресуемой памяти программ, и используются для размещения пользовательского кода типовых приложений. Массив памяти программ можно программировать путём последовательной загрузки через стандартный последовательный порт UART. Если загрузка кода производится с PC, то эта возможность реализуется путём подключения к UARTAduC816 с использованием ИС согласования уровней с RS-232.

В дополнение к подключению через UART пользователь должен иметь средство установить устройство в режим загрузки. Таким средством является подключённый на землю резистор 1Ком, который можно перемычкой соединять с выводом PSEN/. Для установки AduC816 в режим загрузки, необходимо только замкнуть перемычку и «щёлкнуть» питанием(или, если есть ручной сброс, нажать кнопку ручного сброса) и устройство будет готово принять последовательно новую программу. Если перемычку удалить, то устройство возвратится в режим обычной работы, как только выполнится «щелчок» питанием или подастся сигнал RESET.

Принципиальная схема

Для управления входом RESETAduC816 используется внешняя схема управления по выработке сброса при включении питания (POR– poweronreset). Схема должна удерживать контакт RESET в высоком состоянии до тех пор, пока источник питания (DVDD ) имеет напряжение ниже 2.5В. Более того, VDD должно оставаться выше 2.5В в течение, по крайней мере 10мс, до снятия сигнала RESET, в течение этого времени напряжение источника питания должно установиться на уровне не менее 2.7В. внешняя схема PORдолжна оставаться работоспособной до напряжения питания 1.2В или менее.

Указанным выше требованиям удовлетворяет специально разработанная для этой цели ИС PORADM810 с высоким активным уровнем в корпусе SOT-23 от AnalogDevices.

Номинальная частота микроконтроллера 8051 – 12.58 МГц. Тактовая частота для AduC816 получается с помощью встроенной системы ФАПЧ, умножающей частоту 32768КГц в 384 раза. Данная частота создаётся внутренним генератором. Для запуска внутреннего генератора необходимо установить кварцевый резонатор 32768КГц между выводами XTAL1 и XTAL2. Для случая типового подключения кристалла уже имеются два внутренних конденсатора по 12 пФ. Вследствие этого во многих случаях дополнительных внешних конденсаторов не требуется.

Возможность загрузки кода с РС реализуется путём подключения к UARTAduC816 ИС ADM202.

AVDD =+2.7B до +3.6B или +4.75В до +5.25 Вж

DVDD =+2.7В до +3.6В или +4.75В до +5.25В;

REFIN(+)=+2.5B; REFIN(-)=AGND;

AGND=DGND=0B;

Аналитическое описание алгоритма вычислений

Имитационное моделирование стохастических систем основано на реализации алгоритмов, воспроизводящих процесс функционирования системы во времени. При этом имитируются элементарные явления, составляющие процесс. Как правило, эти явления носят случайный характер, что и определяет необходимость получения случайных чисел. При этом имеется в виду два основных аспекта имитационного моделирования с применением вычислительных машин :

- необходимость генерирования с помощью специальных программных средств равномерно распределенных псевдослучайных чисел;

-использование этих случайных чисел для программной генерации случайных величин с требуемыми параметрами и характеристиками.

Базовым генератором для получения последовательностей случайных чисел, является генератор равномерно распределенной случайной величины на интервале (0,1). Такая непрерывная случайная величина Х имеет функцию распределения

и функцию плотности распределения вероятности

Датчик случайных чисел, основанный на использовании алгоритма Лемера, является частным случаем линейного метода (наиболее широко применяемый в настоящее время программный генератор равномерно распределенных чисел):

где , а также получаемые случайные числа являются целыми числами. Образование равномерно распределенных чисел на интервале (0,1) реализуется с помощью выражения

и полагая, что получаем

В алгоритме Лемера задаются два соответствующим образом подобранных целых числа: множитель a и модуль m. Последовательность случайных чисел вычисляется следующим образом.

1) Число известно с предыдущего шага. Вычисляется произведение .

2) Число делится на m. Получается целое число и целочисленный остаток , что можно представить в виде:

3) Так как является числом между 0 и m, то нужно его еще раз разделить на m, чтобы получить число между 0 и 1 , то есть

Последовательность случайных чисел, полученные мультипликативным методом, периодически повторяются.

Наиболее часто встречающимся видом распределения является нормальное распределение. В связи с этим при моделировании различных явлений возникает потребность иметь в распоряжении последовательность случайных чисел, отвечающих нормальному закону распределения с функцией плотности

где m- математическое ожидание,

σ- среднеквадратичное отклонение.

Случайная величина с нормальным распределением N(0,1) может быть реализована с помощью классических общих методов моделирования. Кроме этих методов разработаны специальные методы, позволяющие получать с большой скоростью достаточно длинные последовательности случайных чисел, отвечающих нормальному закону распределения N(µ,σ2 ) с математическим ожиданием m=µ и дисперсией D= σ2 . Реализация выполняется в два этапа:

1) Выполняют реализацию случайной величины с плотностью N(0,1):x1 ,x2 ,…,xn ;

2) При помощи линейного преобразования

получают последовательность случайных чисел, отвечающих распределению N(µ,σ2 ): у12 ,…,уn .

Один из самых известных методов программной реализации нормально распределенной случайной величины основан на центральной теореме: распределение суммы независимых случайных величин приближается к нормальному при неограниченном увеличении n, если выполняются следующие условия:

1) все эти величины имеют конечные математические ожидания и дисперсии;

2) ни одна из величин по своему значению резко не отличается от всех остальных.

Согласно этой теореме можно сконструировать алгоритм реализации случайной величины Х на основе аппроксимации распределения N(0,1) суммой независимых случайных величин R1 ,R2 ,…,Rn , равномерно распределенной на интервале [0,1). Так как каждая из них имеет математическое ожидание M(Ri )=1/2 и дисперсию D(Ri )=1/12, i=1,2,…,n, то

Согласно центральной предельной теореме распределение случайной величины

при достаточно больших n приближается к N(0,1). Практика показывает , что при n=12 аппроксимация уже удовлетворительна. Тогда формула принимает вид :

Алгоритм


Описание форматов SFR

1. Регистр режима таймера/счётчика TMOD:

М1 М0

Биты М1 и М0 определяют режим работы таймера/счётчика:

М1 М0
0 0 Режим 0
0 1 Режим 1
1 0 Режим 2
1 1 Режим 3

В режиме 0 TL0 работает как 5-битный предделитель частоты.

Режим 1 – 16-битный таймер-счётчик. TH0 и TL0 включены последовательно.

Режим 2 – 8-битный автоперезагружаемый таймер/счётчик. TH0 хранит значение, которое должно быть перезагружено в TL0 каждый раз по переполнению.

Режим 3 – таймер/счётчик 1 останавливается. Таймер/счётчик: TL0 работает как 8-битный таймер/счётчик, и его режим определяется управляющими битами таймера 0. TH0 работает только как 8-битный таймер, и его режим определяется управляющими битами таймера 1 .

Установим таймер/счётчик 0 в режим 1: загружаем в регистр TMOD #01H.

2. Регистр масок прерывания IE.

EA ET0

EA (IE.7) – снятие блокировки прерываний. Сбрасывается программно для запрета всех прерываний независимо от состояний IE4 – IE0.

ET0 – бит разрешения прерывания от таймера 1. Установка/сброс программой для разрешения/запрета прерываний.

(IE)=82h.

3. Регистр управления/статуса таймера TCON.

TR0

TR0 – бит управления таймера 0. Устанавливается/сбрасывается программой для пуска/остановки таймера/счётчика.

(TCON)=10H.

4. Таймер/счётчик 0: регистр TL0 – младший байт,

регистр TH0 – старший байт.

Коды, загружаемые в эти регистры, выбираются исходя из частоты дискретизации. Частота дискретизации hд в данной работе принимается равной 100 Гц. Следовательно, прерывания будут происходить через каждые 10 мс.

1000010 =271016.

10000h-2710h=0D8F0h.

Кроме того, необходимо учесть количество импульсов, которое поступит на вход счётчика к моменту записи в него младшего байта (допустим это составит 12мкс) и время, потраченное на переход от запроса прерывания к его обработке, например, 9мкс:

0D8F0H+2110 =0D905h.

(TL0)=05h, (TH0)=0D9h.

Программа генерации числовой последовательности

с нормальным распределением

CSEG AT 00 ;

LJMP INIT ;

ORG 0BH ;

LJMP START ;

DSEG AT 02H ;

X_Y: DS 2 ;

X_A: DS 2 ;

X_M: DS 2 ;

X_SUM: DS 8 ;

X_SCHET: DS 1 ;

X_Z: DS 2 ;

X_SCHETCHIK: DS 1 ;

X_RES: DS 15 ;

MY_PROG SEGMENT CODE ;

RSEG MY_PROG ;

ORG 30H ;

INIT: MOV THO,#0D9H;

MOV TL0,#05H ;

MOV TMOD,#01H ;

MOV IE, #82H ;

SETB TR0 ;

WAIT: SJMP WAIT ;

START: CLR EA ;

SETB RS0 ;

MOV R4, X_Y ;

MOV R5,X_Y+1 ;

CLR RS0 ;

SETB RS1 ;

MOV R0,#14H ;

MAIN: CLR RS1 ;

SETB RS0 ;

MOV A,X_Y ;

MOV B, X_A ;

MUL AB ;

MOV R0, A ;

MOV R1, B ;

MOV A,X_Y ;

MOV B,X_A+1 ;

MUL AB ;

MOV R2,B ;

ADD A,R1 ;

MOV R1,A ;

JNC NC1 ;

CLR C ;

INC R2 ;

NC1: MOV A,X_A ;

MOV B,X_Y+1 ;

MUL AB ;

ADD A,R1 ;

MOV R1,A ;

XCH A,B ;

JNC NC2 ;

CLR C ;

INC R2 ;

NC2: ADD A,R2 ;

MOV R2,A ;

JNC NC3 ;

CLR C ;

INC R3 ;

NC3: MOV A, X_Y+1 ;

MOV B,X_A+1 ;

MUL AB ;

ADD A,R2 ;

MOV R2,A ;

JNC NC4 ;

CLR C ;

INC R3 ;

NC4: MOV A, R3 ;

ADD A,B ;

MOV R3, A ;

CJNE R3,#00,NV1 ;

CJNE R2,#00, NV3 ;

LJMP NV5 ;

NV1: MOV A,R0 ;

CLR C ;

SUBB A,X_M ;

MOV RO,A ;

JNC NV2 ;

CLR C ;

DEC R1 ;

JNC NV2 ;

CLR C ;

DEC R2 ;

JNC NV2 ;

CLR C ;

DEC R3 ;

CJNE R3,#00,NV2 ;

MOV A, R1 ;

SUBB A,X_M+1 ;

MOV R1, A ;

LJMP NV3 ;

NV2: MOV A,R1 ;

SUBB A,X_M+1 ;

MOV R1, A ;

JNC NV1 ;

CLR C ;

DEC R2 ;

JNC NV1 ;

CLR C;

DEC R3 ;

CJNE R3,#00,NV1 ;

NV3: MOV A,R0 ;

SUBB A,X_M ;

MOV R0,A ;

JNC NV4 ;

CLR C ;

DEC R1 ;

JNC NV4 ;

CLR C ;

DEC R2 ;

CJNE R2,#00,NV4 ;

MOV A,R1 ;

SUBB A,X_M+1 ;

MOV R1,A ;

LJMP NV5 ;

NV4: MOV A,R1 ;

SUBB A, X_M+1 ;

MOV R1, A ;

JNC NV3 ;

CLR C ;

DEC R2 ;

CJNE R2,#00,NV3 ;

NV5: MOV A,R0 ;

SUBB A,X_M ;

MOV R0,A ;

JNC NV6 ;

CLR C ;

DEC R1 ;

NV6: MOV A,R1 ;

SUBB A,X_M+1 ;

MOV R1,A ;

JNC NV5 ;

MOV A,R0 ;

CLR C ;

ADD A,X_M ;

MOV R0, A ;

MOV X_Y,A ;

MOV A,R1 ;

ADDC A,X_M+1 ;

MOV R1,A ;

MOV X_Y+1,A ;

CLR C ;

MOV A,R0 ;

ADD A,R4 ;

MOV R4,A ;

JNC NEXT ;

CLR C ;

INC R5 ;

NEXT: MOV A,R1 ;

ADD A,R5 ;

MOV R5,A ;

JNC NV8 ;

CLR C ;

INC R6 ;

NV8: INC R7 ;

CJNE R7,#12,NV11 ;

MOV R7,#00 ;

SETB RS1 ;

CLR RS0 ;

MOV A,X_SUM+4 ;

CLR C ;

SUBB A,R1 ;

MOV @R0,A ;

INC R0 ;

JNC NV9 ;

CLR C ;

DEC X_SUM+5 ;

NV9: MOV A,X_SUM+5 ;

SUBB A,R2 ;

MOV @R0,A ;

INC R0 ;

JNC NV10 ;

CLR C ;

DEC X_SUM+6 ;

NV10: MOV @R0,X_SUM+6 ;

INC R0 ;

MOV X_SUM+4,#00 ;

MOV X_SUM+5,#00 ;

MOV X_SUM+6,#00 ;

INC R3 ;

CJNE R3,#05, NV11 ;

MOV R3, #00 ;

SETB EA ;

LJMP OUT ;

NV11: LJMP MAIN ;

OUT:

END ;

Отладка системы в целом

В курсовой работе для отладки системы я использовал программу ProView.

ProView фирмы Franklin Software Inc. – интегрированная среда разработки программного обеспечения для однокристальных микроконтроллеров семейства Intel 8051 и его клонов. Она включает в себя всё, что нужно для создания, редактирования, компиляции, трансляции, компоновки, загрузки и отладки программ:

·стандартный интерфейс Windows,

·полнофункциональный редактор исходных текстов с выделением синтаксических элементов цветом,

·организатор проекта,

·транслятор с языка C,

·ассемблер,

·отладчик,

·встроенную справочную систему.

Среда разработки подобна Visual C++ Microsoft и Borland C++ для Windows. Пользователи, знакомые с любым из этих изделий, будут чувствовать себя в ProView, как дома.

Первый этап разработки программы – запись её исходного текста на каком-либо языке программирования.

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

После компоновки объектных модулей наступает этап отладки программы, устранения ошибок, оптимизации и тестирования программы.

ProView объединяет все этапы разработки прикладной программы в единый рекурсивный процесс, когда в любой момент времени возможен быстрый возврат к любому предыдущему этапу.

ProView имеет следующие компоненты.

1.Оптимизирующий кросс-компилятор C51

Язык C – универсальный язык программирования, который обеспечивает эффективность кода, элементы структурного программирования и имеет богатый набор операторов. Универсальность, отсутствие ограничений реализации делают язык C удобным и эффективным средством программирования для широкого разнообразия задач. Множество прикладных программ может быть написано легче и эффективнее на языке C, чем на других более специализированных языках.

C51 – полная реализация стандарта ANSI (Американского национального института стандартов), насколько это возможно для архитектуры Intel 8051. C51 генерирует код для всего семейства микроконтроллеров Intel 8051. Транслятор сочетает гибкость программирования на языке C с эффективностью кода и быстродействием ассемблера.

Использование языка высокого уровня C имеет следующие преимущества над программированием на ассемблере:

·глубокого знания системы команд процессора не требуется, элементарное знание архитектуры Intel 8051 желательно, но не необходимо;

·распределение регистров и способы адресации управляются полностью транслятором;

·лучшая читаемость программы, используются ключевые слова и функции, которые более свойственны человеческой мысли;

·время разработки программ и их отладки значительно короче в сравнении с программированием на ассемблере;

·библиотечные файлы содержат много стандартных подпрограмм, которые могут быть включены в прикладную программу;

·существующие программы могут многократно использоваться в новых программах, используя модульные методы программирования.

2.Макроассемблер A51

Ассемблер A51 совместим с ASM51 Intel для всего семейства микроконтроллеров Intel 8051. Ассемблер транслирует символическую мнемонику в перемещаемый объектный код, имеющий высокое быстродействие и малый размер. Макросредства ускоряют разработку и экономят время, поскольку общие последовательности могут быть разработаны только один раз. Ассемблер поддерживает символический доступ ко всем элементам микроконтроллера и перестраивает конфигурацию для каждой разновидности Intel 8051.

A51 транслирует исходный файл ассемблера в перемещаемый объектный модуль. При отладке или при включенной опции “Includedebugginginformation” этот объектный файл будет содержать полную символическую информацию для отладчика/имитатора или внутрисхемного эмулятора.

3.Компоновщик L51

Компоновщик объединяет один или несколько объектных модулей в одну исполняемую программу. Компоновщик размещает внешние и общие ссылки, назначает абсолютные адреса перемещаемым сегментам программ. Он может обрабатывать объектные модули, созданные транслятором C51, ассемблером A51, транслятором PL/M-51 Intel и ассемблером ASM51 Intel.

Компоновщик автоматически выбирает соответствующие библиотеки поддержки и связывает только требуемые модули из библиотек. Установки по умолчанию для L51 выбраны так, чтобы они подходили для большинства прикладных программ, но можно определить и заказные установки.

4.Отладчик/симулятор WinSim51

Отладчик исходных текстов используется с транслятором C51, ассемблером A51, транслятором PL/M-51 Intel и ассемблером ASM51 Intel. Отладчик/симулятор позволяет моделировать большинство особенностей Intel 8051 без наличия аппаратных средств. Можно использовать его для проверки и отладки прикладной программы прежде, чем будут изготовлены аппаратные средства. При этом моделируется широкое разнообразие периферийных устройств, включая последовательный порт, внешний ввод – вывод и таймеры.

Заключение

В данной курсовой была изучена на практическом примере работа микроконтроллера AduC816. А также написана программа на ассемблере, спроектирована принципиальная схема. Получены результаты, соответствующие заданию.

Список литературы

1. Методические указания к лабораторным работам по курсу МП в МБИ.

2. В.В.Сташин. Проектирование цифровых устройств на однокристальных микроконтроллерах.

3. Сайт: http: //www.gav.ru/

4. Сайт: http: //www.8052.com/codelib.phtml

5. Сайт: http: //www.signal.ru/

6. Волович Г.И. «Схемотехника аналоговых и аналого-цифровых устройств». М., 2003г. 406с.

Приложение

РЕЗИДЕНТНАЯ ПАМЯТЬ ДАННЫХ

22h

14h

13h

12h

11h

10h

0Fh

08h

07h

06h

05h

04h

03h

02h

01h

00h

X_RES

X_SCHETCHIK
X_Z
X_SCHET

X_SUM

X_M
X_A
X_Y

ПРЯМОАДРЕСУЕМЫЕ БИТЫ РЕГИСТРОВ

СПЕЦИАЛЬНЫХ ФУНКЦИЙ

D1h

D0h

C

(PSW.7)

RS1

(PSW.4)

RS0

(PSW.3)

A8h

EA

(IE.7)

88h

87h

TR0

(TCON.4)

ПАМЯТЬ ПРОГРАММ

89h

7Dh

77h

69h

4Eh

40h

3Eh

30h

00h

NC4:

NC3:

NC2:

NC1:

MAIN:

START:

WAIT:

INIT:

LJMP INIT

0141h

012Ah

0120h

010Bh

0104h

E9h

E1h

D6h

C0h

B1h

96h

NV11:

NV10:

NV9:

NV8:

NEXT:

NV6:

NV5:

NV4:

NV3:

NV2:

NV1: