Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Desktop / Отчет5 вар.doc
Скачиваний:
14
Добавлен:
06.02.2015
Размер:
140.29 Кб
Скачать

Лабораторная работа 4 Исследование работы сторожевого таймера

Цель работы: исследование режимов работы сторожевого таймера микроконтроллера (МК)ADuC812.

Текст программы.

$MOD812 ;присоединение модуля символов АDuC812

LED EQU P3.4 ;биту P3.4 порта Р3 присваивается имя LED (светодиод VD)

ERROR EQU F0 ;флаг ERROR используется для моделирования ошибочной

;команды, при этом нарушается нормальный ход выполнения

;программы и управление передается на "ошибочную" команду

;--------------------------------------------------------------------------------------------------------------

CSEG ;сегмент памяти программ

ORG 0000h ;начальный адрес сегмента 0000Н

JMP MAIN ;переход к главной программе

;-----------------------------------------------------------------------------------------------------

ORG 03h ;вектор ПРВ INT0. Сюда управление передается

;после нажатия кнопки Е0 на панели инструментов.

SETB ERROR ;установить флаг ERROR, тем самым моделируется

;состояние ошибки работы программы.

RETI ;возврат из ПП обработки ПРВ INT0

;============================================================

;Главная программа

ORG 004Bh

MAIN:

SETB IT0 ;установить тип внешнего ПРВ INT0 по фронту

SETB EA ;разрешить ПРВ

SETB EX0 ;разрешить внешнее ПРВ INT0

CLR ERROR ;сброс бита ошибки ERROR

; Установить параметры WDT

MOV WDCON, #0E0h ;WDCON=E0h=11100000 - период WDT равен 2048 мс

SETB WDE ;разрешить работу WDT

;После команды “SETB WDE” таймер начинает отсчет времени. При нормальной работе ;программы он должен постоянно перезагружаться через время, не превышающее 2048 мс. ;Если этого не происходит, то WDT выполнит перезагрузку программы и она начнет ;выполняться с нулевого адреса, т.е. с команды “JMP MAIN” (см. листинг программы).

;Цикл FLASH имитирует нормальный режим работы программы, при этом VD мигает.

;Длительность цикла равнее примерно 100 мс, что меньше периода WDT (2048 мс), след.

;WDT успевает перезагружаться.

FLASH: CPL LED ;переключить VD

CALL DELAY ;выдержка времени 100 мс

SETB WDR1 ;обновить WDT. Биты WDR1 и WDR2

SETB WDR2 ;должны быть установлены в указанном порядке

JNB ERROR, FLASH ;переход к циклу FLASH, если флаг ERROR = 0

; Сюда управление передается после возврата из ПП обработки ПРВ от INT0,

;в которой устанавливается флаг ERROR. Этот флаг, имитируя ошибку, позволит

;выйти из рабочего цикла FLASH на бесконечный цикл (команда JMP $).

; Эта команда имитирует фрагмент программы, на которую из рабочего цикла FLASH

;из-за ошибки было передано управление. Этот фрагмент программы выполняется за время,

;превышающее период WDT в 2048 мс, след., произойдет переполнение WDT, после чего он

;перезагрузит программу и она начнет выполняться с нулевого адреса.

JMP $

;--------------------------------------------------------------------------

;Подпрограмма DELAY, дающая задержку времени 100 мс

DELAY:

MOV R7, #200

DLY1: MOV R6, #230

DJNZ R6, $ ;230*2.17 мкс = 500 мкс

DJNZ R7, DLY1 ;200*500 мкс = 100 мс

RET

;--------------------------------------------------------------------

END