Смекни!
smekni.com

Темы для ов Контрольное задание 1 (стр. 3 из 10)

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.

Алгоритм реализации логического управления координатой Y0:

Будем считать, что модули вычисления Y0 и Y1 оформлены в виде подпрограмм, которые вызываются командами

CАLL CALC_Y0

CАLL CALC_Y1

Для реализации представленного алгоритма можно использовать работу битового процессора (если такой имеется) или специальные команды анализа битов.

Ниже приведена программа для микроконтроллера INTEL MCS – 196 [1,2].

В его составе команд имеются команды тестирования битовых переменных: BBC и BBS (branch bit clear- переход ,если бит очищен и branch bit set-переход, если бит установлен), осуществляющие переход на заданную метку ( трехоперандная команда ) в зависимости от того установлен или сброшен анализируемый бит.

Формат команды:

BBC breg, bitno, cadd

где breg – анализируемый регистр;

bitno – номер анализируемого бита;

cadd – точка перехода по условию.

;подпрограмма вычисления Y0

CALC_Y0: BBS X, 1, SET_Y0 ;анализ младшего бита 1 регистра X

BBC X, 2, CLR_Y0 ;анализ бита 2

BBC X, 5, CLR_Y0 ;анализ бита 5

SET_Y0: ORB Y, #00000001B ;установка в 1 бита Y0

RET

CLR_Y0: ANDB Y, #11111110B ;очистка бита Y0

RET

;подпрограмма вычисления битовой переменной Y1

CALC_Y1: BBC X, 3, CLR_Y1

BBS X, 7, CLR_Y1

SET_Y1: ORB Y, #00000010B ;установка в 1 бита Y1

RET

CLR_Y1: ANDB Y, #11111101B

RET

При решении задачи язык программирования может быть выбран любым.

Задача 2. Составить алгоритм и программу обслуживания аналого-цифрового преобразователя (АЦП), осуществляющего прием и обработку данных (М – число отсчетов) по N-каналу (данные сведены в таблицу 5), если АЦП имеет 16 входных каналов. Выбор конкретного канала осуществляется записью в разряды (от 0 до 3) регистра выбора канала DAR (Data Address Register) соответствующего двоичного кода. После выбора номера канала 7 разряд DAR устанавливается в "1".

Управление запуском АЦП и проверка готовности данных после преобразования осуществляется с использованием регистра управления и статуса CSR (Control and Status Register). При этом пуск АЦП осуществляется записью "1" в нулевой разряд, готовность проверяется по наличию "1" в 10 разряде CSR. Результат преобразования в виде выходного кода АЦП поступает в регистр данных АЦП DR (Data Register).


Таблица 5

Номер последней цифры шифра

Номер канала 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 лет.