Дмитриев Универсалный лабораторный стенд. Аппаратные средства проектирования встраиваемых систем 2009
.pdfMET_TOG: |
|
|
CLR |
CMI2 |
;сброс флага прерывания от |
|
|
;компаратора СМ2 |
INC |
R2 |
;инкремент номера входа в обработчик |
CJNE |
R2,#01h,M31 |
;если номер входа=1 |
CLR |
C |
|
MOV |
A,CML2 |
;загрузка в СМ2 момента времени |
ADD |
A,#57h |
;переключения (2) |
|
||
MOV |
CML2,A |
|
MOV |
A,CMH2 |
|
ADDC |
A,#02H |
|
MOV |
CMH2,A |
|
LJMP |
EX_TOG |
;на выход из обработчика |
;===================================================== |
||
M31: CJNE |
R2,#02h,M32 |
;если номер входа=2 |
XRL |
RTE,#0C0h |
;переключение Р4.6 в момент времени (3) |
CLR |
C |
|
MOV |
A,CML2 |
;загрузка в СМ2 момента времени |
ADD |
A,#57h |
;переключения (3) |
|
||
MOV |
CML2,A |
|
MOV |
A,CMH2 |
|
ADDC |
A,#02H |
|
MOV |
CMH2,A |
;на выход из обработчика |
LJMP |
EX_TOG |
|
;===================================================== |
||
M32: CJNE |
R2,#03h,M33 |
;если номер входа=3 |
XRL |
RTE,#0C0h |
;переключение Р4.7 в момент времени (5) |
CLR |
C |
|
MOV |
A,CML2 |
;загрузка в СМ2 момента времени |
ADD |
A,#0AEh |
;переключения (5) |
|
||
MOV |
CML2,A |
|
MOV |
A,CMH2 |
|
ADDC |
A,#04H |
|
MOV |
CMH2,A |
|
LJMP |
EX_TOG |
;на выход из обработчика |
;====================================================== |
||
M33: CJNE |
R2,#04h,M34 |
;если номер входа=4 |
CLR |
C |
|
MOV |
A,CML2 |
;загрузка в СМ2 момента времени |
ADD |
A,#57h |
;переключения (6) |
|
||
|
|
101 |
MOV |
CML2,A |
|
MOV |
A,CMH2 |
|
ADDC |
A,#02H |
|
MOV |
CMH2,A |
|
LJMP |
EX_TOG |
;на выход из обработчика |
;====================================================== |
||
M34: CJNE |
R2,#05h,M35 |
;если номер входа=5 |
XRL |
RTE,#0C0h |
;переключение Р4.6 в момент времени (7) |
CLR |
C |
|
MOV |
A,CML2 |
;загрузка в СМ2 момента времени |
ADD |
A,#57h |
;переключения (7) |
|
||
MOV |
CML2,A |
|
MOV |
A,CMH2 |
|
ADDC |
A,#02H |
|
MOV |
CMH2,A |
|
LJMP |
EX_TOG |
;на выход из обработчика |
;===================================================== |
||
M35: |
|
;если номер входа=6 |
XRL |
RTE,#0C0h |
;переключение Р4.7 в момент времени (1) |
CLR |
|
C |
MOV |
A,CML2 |
;загрузка в СМ2 момента времени |
ADD |
A,#5Ch |
;переключения (1) |
|
||
MOV |
CML2,A |
|
MOV |
A,CMH2 |
|
ADDC |
A,#09H |
|
MOV |
CMH2,A |
;сброс номера входа в обработчик |
MOV |
R2,#00h |
|
EX_TOG: |
|
|
RETI |
|
;возврат из обработчика прерывания |
END |
|
;от компаратора СМ2 |
|
|
Результат работы составленной для решения данной задачи программы можно проконтролировать при помощи логического анализатора. Для этого перед запуском программы на исполнение в ПЛИС необходимо загрузить проект, представленный на рис. 3.23. При помощи этого проекта линии порта Р4 подключаются к каналам СН А0 – СН А7 логического анализатора.
102
Рис. 3.23. Схема подключения порта Р4 микроконтроллера к каналам СН А0 – СН А7 логического анализатора
На рис. 3.24 представлена временная диаграмма, полученная при помощи логического анализатора. Помимо структуры многоканальной последовательности сигналов при помощи анализатора в режиме маркерных измерений проверяются и значения временных интервалов. Например, на временной диаграмме представлен результат измерения интервала между моментами времени 0 и 1 исходной диаграммы, который составляет 650 мкс. Таким образом, по полному соответствию исходной диаграммы (рис. 3.23) и временной диаграммы анализатора можно судить о правильности работы программы.
103
Рис. 3.24. Временная диаграмма, полученная при помощи логического анализатора
104
Список литературы
1.Схемотехника ЭВМ. Лабораторный практикум: учебное пособие / Под ред. Б.Н. Ковригина. – 3-е изд., перераб. и доп. – М.:
МИФИ, 2006. – 212 с.
2.Ковригин Б.Н. Введение в инструментальные средства проектирования и отладки цифровых устройств на ПЛИС: Учебнометодическое пособие. – М.: МИФИ, 2006. – 192 с.
3.Дмитриев Н.А. Универсальный лабораторный стенд. Инструментальные средства проектирования и отладки. Электронное учебное пособие. 50 с.
105
Приложение 1
|
|
|
|
|
Команды, которые изменяют состояниефлагов |
|||
Команда |
|
|
Флаги |
Команда |
Флаги |
|
|
|
|
|
С |
OV |
AC |
|
С OV AC |
|
|
ADD |
|
X |
X |
X |
CLR С |
0 |
|
|
ADDC |
|
X |
X |
X |
CPLC |
X |
|
|
SUBB |
|
X |
X |
X |
ANLC.bit |
X |
|
|
MUL |
|
0 |
X |
|
ANLC. /bit |
X |
|
|
DIV |
|
0 |
X |
|
ORLC.bit |
X |
|
|
DA |
|
X |
|
|
ORLC. /bit |
X |
Примечание: |
Насостояниефлаговмогутвлиятьоперации |
RRC |
|
X |
|
|
MOV C.bit |
X |
||
|
|
|
|
сPSW исегоотдельными битами. |
||||
RLC |
|
X |
|
|
CJNE |
X |
|
|
|
|
|
|
|
||||
SETB С |
|
1 |
|
ОБОЗНАЧЕНИЯ, ИСПОЛЬЗУЕМЫЕ В ОПИСАНИИ СИСТЕМЫ КОМАНД |
||||
|
|
|
|
|||||
Rn |
– Регистры R7-R0 текущего банка регистров общегоназначения; |
|
||||||
direct |
– |
8-ми разрядный адрес данных. Это может быть адрес внутренней памяти данных (0-127) или регистра специальных |
||||||
|
|
функций (128-255); |
|
|
|
|
||
@Ri |
– 8-ми разрядный косвенный адрес внутренней памяти данных (0-255). Используются только R1 и R0; |
|||||||
#data |
– |
8-ми битная константа; |
|
|
|
|
||
#data 16 – |
16-ти битная константа; |
|
|
|
|
|||
addr 16 |
– |
16-ти битный адрес, обеспечивает переход на любой адрес в пределах всего пространствапамяти программ; |
||||||
addr 11 |
– |
11-ти битный адрес, обеспечивает переход на любой адрес в пределах двухкилобайтной страницы, на которой |
||||||
|
|
находится первый байт следующей инструкции; |
|
|
||||
rel |
– Смещение в виде числа со знаком в диапазоне от –128 до +127 относительно адреса первого байта |
|||||||
|
|
следующей команды; |
|
|
|
|
||
bit |
– |
прямой адрес бита во внутренней памяти данных или области регистров специальных функций. |
МНЕМОНИЧЕСКОЕ |
ОПИСАНИЕ |
ДЛИНА |
ВРЕМЯВЫПОЛНЕНИЯ |
|
|
ОБОЗНАЧЕНИЕ |
|
(БАЙТ) |
(ПЕРИОДОВГЕНЕРАТОРА) |
АРИФМЕТИЧЕСКИЕОПЕРАЦИИ |
|
|
|
|
ADD |
A,Rn |
Сложитьрегистр иаккумулятор |
1 |
12 |
ADD |
A,direct |
Сложить прямо адресуемый байтиаккумулятор |
2 |
12 |
ADD |
A,@Ri |
Сложитькосвенно адресуемый байт иаккумулятор |
1 |
12 |
ADD |
A,#data |
Сложитьнепосредственныеданныеиаккумулятор |
2 |
12 |
ADDC |
A,Rn |
Сложитьрегистр иаккумулятор спереносом |
1 |
12 |
ADDC |
A,direct |
Сложить прямо адресуемый байтиаккумулятор спереносом |
2 |
12 |
ADDC |
A,@Ri |
Сложитькосвенно адресуемый байт иаккумуляторс переносом |
1 |
12 |
ADDC |
A,#data |
Сложитьнепосредственныеданныеиаккумуляторс переносом |
2 |
12 |
SUBB |
A,Rn |
Вычесть регистр из аккумулятора с заемом |
1 |
12 |
SUBB |
A.direct |
Вычесть прямо адресуемый байт из аккумулятора с заемом |
2 |
12 |
SUBB |
A,@Ri |
Вычесть косвенно адресуемыйбайт из аккумулятора с заемом |
1 |
12 |
SUBB |
A,#data |
Вычесть непосредственные данные из аккумулятора с заемом |
2 |
12 |
INC |
A |
Инкрементировать аккумулятор |
1 |
12 |
INC |
Rn |
Инкрементировать регистр |
1 |
12 |
INC |
direct |
Инкрементировать прямо адресуемый байт |
2 |
12 |
INC |
@Ri |
Инкрементировать косвенно адресуемый байт |
1 |
12 |
DEC |
A |
Декрементировать аккумулятор |
1 |
12 |
DEC |
Rn |
Декрементировать регистр |
1 |
12 |
DEC |
direct |
Декрементировать прямо адресуемый байт |
2 |
12 |
DEC |
@Ri |
Декрементировать косвенно адресуемый байт |
1 |
12 |
INC |
DPTR |
Инкрементироватьрегиструказательданных |
1 |
24 |
MUL |
AB |
Умножитьаккумулятор нарегистр В |
1 |
48 |
DIV |
AB |
Разделить аккумулятор нарегистр В |
1 |
48 |
DA |
A |
Десятичнаякоррекцияаккумулятора |
1 |
12 |
|
МНЕМОНИЧЕСКОЕ |
ОПИСАНИЕ |
ДЛИНА |
ВРЕМЯВЫПОЛНЕНИЯ |
|
ОБОЗНАЧЕНИЕ |
|
(БАЙТ) |
(ПЕРИОДОВГЕНЕРАТОРА) |
ЛОГИЧЕСКИЕОПЕРАЦИИ |
|
|
|
|
ANL |
A,Rn |
Логическое И регистра и аккумулятора |
1 |
12 |
ANL |
A,direct |
Логическое И прямо адресуемого байта и аккумулятора |
2 |
12 |
ANL |
A,@Ri |
Логическое И косвенно адресуемого байта и аккумулятора |
1 |
12 |
ANL |
A,#data |
Логическое И непосредственных данных и аккумулятора |
2 |
12 |
ANL |
direct,A |
Логическое И аккумулятора и прямо адресуемого байта |
2 |
12 |
ANL |
direct,#data |
Логическое И непосредственных данных и прямо адресуемого |
|
|
|
|
байта |
3 |
24 |
ORL |
A,Rn |
Логическое ИЛИ регистра и аккумулятора |
1 |
12 |
ORL |
A,direct |
Логическое ИЛИ прямо адресуемого байта и аккумулятора |
2 |
12 |
ORL |
A,@Ri |
Логическое ИЛИ косвенно адресуемого байта и аккумулятора |
1 |
12 |
ORL |
A,#data |
Логическое ИЛИ непосредственных данных и аккумулятора |
2 |
12 |
ORL |
direct,A |
Логическое ИЛИ аккумулятора и прямо адресуемого байта |
2 |
12 |
ORL |
direct,#data |
Логическое ИЛИ непосредственных данных и прямо |
|
|
|
|
адресуемого байта |
3 |
24 |
XRL |
A,Rn |
Исключающее ИЛИ регистра и аккумулятора |
1 |
12 |
XRL |
A,direct |
Исключающее ИЛИ прямо адресуемого байта и аккумулятора |
2 |
12 |
XRL |
A,@Ri |
Исключающее ИЛИ косвенно адресуемого байта и аккумулятора |
1 |
12 |
XRL |
A,#data |
Исключающее ИЛИ непосредственных данных и аккумулятора |
2 |
12 |
XRL |
direct,A |
Исключающее ИЛИ аккумулятора и прямо адресуемого байта |
2 |
12 |
XRL |
direct,#data |
Исключающее ИЛИ непосредственных данных и прямо |
|
|
|
|
адресуемого байта |
3 |
24 |
CLR |
A |
Обнулениеаккумулятора |
1 |
12 |
CPL |
A |
Побитно инвертировать аккумулятор |
1 |
12 |
RL |
A |
Циклический сдвиг аккумулятора влево |
1 |
12 |
МНЕМОНИЧЕСКОЕ |
ОПИСАНИЕ |
ДЛИНА |
ВРЕМЯВЫПОЛНЕНИЯ |
|
|
ОБОЗНАЧЕНИЕ |
|
(БАЙТ) |
(ПЕРИОДОВГЕНЕРАТОРА) |
RLC |
A |
Циклический сдвиг аккумулятора влево через перенос |
1 |
12 |
RR |
A |
Циклический сдвиг аккумулятора вправо |
1 |
12 |
RRC |
A |
Циклический сдвиг аккумулятора вправо через перенос |
1 |
12 |
SWAP |
A |
Переставитьместамиполубайтыаккумулятора |
1 |
12 |
ОПЕРАЦИИПЕРЕСЫЛКИДАННЫХ |
1 |
|
||
MOV |
A,Rn |
Переслать регистр в аккумулятор |
12 |
|
MOV |
A.direct |
Переслать прямо адресуемый байт в аккумулятор |
2 |
12 |
MOV |
A,@Ri |
Переслать косвенно адресуемый байт в аккумулятор |
1 |
12 |
MOV |
A,#data |
Переслать непосредственные данные в аккумулятор |
2 |
12 |
MOV |
Rn,A |
Переслать аккумулятор в регистр |
1 |
12 |
MOV |
Rn,direct |
Переслать прямо адресуемый байт в регистр |
2 |
24 |
MOV |
Rn,#data |
Переслать непосредственные данные в регистр |
2 |
12 |
MOV |
direct,A |
Переслать аккумулятор в прямо адресуемый байт |
2 |
12 |
MOV |
direct,Rn |
Переслать регистр в прямо адресуемый байт |
2 |
24 |
MOV |
direct,direct |
Переслать один прямоадресуемый байт в другой |
3 |
24 |
MOV |
direct,@Ri |
Переслать косвенно адресуемый байт в прямо адресуемый |
2 |
24 |
|
|
байт |
|
|
MOV |
direct,#data |
Переслать непосредственные данные в прямо адресуемый |
3 |
24 |
|
|
байт |
|
|
MOV |
@Ri,A |
Переслать аккумулятор в косвенно адресуемый байт |
1 |
12 |
MOV |
@Ri,direct |
Переслать прямо адресуемый байт в косвенно адресуемый |
2 |
24 |
|
|
байт |
|
|
MOV |
@Ri,#data |
Переслать непосредственные данные в косвенно адресуемый |
2 |
12 |
|
|
байт |
|
|
МНЕМОНИЧЕСКОЕ |
ОПИСАНИЕ |
ДЛИНА |
ВРЕМЯВЫПОЛНЕНИЯ |
|
|
ОБОЗНАЧЕНИЕ |
|
(БАЙТ) |
(ПЕРИОДОВГЕНЕРАТОРА) |
MOV |
DPTR,#data16 |
Переслать 16-ти разрядные данные в в регистр указатель |
3 |
24 |
MOVC |
A,@A+DPTR |
Переслать в аккумулятор данные из памяти программ по адре- |
|
|
|
|
су, определяемому как сумма регистра указателя и аккумуля- |
1 |
24 |
|
|
тора |
|
|
MOVC |
A,@A+PC |
Переслать в аккумулятор данные из памяти программ по адре- |
1 |
24 |
|
|
су, определяемому как сумма счетчика команд и аккумулятора |
|
|
MOVX |
A,@Ri |
Переслатьв аккумуляторкосвенноадресуемые черезрегистр |
|
|
|
|
данныеиз внешнейпамятиданных |
|
|
MOVX |
A,@DPTR |
Переслатьв аккумуляторкосвенноадресуемые черезрегистр |
1 |
24 |
|
|
указательданныеизвнешнейпамятиданных |
|
|
MOVX |
@Ri,A |
Переслать данные в косвенно адресуемую через регистр ячейку |
|
|
|
|
внешней памяти данных из аккумулятора |
1 |
24 |
MOVX |
@DPTR,A |
Переслать данные в косвенно в косвенно адресуемую через |
|
|
|
|
регистр указатель ячейку внешней памяти данных из аккумуля- |
|
|
|
|
тора |
1 |
24 |
PUSH |
direct |
Поместитьпрямо адресуемые данные в стек |
2 |
24 |
POP |
direct |
Извлечь из стека прямо адресуемые данные |
2 |
24 |
XCH |
A,Rn |
Поменять местами содержимое регистра и аккумулятора |
1 |
12 |
XCH |
A,direct |
Поменять местами содержимое прямо адресуемого байта и |
|
|
|
|
аккумулятора |
2 |
12 |
XCH |
A,@Ri |
Поменять местами содержимое косвенно адресуемого байта и |
|
|
|
|
аккумулятора |
1 |
12 |
XCHD |
A,@Ri |
Поменять местами младшие тетрады косвенно адресуемого |
|
|
|
|
байта и аккумулятора |
1 |
12 |