Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MK2.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
281.42 Кб
Скачать

Пример программного вызова прерывания int0 посредством сброса бита p3.2

cseg at 0

jmp start

int0Isr:

org 03h

cpl P1.7

reti

start:

mov SCON, #50h

clr RI

orl PCON, #80h

mov TH1, #0F3h

;скорость обмена 9600 бод при тактовой частоте кристалла 24.0 МГц

orl TMOD, #20h

setb TR1

setb EX0

setb EA

setb IT0

again:

jnb RI, $

mov A, SBUF

clr RI

cjne A, #0dh, skip

setb TCON.1

skip:

jmp again

end

Пример вызова прерывания int0 путем установки флага ie0

  • Описати особливості булевого процесора КР1816ВЕ51. На мові асемблера КР1816ВЕ51 обчислити булеву функцію Q=X+/Y+/Z&/(X+W), де змінні X,Y,Z,W подаються на лінії 0,1,2,3 порта P1, а результат Q необхідно вивести на лінію 7 порта P1.

Микроконтроллер семейства 8051 имеют следующие аппаратные особенности:

  • внутреннее ОЗУ объемом 128 байт;

  • четыре двунаправленных побитно настраиваемых восьмиразрядных порта ввода-вывода;

  • два 16-разрядных таймера-счетчика;

  • встроенный тактовый генератор;

  • адресация 64 КБайт памяти программ и 64 Кбайт памяти данных;

  • две линии запросов на прерывание от внешних устройств;

  • интерфейс для последовательного обмена информацией с другими микроконтроллерами или персональными компьютерами.

Микроконтроллер 8751 снабжен УФ ПЗУ объемом 4 Кбайт.

Микроконтроллер выполнен на основе высокоуровневой n-МОН технологии. Через четыре программируемых параллельных порта ввода/вывода и один последовательный порт микроконтроллер взаимодействует с внешними устройствами. Основу структурной схемы (рис. 1) образует внутренняя двунаправленная8-битная шина, которая связывает между собой основные узлы и устройства микроконтроллера: резидентную память программ (RPM), резидентную память данных (RDM), арифметико-логическое устройство (ALU), блок регистров специальных функций, устройство управления (CU) и порты ввода/вывода (P0-P3).

Example 4.

Simple Combinatorial Output Variables.

;SET P2.2

4

(12)(23)(34)( 45)( 56)

MOV C,12

ANL C,23

ANL C,34

ANL C, 45

ANL C, 56

MOV P2.2,C

  • Реалізація функціональних вузлів на процесорі КР1816ВЕ51. Реалізувати програмно підпрограму затримки на 8 мілісекунд імпульсів, що поступають на вхід Р1.0, і видати їх на Р1.1. (Частота кварцового генератора f =12МГц)

Mit:

mov A,P1.0

mov TH0, #HIGH(-8000) ;Загрузить старший байт таймера

mov TL0, #LOW(-8000) ;Загрузить младший байт таймера

OjidanTimer:

jnb TF0, OjidanTimer ;Подождать пока не переполнится таймер

mov P1.1,A

SJMP Mit

delay_ms:

mov R1, #25

lrex:

mov R2, #18

lrin:

djnz R2, lrin

djnz R1, lrex

ret

delay_4ms:

lcall delay_ms

lcall delay_ms

lcall delay_ms

lcall delay_ms

ret

delay_200ms:

ret

impuls:

setb P1.0

nop nop nop nop

ret

end

Реалізація функціональних вузлів на процесорі КР1816ВЕ51. Реалізувати програмно 4 - розрядний лічильник з модулем лічби 10. Входи виводи порту P0, виходи виводи порту P2.

mov A,#0

SETB P0.0

Mit:

Mit0: jb P0.0, Mit0 ;Подождать начало импульса

Mit1: jnb P0.0, Mit1 ;Подождать конец импульса

INC A

MOV P2,A

CJNE A,#10,Mit

mov A,#0

SJMP Mit

Реалізація функціональних вузлів на процесорі КР1816ВЕ51. Реалізувати програму лічильника на n=127. Синхроні­зуючий сигнал поступає на вхід Р2.2, вхід установки нульового ста­ну на Р2.3. Розрядні виходи Р2.0, Р2.1, Р2.4 і т.д. Значення n подано на входи порту P1.

!!!!!!!!!!!!

mov A,#0

SETB P2.2

Mit:

Mit0: jb P2.2, Mit0 ;Подождать начало импульса

Mit1: jnb P2.2, Mit1 ;Подождать конец импульса

INC A

MOV P2,A

CJNE A,P1,Mit

mov A,#0

SJMP Mit

Реалізація функціональних вузлів на процесорі КР1816ВЕ51. Виміряти часовий інтервал між приходом двох імпульсів на входи Р2.2 і Р2.3 програмно. Результат в мікросекундах видати в порт P1.

mov TMOD,#00001001b

mov TH0, #0 ;Обнулить старший байт таймера

mov TL0, #0 ;Обнулить младший байт таймера

TstLog0: jnb P2.2, TstLog0 ;Подождать начало импульса

setb TR0 ;Включить измеритель ширины импульса

TstLog1: jnb P2.3, TstLog1 ;Подождать конец импульса

Clr TR0 ;Отключить измеритель ширины импульса

mov P1,TL0

Реалізація функціональних вузлів на процесорі КР1816ВЕ51. Реалізувати за допомогою таймерів/лічильників періодичний сигнал (меандр) з періодом 1 с на виводі Р1.0.!!!!!!!!!!!!!!

mov TMOD, #00000010b ;перевести таймер T0 во второй режим работы, а T1 - в нулевой

mov TMOD,#2 ;перевести таймер T0 во второй режим работы, а T1 - в нулевой

mov TH0, #HIGH(-500000) ;Загрузить старший байт таймера

mov TL0, #LOW(500000) ;Загрузить младший байт таймера

OjidanTimer:

jnb TF0, OjidanTimer ;Подождать пока не переполнится таймер

cpl P1.0

;Проинвертировать сигнал на шестой ножке второго порта и

sjmp OjidanTimer ;снова перейти к ожиданию окончания временного интервала

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]