Моє рішення виконуючий м'який скидання в 8051, будь ласка, повідомте

S

seemanta

Guest
Привіт,
У моїй системі, необхідно виконати м'який скидання особливого стану всередині обробника переривань.У мене є кілька обробників переривань тому я поняття не маю, до рівнів, скільки всі обробники переривань були вкладені.

Тим не менш, за всяку ціну, я повинен виконати м'який скидання і перезапуск моїй системі як якби вона була просто включена.

Моє рішення полягає в наступному:
Код:ORG 0000H

LJMP Main;ORG 0003h; / INT0 ISR

LCALL MY_ISR

RETIГОЛОВНА: ...

...

...MY_ISR: ...

...

...

MOV 08, # 00H

MOV 09, # 00H

RET

 
Привіт,
Якщо він в продовження ваших попередніх нитки Power Down Mode процесорів, вам не доведеться робити будь-який більш м'який скидання.Після обслуговування переривання, як завжди, ваш контролер буде безпосередньо перейти до інструкції просто дотримуючись інструкції сну і всі оперативної пам'яті і регістрів буде зберігатися в такт.Ви можете просто використовувати одну NOP на цьому місці, тому що де-то згадав, що викладання не повинно бути таким, щоб запис в комірці пам'яті.Вона буде в дійсності буде час пропуску операції контролера.

Якщо це для інших цілей, можна вискочити два байти з стека і натисніть на два байти адресу, де ви хочете, щоб перейти до, до стебла, в рамках переривання.Але в даному випадку, це перемикання буде відбуватися кожного разу це відбувається переривання.

Привіт,
Laktronics

 
Ні, не щодо відключення живлення.Мені необхідно виконати м'який скидання і це теж кожен раз я називаю це переривання.

Говорячи про режим Power Down, відповідно до даних листа AT89S52, мені просто потрібно зовнішнє переривання вийти, чи не так?

Але мій код не працює, чомусь і я не можу пояснити чому.
Може бути, я буду посаду мого коду в окремому потоці, якщо я не в змозі виправити це сам.

привіт,
Seemanta

 
Привіт,
Ви можете здійснювати м'який скидання від раптового два байти з стека і Натискання на два байти (Я вважаю, нижній адреса потім верхній адресу?) Потужності-на-Майні звичайні до стебла, в рамках переривання.Роблячи таким чином, ви можете уникнути небажаних заповнення стебла з двома неіснуючу адресу байта кожен раз, коли Ви отримаєте це переривання.Після перервати, ви автоматично перейде до початку Скинути-до звичайної з цією схемою.

Так, ви можете вийти з режиму сну в 89S52 через зовнішнє переривання, я думала, що я прочитав ви говорите про те, що переривання схема працює прекрасно.До речі, ви не повинні покласти будь-який звичайний цикл відразу ж після сну інструкцію, як я Rember побачивши це деяким, де в силу після виконання переривання, програма буде йти в інструкції просто дотримуючись інструкції сну і просто застрягти там.Ви можете задати NOP пішли будь-якої іншої програми, або перейти до такої програми, яку ви хочете виконати після сплячого режиму закінчується.Крім того, не рекомендується покласти інструкцію для запису в пам'ять або I / O писати відразу після сну інструкцію, як я смутно пам'ятаю.Які проблеми ви зустрічаєтеся з режимом сну?
Привіт,
Laktronics

 

Welcome to EDABoard.com

Sponsor

Back
Top