Mijn oplossing voor het uitvoeren van zachte reset in 8051, please advise

S

seemanta

Guest
Hoi,
In mijn systeem, ik moet een zachte reset uit te voeren voor een bepaalde aandoening binnen een interrupt handler.Ik heb meerdere behandelaars onderbreken, dus ik heb geen idee tot hoeveel niveaus alle handlers onderbreken zijn genest.

Maar op alle kosten, moet ik de zachte reset uit te voeren en mijn systeem opnieuw op te starten alsof het net is ingeschakeld.

Mijn oplossing is als volgt:
Code:ORG 0000H

LJMP Main;ORG 0003H; / INT0 ISR

LCALL MY_ISR

RETIMAIN: ...

...

...MY_ISR: ...

...

...

MOV 08, # 00H

MOV 09, # 00H

RET

 
Hoi,
Als het in het vervolg met uw eerdere draad van Power Down modus van CPU, hoef je niet te doen meer soft reset.Na de interrupt service zoals gebruikelijk, zal je controller direct naar de instructie net na de slaapstand instructie en al uw RAM-geheugen en registers worden bewaard in tact.Je kunt gewoon gebruik van een NOP op deze plaats, want ergens wordt vermeld dat de instructie niet mag worden een die schrijft in een geheugenlocatie.Het is in feite een tijd overslaan operatie van de controller.

Als het voor een ander doel, dan kunt u POP twee bytes van de stack en PUSH in de twee byte-adres waar u naartoe wilt springen, de stengel, in de interrupt routine.Maar in dit geval, zal deze overschakeling plaatsvinden elke keer deze interrupt optreedt.

Groeten,
Laktronics

 
Nee het is niet over de macht naar beneden.Ik moet een zachte reset uit te voeren en dat ook iedere keer Ik noem dit onderbreken.

Speaking of power down mode, zoals in het datablad van AT89S52, ik moet alleen een externe interrupt naar buiten te komen, toch?

Maar mijn code niet werkt, om wat voor reden en ik ben niet in staat uit te leggen waarom.
Misschien zal ik na mijn code in een aparte thread als ik niet in staat ben om deze zelf op te lossen.

groeten,
Seemanta

 
Hoi,
U kunt dan een soft reset uitvoeren door POPING twee bytes van de stack en duwen op de twee bytes (ik veronderstel lage adres gevolgd door een hoge-adres?) Van Power-On Main routine aan de steel in de interrupt routine.Door dit te doen, kunt u ongewenste vullen van de stengel te voorkomen met twee ongebruikte adres bytes elke keer dat je deze onderbreken.Na het onderbreken, wordt u automatisch naar de Reset-start-up routine met deze regeling.

Ja, u kunt komen van de slaapstand in 89S52 via een externe interrupt, ik dacht dat ik heb gelezen je zeggen dat de interrupt regeling werkt prima.Door de manier, moet u niet gereed een looping routine onmiddellijk na een slaapstand instructie, zoals ik Rember gezien te hebben wat waar, want na de uitvoering van de interrupt, zal het programma naar de instructie net na de slaapstand instructie en zal simpelweg vast komen te zitten daar.Je kan er een NOP, gevolgd door een ander programma, of een sprong naar een dergelijk programma dat u wilt na slaapstand te voeren is voorbij.Het is ook raadzaam om geen opdracht te formuleren voor een geheugen te schrijven of I / O schrijf onmiddellijk na de slaapstand instructie, zoals ik vaag herinneren.Welk probleem wordt u geconfronteerd met de slaapstand?
Groeten,
Laktronics

 

Welcome to EDABoard.com

Sponsor

Back
Top