Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shamr_voprosy.docx
Скачиваний:
6
Добавлен:
26.06.2024
Размер:
161.73 Кб
Скачать

1. Настройка таймера 1 в режиме захвата/сравнения:

Установите режим работы таймера 1 в режим 12 (захват значения на переднем фронте) или режим 13 (захват значения на заднем фронте). Выбор режима зависит от того, на каком фронте импульса вы хотите измерять ширину.

SETB TMOD.4 ; Установите бит T1M1 в TMOD для выбора режима 12 (захват переднего фронта)

; или

SETB TMOD.5 ; Установите бит T1M1 в TMOD для выбора режима 13 (захват заднего фронта)

2. Включение прерываний для захвата значения:

Установите биты TR1 и EX1 в регистре TCON для включения таймера 1 и разрешения прерываний.

SETB TR1 ; Запустите таймер 1, установив бит TR1 в TCON

SETB IE.3 ; Разрешите прерывания от внешнего источника 1, установив бит EX1 в IE

3. Настройка обработчика прерывания:

Создайте обработчик прерывания для внешнего источника 1 (прерывания от таймера 1) и выполните необходимые действия, чтобы измерить ширину импульса. В обработчике вы можете считать значения таймера 1 и сохранить их для последующего вычисления ширины.

TIMER1_INTERRUPT:

; Ваш код обработчика прерывания

; Считайте значения таймера 1 (TH1 и TL1) и выполните необходимые действия

RETI ; Возврат из прерывания

4. Главный цикл программы:

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

MAIN_LOOP:

; Ваши команды и задачи

SJMP MAIN_LOOP ; Перейти к главному циклу программы

После выполнения этих шагов таймер 1 будет захватывать значения времени при изменении импульса на соответствующем входе. Вы можете использовать считанные значения таймера 1 для вычисления ширины импульса в соответствии с выбранным режимом захвата (передний фронт или задний фронт).

  1. Организация прерываний в микроконтроллере mcs-51.

Микроконтроллер MCS-51 поддерживает систему прерываний, которая позволяет обрабатывать внешние события в реальном времени и реагировать на них незамедлительно. Прерывания позволяют перехватывать выполнение основной программы и выполнять обработку важных событий, таких как внешние сигналы, таймеры, ввод/вывод и другие.

Вот основные шаги по организации прерываний в микроконтроллере MCS-51:

1. Настройка регистров:

Некоторые регистры микроконтроллера MCS-51 отвечают за систему прерываний. В частности, регистр IE (Interrupt Enable) отвечает за разрешение и запрет прерываний от различных источников, а регистр IP (Interrupt Priority) отвечает за приоритеты прерываний.

; Настройка регистра IE для разрешения прерываний

SETB IE.7 ; Разрешить глобальные прерывания (EA - Enable All)

SETB IE.6 ; Разрешить прерывания от таймера 0 (ET0)

SETB IE.3 ; Разрешить прерывания от внешнего источника 1 (ET1)

; ... и другие необходимые настройки прерываний

; Настройка регистра IP для установки приоритетов прерываний

CLR IP.0 ; Установить низкий приоритет для прерывания от таймера 0 (IP.0 = 0)

SETB IP.1 ; Установить высокий приоритет для прерывания от внешнего источника 1 (IP.1 = 1)

; ... и другие необходимые настройки приоритетов прерываний

2. Написание обработчиков прерываний:

Для каждого источника прерывания необходимо написать соответствующий обработчик прерывания. Обработчик прерывания - это функция, которая выполняется при возникновении прерывания. Внутри обработчика прерывания вы можете выполнить необходимые действия, связанные с обработкой прерывания.

; Обработчик прерывания от таймера 0

TIMER0_INTERRUPT:

; Ваш код обработки прерывания от таймера 0

; ...

RETI ; Возврат из прерывания

; Обработчик прерывания от внешнего источника 1

EXTERNAL1_INTERRUPT:

; Ваш код обработки прерывания от внешнего источника 1

; ...

RETI ; Возврат из прерывания

; ... и другие обработчики прерываний