1. Редактирование текста модуля программы
<имя редактора> <имя файла.а96>
me program.a96
ncedit subroutine.a96
2. Трансляция модулей программ с применением транслятора
asm96.ехе
<имя транслятора> <имя файла.а96>
asm96 program.a96
asm96 subroutine.a96
3. Компоновка программы и подпрограммы с использованием программы-компоновщика rl96.
<имя компоновщика> <имя головной программы>,
<имя подпрограммы 1>, <имя подпрограммы n>.
rl96 program.obj, subroutine.obj
В результате компоновки получается файл абсолютного кода program и файл листинга компоновки program.m96, который можно просмотреть с помощью программы-редактора.
4. Для преобразования программы в шестнадцатеричный формат(в случае использования программатора) может быть использована программа преобразования кодов.
<имя программы-пребразователя> <имя файла>
oh program
Результатом преобразования является файл типа program.hex.
Контрольное задание №2
Задача 1. Составить фрагмент программы управления релейными элементами, связанными с выходным портом Y(Y0,Y1,Y2,…Y7),
если известно, что к микроконтроллеру подключены 8 ключей (Х0, Х1, Х2, …Х7) через входной порт Х. Структура управления показана на рисунке, варианты заданий сведены в таблицу 4.
Таблица 4
Номер последней цифры шифра | Логическая функция |
0 | __ Y0 = X3 + X1·X2·X6 |
1 | __ __ Y1 = X0·X1 + X2·X3 |
2 | __ Y2 = X3·X0 + X4 |
3 | __ Y3 = X1·X2 + X3 |
4 | __ __ Y4 = X6 + X1·X3 |
5 | Y5 = X7·X1 + X2·X0 |
6 | ___ Y6 = (X4 + X5)·X6 |
7 | Y7 = X7 + X2·X3 |
8 | Y1 = X0·X1 + X4·X5 |
9 | __ __ Y2 = X1·X3 + X5·X6 |
Методические указания к решению задачи 1
При разработке программы важным этапом является разработка алгоритма решения задачи. При этом рекомендуется пользоваться правилами структурного (модульного) программирования, которые предполагают проектирование программ сверху вниз с разделением программ на отдельные модули. Каждый модуль содержит одну точку входа и одну точку выхода и представляет собой композицию основных управляющих структур, представленных на рисунке.
а) последовательность б) разветвление в) выбор
г) цикл "пока" д) цикл "до"
Пусть необходимо реализовать логические функции:
__
Y0 = X1 + X2·X5; Y1 = X3·X7.
При этом в байтовом регистре Х внутреннего ОЗУ микроконтроллера находятся текущие значения 8 битовых входных переменных, считанные процессором из порта ввода Х.
Необходимо вычислить значения битовых управляющих воздействий Y1, Y0 и записать результаты в байтовый регистр Y.
Номер последней цифры шифра | Номер канала N | Число отсчетов М | Размещение в памяти с адреса – G. |
0 | 12 | 120 | 10000 |
1 | 7 | 95 | 5000 |
2 | 9 | 48 | 6000 |
3 | 14 | 111 | 4000 |
4 | 6 | 39 | 3000 |
5 | 8 | 46 | 7000 |
6 | 11 | 51 | 3500 |
7 | 10 | 77 | 5500 |
8 | 5 | 84 | 6500 |
9 | 2 | 90 | 7500 |
Методические указания к решению задачи 2
Алгоритм решения задачи по обслуживанию АЦП может быть представлен в следующем виде:
Программа может быть составлена на любом языке программирования. Hиже в качестве примера приведен фрагмент программы для DEC – архитектурных машин ("Электроника") с применением ассемблера.
.TITLE ADC
DAR = 160070 ;адреса регистров АЦП
DR = 160072
CSR = 160074
ADC: MOV #N, @#DAR ;запись номера канала N
;число должно быть восьмеричным
;или десятичным из задания
MOV #G, R2
MOV @#DAR, R1
M1: TSTB R1 ;проверка выбора номера канала;
BPL M1
MOV #M , R3 ;счетчик циклов в R3 (число М)
M2: MOV #0, CSR ;запуск АЦП
BIT #2000, CSR ;проверка состояния 1 в 10 разряде CSR
BEQ M2
MOV @#DR, (R2)+
DEC R3
BNE M2
HALT
M: .BYTE
N: .BYTE
DAR: .WORD
CSR: .WORD
DR: .WORD
D: .BLKW G. ;резервирование в памяти
;числа слов под массив данных
.END ADC
Задача 3. Определите требуемое число разрядов счетчика и число, которое должно быть записано в регистр счетчика (Кдел = двоичное), для получения периода квантования Тк , равного такому количеству минут, каковы две последние цифры вашей зачетной книжки. При этом входная эталонная частота таймера-счетчика равна fвх = fэт = 10МГц.
Методические указания к решению задачи 3
Соотношение между частотой входных импульсов fвх счетчика, частотой выходных импульсов таймера fвых (которые могут задавать период квантования Тк = 1/fвых) и коэффициентом деления счетчика (Кдел ) равно:
,где Кдел = 2n – 1,
n – число разрядов счетчика.
Чем больше число разрядов счетчика, тем реже появляются выходные импульсы таймера. Например, если счетные импульсы подаются с частотой 1,1925 МГц и три шестнадцатиразрядных счетчика будут включены каскадно, то будем иметь 48 разрядный счетчик и импульс на выходе таймера появится более чем через 7 лет.