[an error occurred while processing this directive]
Конкретно для at89s8252 (или любого другого со встроенным WDT) самый надежный способ устроить аппаратный RESET - запретить прерывания, запустить WDT и необслуживая его устроить пустой цикл for(;;) {}
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Abc123 21 октября 2002 г. 11:26
В ответ на: Ответ: отправлено Andy Mozzhevilov 21 октября 2002 г. 07:09

Если это невозможно или не устраивает задержка на срабатывание WDT,
тогда:
MOV IE, #0
; остановить все таймеры
; восстановить критичные SFR в состояние "ON RESET"
; выполнить
> mov a,#0
> push a
> push a
> reti
; но не один раз, а столько, какова может быть
; максимальная глубина вложенности прерываний
; ( я на всякий случай всегда делаю 8 раз )
mov a,#8
Flush0:
mov dptr,#Flush1
push dpl
push dph
reti
Flush1:
djnz acc, Flush0
extrn _restart
ljmp _restart

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru