Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Инициализация Таймера 1 для автозагрузки с частотой 32х2400 Гц.




 

TR1 EQU TCON.6

TINIT: MOV TCON,#1101001B

MOV ТН1,#-13

SETB TR1

DB 11111111B; SIN(89)=0.999

Примечательно, что данная программа обходится без использования указателя данных DPTR. Инкремент А перед обращением к таблице необходим из-за наличия однобайтной команды возврата, расположенной между командой MOVC и началом таблицы значений синуса.

2. Вычислить произведение двух 4-х битных чисел, расположенных в младших тетрадах регистров R0 и R1. Для вычисления используется таблица произведений для всех комбинаций сомножителей (всего 256). Произведение двух младших тетрад имеет формат 1 байт.

 

; Вычисление Z=X*Y

; R0=0000.XXXX

; R1=0000.YYYY

; X и Y принимают значения 0 и 1

 

ORG 0C100H; Директива ассемблера, задающая

; начальный адрес программы

MOV DPTR, #MAS; Загрузка адреса массива

; в регистр-указатель данных

MOV A,R0; Пересылка множимого в аккумулятор

SWAP A; Обмен тетрад аккумулятора

ORL A,R1; Формирование в аккумуляторе адреса

; произведения

MOVC A,@A+DPTR; Загрузка в аккумулятор произведения

ORG 0C300H; Директива ассемблера, задающая

; начальный адрес таблицы

 

; Директивы ассемблера, формирующие таблицу произведений

MAS DB 0,0,0,0,0,0,0,0; Z=0*Y

DB 0,0,0,0,0,0,0,0

DB 0,1,2,…..,0FH; Z=1*Y (1*0,1*1,1*2,…,1*0FH)

DB 0,0FH,1EH,…,0E1; Z=0F*Y

; (0FH*0,0FH*1,0FH*2,…,0FH*0FH)

 

III. Работа с внешней памятью данных (ВПД).

Запомнить в ВПД содержимое регистров банка 0.

Начальный адрес ВПД – 0D000h

MOV PSW,#01000B; Выбор банка регистров 1

MOV R0,#8; Счетчик = 8

MOV DPTR,#0D000H; Определение начального адреса ВПД

MOV R1,#0; Определение начального адреса РПД

L: MOV A,@R1; (А) = (регистр)

MOVX @DPTR,A; Передача из аккумулятора в ВПД

INC R1; Переход к следующему регистру

INC DPTR; Приращение указателя адреса

DJNZ R0,L; R0=R0-1, если R0>0, то повторить

 

IV.Операции со стеком.

1. Перед загрузкой в стек содержимое регистра-указателя стека (SP) инкрементируется, а после извлечения из стека – декрементируется.

По сигналу системного сброса в SP заносится значение 07h. Для переопределения SP можно воспользоваться командой MOV SP,#D

Пример:

ORG 0h

MOV SP,#BUFSTEK; Инициализация стека

; Программа

ORG 40h

BUFSTEK DS 10; Резервирование памяти для стека

2. Классический пример работы со стеком – подпрограмма обработки прерывания должна сохранить в стеке содержимое тех регистров, которые она сама будет использовать, а перед возвратом в прерванную программу должна восстановить их значения.

 

ORG 0C003H; Задание адреса вектора прерывания

LJMP SUB; Переход на подпрограмму обработки

 

ORG 0C100H

SUB: PUSH PSW; Сохранение в стеке PSW

PUSH A; Сохранение аккумулятора

PUSH B; Сохранение B

PUSH DPL; Сохранение DPTR

PUSH DPH

MOV PSW,#1000B; Выбор банка регистров 1

; Обработка прерывания

POP DPH; Восстановление сохраненного

POP DPL

POP B

POP A

POP PSW; Восстановление PSW и номера регистрового банка

RETI; Возврат

Индивидуальное задание на лабораторную работу

1 Программу, заполнение участка РПД, начиная с определенного адреса 20Н, и длиной 5 байт произвольной константой.

2. Сохранить содержимое текущего банка регистров в резидентной памяти данных, начиная с адреса 12Н.

3. Сохранить содержимое текущего банка регистров в ВПД, начиная с адреса С200Н.

4. Сохранить в стеке участок памяти, начиная с адреса 20Н, и длиной 3 байта, а затем восстановить его по прежнему адресу.

5. Обменять содержимое регистров R1,R2 и R3 регистровых банков 1 и 2 между собой.

 

 

Ввод данных с тумблеров, подключенных к линиям 3 и 4 порта 1 и выдача их на светодиоды, подключенные к линиям 4 и 5 порта 3.

MOV A,P1; Ввод данных с линий порта 1

ANL A,#00011000B; Маскирование для выделения бит 3 и 4

RL A; Сдвиг аккумулятора влево

ANL P3,#11001111B; Сброс линий 4 и 5 порта 3

ORL Р3,А; Вывод данных в порт. При этом все линии, кроме 4 и 5 не

; меняют своего состояния

 

Воспроизведение звука через динамик, подключенный к P3.5.

SOUND EQU P3.5; Описание контакта Р3.5:

 

LOOP: SETB SOUND; Установка бита порта

MOV R0,#80H; Задержка

DJNZ R0,$

CLR SOUND; Сброс бита порта

MOV R0,#80H

DJNZ R0,$; Задержка

JMP LOOP

Задание 1

 

1. Индицировать светодиодами, какие из тумблеров включены.

2. Организовать попеременное мигание крайних и среднего светодиода.

3. Мигание всех светодиодов с уменьшающимся интервалом мигания.

4. Бегущий огонь с ускорением.

5. Организовать вывод двух тональных сигналов по очереди (двухтональная сирена).

6. Вывести на светодиоды номер включенного тумблера в двоичном коде.

7. Вывести на светодиоды количество импульсных сигналов от правого тумблера.

8. Реализовать режим, когда тональность сигнала зависит от количества включенных тумблеров.

9. Реализовать режим, когда правый тумблер является разрешением сигнала, а два других определяют его тональность.

Написать программу, вычисляющую булеву функцию трех переменных. Переменные X,V поступают на линии 3,4 порта 1, а W поступает на линию 2 порта 3 соответственно. Результат Y необходимо вывести на линию 4 порта 3:

10. Y=X Ç `V Ç W Ç (X ÈV)

11. Y=V È `X Ç W Ç (W ÈV)

12. Y=W Ç `V È (W Ç X ÈV)

13. Y=`W Ç `V È`X Ç (X ÈW)

14. Y=(`W Ç X ÈV) Ç `V È W

15. Y=`W Ç X È (V Ç`V)

 

 

После выхода из процедуры содержимое счетчика R7 пропорционально длительности импульса.

Для нормальной работы этой программы необходимо, чтобы обращение к ней производилось в моменты, когда на входе Т0 присутствует сигнал нулевого уровня. Верхний предел измеряемой длительности “положительного” импульса составит 255(1 + 2) мкс = 765 мкс. Этот предел может быть увеличен включением в цикл COUNT дополнительных команд NOP. Максимальная погрешность измерений 3 мкс.

1. Инициализация последовательного порта для 8-разрядного режима универсального асинхронного приемопередатчика (УАПП) и установка флага готовности передачи.

SPINIT: MOV SCON,#01010010B

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...