3.3.2.Листинг программы
Разработка программы проводилась с помощью программы Prokus48.exe.
Мнемокоды программы и машинные коды приведены в таблице 3. 5.
Таблица 3.5
Программа генератора специальных сигналов
Адрес |
Код |
Метка |
Мнемокод |
Комментарий |
000 |
B9 |
|
MOV R1,#00 |
;в регистр R1 кладем 00H |
001 |
00 |
|
|
|
002 |
08 |
M2: |
INS A,BUS |
;в аккумулятор помещаем данные с порта BUS |
003 |
A8 |
|
MOV R0,A |
;в регистр R0 помещаем данные из аккумулятора |
004 |
F9 |
M3: |
MOV A,R1 |
|
005 |
39 |
|
OUTL P1,A |
;пересылка аккумулятора в порт Р1 |
006 |
F8 |
|
MOV A,R0 |
|
007 |
07 |
M1: |
DEC A |
;декремент аккумулятора |
008 |
00 |
|
NOP |
|
009 |
00 |
|
NOP |
|
00А |
00 |
|
NOP |
|
00B |
96 |
|
JNZ M1 |
;переход на метку М1, если в аккумуляторе не ноль |
00C |
07 |
|
|
|
00D |
19 |
|
INC R1 |
;инкремент регистра R1 |
00E |
F9 |
|
MOV A,R1 |
|
00F |
C6 |
|
JZ M2 |
; переход на метку М2, если в аккумуляторе ноль |
010 |
02 |
|
|
|
011 |
00 |
|
NOP |
|
012 |
96 |
|
JNZ M3 |
;переход на метку М3, если в аккумуляторе не ноль |
013 |
04 |
|
|
|
В данной программе регистр R0 используется для хранения значения временной задержки, а регистр R1 для хранения номера шага (от 0 до 255).
В самом начале работы программы кладем в регистр R1 00h.Данную опереацию выполняем единожды, поэтому она практически не влияет на время работы программы. Затем в регистр R0 помещается значение временной задержки, а на порт Р1 выводится номер шага генерирования синала. Это число является адресом ячеек памяти ПЗУ констант генерирования сигнала. Выведеное на порт Р1 число буфферизируется в порте, и на ПЗУ постоянно поступает адрес текущего шага генерирования. На выходе ПЗУ формируется выходной код, который поступает на ЦАП.
Машинные коды, приведенные в таблице 3.5 следует хранить в ПЗУ команд, на принципиальной схеме обозначенном DD3 с нулевого адреса.
3.3.3. Расчет констант, хранимых в ПЗУ данных
В данном курсовом проекте будет две базы для хранения констант: база для хранения значений временной задержки и база для хранеия выходных величин, подаваемых на ЦАП.
По техническому заданию входная величина задается шестью разрядами, т. е. на вход спроектированного устройства будут подаваться последовательность нулей и единиц (всего 6 цифр). Данный входной код можно по всем правилам преобразовать в шестнадцатиричный и рассчитать время задержки. Но при таком подходе, мы получим достаточно большие погрешности в интервале частот от 60 Гц и выше. Чтобы избежать погрешностей, можно поступить следующим образом: расчитать таблицу соответствий кодов и частот. Каждому двоичному коду будет соответствовать определенная частота, т. о., мы избавим себя от расчета погрешностей.