Учебник - Процессоры цифровой обработки сигналов (Круг П.Г.) (1086865), страница 8
Текст из файла (страница 8)
При формировании текста пользовательской программы необходимопомнить, что понятие приоритета операций для TASM не определено и выражение 1+ 3•2воспринимается им как (1+3)•2. Для того чтобы избежать ошибок,используйте в выражениях скобки для явного задания приоритета операций. Так, вупомянутой ситуации необходимо использовать выражение 1 +(2•3)Используемые в выражениях численные данные могут иметьразличный формат, определяемый специально введенными префиксом илисуффиксом. При этом суффикс H говорит о том, что используемые данныеимеют шестнадцатеричный формат, O – восьмеричный, b – двоичный, d –десятичный (например, 12O, 3H). Вместо суффиксов могут бытьиспользованы префиксы $, @ и % (данные в десятичном представлении впрефиксе не нуждаются).46PDF created with pdfFactory trial version www.pdffactory.comТаблица 4.1.
Опции командной строки TASMОпция-tableОписаниеПример использованияОпределяет используемую при ассемблированиитрансляционную таблицуПри ассемблировании дляTMS320F2xx ииспользовании таблицыTASM203.TABtasm -203 source.asm-ttableАльтернативная форма предыдущей опцииПри ассемблировании дляTMS320F206 ииспользовании таблицыTASMF206.TABtasm -tf206 source.asm-a1-a2-a4-a8Диагностика ошибок при косвенной адресации;проверка на наличие неиспользуемых в аргументахданных; проверка на неуникальность меток;проверка на присутствия бинарных операторов вначале выражений.tasm -203 -a1 source.asm-сЗапись объектного файла в виде непрерывногоблокаtasm -203 -с source.asm-dОпределяет макрос или просто его меткуtasm -203 –dExitsource.asmТакое определение меткиExit в командной строкеиспользуется при условномассемблировании-eВ нормальном режиме ассемблирования кодмакросов, определенных с помощью директивы#define, не раскрывается в генерируемом листингфайле; данная опция блокирует это ограничение.tasm -203 -a1 -e source.asmffillbyteИнициализирует входное пространство памятипроцессора в соответствии с заданным шаблономfillbytetasm -203 -f00 source.asm-iЕсли эта опция задана, то ассемблер не различаетстрочные и прописные буквы при трансляции меток.tasm -203 -i source.asm-kОбъектный код генерируется в формате DSKtasm -203 -k source.asm-l[al]В листинг файл выводится информация о всехметках, встретившихся при ассемблировании;суффикс а указывает на то, что должна бытьвыведена информация обо всех метках программы, lозначает вывод подробной информации по меткамtasm -203 -la source.asm-qНе генерировать листинг-файлtasm -203 -q -k source.asm-sГенерировать файл с символьной информацией(файл с расширением *.sym) по окончанииассемблированияtasm -203 -s -k source.asm-yГенерировать информацию о времениассемблированияtasm -203 –y -k source.asm47PDF created with pdfFactory trial version www.pdffactory.comКомментарием в тексте программы TASM считает любуюпоследовательность символов, начинающуюся с символа ‘;’.Пример 4.2.
дает представление о возможных вариантах структурыстрок пользовательской программы.Пример 4.2. Фрагмент текста программыSTART.PS.ENTRYВLAR8000h; Начало программы$ + 10OAR0, #((COEFFS >> 2) & FF)Таблица 4.2. Базовые директивы TASMФорматдирективыОписание[метка] .BLOCKвыражВынуждает программный счетчик пропуститьвыраж число байт без инициализации содержимогосоответствующих ячеек памятиByte1:.block 1[меткаl].BLOCK выраж1[,выраж …]Осуществляет инициализацию N ячеек памяти(начиная с ячейки, на которую указываетпрограммный счетчик) значениями выраж1,выраж2, …, выражNByte2:.byte 10, ‘C’#DEFINEмакро_метка[(спис_арг)][макроопределение]Одна из самых функциональных директивассемблера.
Позволяет организоватьпараметризованную (со списком аргументовспис_арг) подстановку вхождений меткимакро_метка в программе. Каждое вхождение TASMзаменяет строкой макроопределение#DEFINEVAR1_LO(VAR1 & 255)#DEFCONT\выражПозволяет организовать многострочное определениемакросов, инициированное директивой #DEFINE#DEFINEADD(xx,yy) clc#DEFCONT \lda xx#DEFCONT \adc yy#DEFCONT \sta xx.DS выражОпределяет адрес выраж, начиная с которого будетосуществляться инициализация ячеек памятиданных пользовательскими значениями (например, спомощью директивы .WORD).DS 0100b#IFDEF меткаблокинструкций 1[#ELSE блокинструкций 2]#ENDIFОдна из форм реализации условногоассемблирования.
В данном случае, если значениеметка определено в программе, ассемблируетсяпервый блок инструкций, нет – второй.48PDF created with pdfFactory trial version www.pdffactory.comПример#IFDEF PROC1zac#ENDIFОкончание таблицы 4.2. Базовые директивы TASMФорматдирективыОписаниеПример#IFNDEF меткаблокинструкций 1[#ELSE блокинструкций 2]#ENDIFВ отличии от предыдущего случая первый блокассемблируется, если метка не определена#IFNDEFPROC2zac#ENDIF#IF выражблок инструкций1 [#ELSE блокнструкций 2]#ENDIFПервый блок ассемблируется, если значение выражотлично от нуля#IF ($ >= 1000h)zac#ENDIF.ENDПрисутствует в каждой программе и говорит онеобходимости прекращения генерации объектногокода при ассемблировании.
Строкипользовательского файла, следующие за этойдирективой, ассемблером игнорируются.End.ENTRYОбязательно присутствует в каждой программе,Используется для задания ячейки памяти впрограммном пространстве ПЦОС, с которойначнется выполнение пользовательской программы.ENTRYметка .EQUвыраж (метка.SET выраж)Используйте эту директиву для присвоения меткеметка значения выражения выражFALSE.equ 0MASK.equ 0FFh#INCLUDE(.include)имя_файлаСчитывает и ассемблирует содержимое указанногофайла. Имя последнего должно быть заключено вкавычки#INCLUDE“macros.h”Разрешает (запрещает) вывод информации влистинг-файл, начиная со строки программы, вкоторой она расположена.; инфорация обинструкцияхзаносится влистинг-файл.nolist; здесь - уже нет[метка] .TEXT"строка"Размещает содержимое указанной строкипоследовательно, посимвольно и в кодах ASCII впамяти процессора, начиная с ячейки памяти, накоторую указывает отладчикmessage .text“string”.TITLE"строка"Используется при печати как заголовок каждойновой распечатываемой страницы и одновременнослужит названием программы.title “Counter”[метка].WORDвыраж1[,выраж2…]Осуществляет инициализацию следующихопределенных PC 2*N байт памяти значениямивыраж1 ...
выраж2data_table:.word 12.word 2*$.word (2*$)+1.word (2*$)&F00.LIST(.NOLIST)49PDF created with pdfFactory trial version www.pdffactory.com4.4.3. Директивы ассемблераОпределенные для TASM базовые директивы и их описание cпримерами использования представлены в Табл. 4.2.4.5. Последовательный порт ПЦОС TMS320С2xx4.5.1.
Обзор последовательного портаВ число периферийный устройств ПЦОС TMS320F206 входитсинхронный последовательный порт (рис. 4.26). Он позволяет осуществитьнепосредственную связь с последовательными устройствами, такими каккодеки и последовательные АЦП.Рассматриваемый порт имеет два встроенных четырехуровневыхFIFO-буфера с возможностью генерации прерываний и передачи данных вшироком диапазоне скоростей в непрерывном или дискретном режимах. Врежиме внутренней синхронизации максимальная скорость передачиданных определяется половиной тактовой частоты процессора исоставляет 10 кбод.Рис.
4.26. Структурная схема последовательного порта50PDF created with pdfFactory trial version www.pdffactory.com4.5.2. Сигналы последовательного портаПриведенные на рис. 4.26 сигналы имеют следующее назначение:· CLKR (CLKX) – тактовый сигнал приема (передачи). Используетсядля синхронизации процесса приема (передачи) информации впоследовательный порт и, в зависимости от настройки, можетгенерироваться самим процессором или происходить от внешнегоисточника;· FSR (FSX) – сигнал кадровой синхронизации приема (передачи)используется для синхронизации приема (передачи) “кадров”информации и может иметь как внутреннее, так и внешнеепроисхождение (зависит от установок);· DR (DX) – принимаемые (передаваемые) последовательные данные.При этом вывод приема (передачи) последовательных данных DR(DX) ПЦОС для обеспечения корректного обмена информацииподключается к соответствующему выводу последовательнойпередачи DX (последовательного приема DR) другого устройства.· RINT (XINT) – сигнал маскируемого прерывания приема (передачи)генерируется буфером приема (передачи) последовательного портапри условии.4.5.3.
Регистры последовательного портаЕдинственным программно-доступным регистром буферов передачии приема последовательного порта является отображаемый в пространствоввода/вывода по адресу FFF0h синхронный регистр приема и передачиSDTR. С помощью этого регистра осуществляется запись (инструкцияOUT) и чтение (инструкция IN) информации в последовательный порт.Регистры RSR и XSR осуществляют контроль передачи информациимежду FIFO-буферами и выводами порта и не доступны из программыпользователя.RSR – синхронный регистр приема последовательного порта. Каждоеслово данных, принимаемое по линии сигнала DR, вдвигается “старшимбитом вперед” в этот регистр по одному биту в течение одного периодасинхронизирующего сигнала CLKR. После того, как слово данныхокажется полностью записанным в рассматриваемый регистр, егосодержимое в соответствии с рис.
4.26 переписывается в нижнюю ячейку(прием (0)) принимающего FIFO-буфера.XSR – синхронный передающий регистр последовательного порта.Каждое слово данных, в соответствии с рис. 4.26 передается из ячейкинижнего уровня передающего FIFO-буфера (передача (0)) в этот регистр.После завершения процесса переноса данных в регистр, XSR выдвигаетданные “старшим битом вперед” по выводу последовательной передачиTX.51PDF created with pdfFactory trial version www.pdffactory.com4.5.4.
ПрерыванияСинхронный последовательный порт поддерживает два аппаратныхпрерывания, осведомляющих процессор о необходимости обслуживанияприемо-передающих FIFO-буферов:· прерывание передачи (XINT) вызывает переход по адресу 000Ahпрограммной памяти, есливыполнено условие срабатываниятриггера прерывания передачи. Это условие задается битами FT0 иFT1 управляющего регистра SSPCR последовательного порта(подробно рассмотрен в п.