Proteus en debugging onderbreken?

S

Sphinx

Guest
Hi All,Ik ben begonnen met het leren proteus.
Ik schreef een eenvoudig programma om een vertraging van circa.100uS
met behulp van onderbreken.

'Xtal = 12Mhz
Org 0000
sjmp start
Org 0bh
sjmp inter

start:
mov P1, # 0
mov IE, # 10000010b "Enable interrupt op Timer 0 overflow
mov TMOD, # 00000010b 'Kies Timer0 Herlaad modus
mov TH0, # 155 "Maak de timer begint bij 155 (255-155 = 100us)
mov TL0, # 155
SETB TR0 'Uitvoeren de timer
SETB p1.0
lus: sjmp lus

onder: 'Onderbreek dienst

cpl p1.0 'Toggle p1.0
RETI
EINDE

Ik gesimuleerd met behulp van dit programma Proteus, het werkte goed
Ik attatched een LogicAnalyzer aan het circuit in de proteus
zij geven correcte resultaten.

Maar toen ik geëxecuteerd de debuger in proteus en beginnen op te sporen in
de code (F11) Ik heb gemerkt dat het niet uitvoeren van het onderbreken na
de timer0 overflow en de p1.0 niet veranderen, hoewel zij hebben gewerkt
gedaan in de simulatie!

Wat is het probleem?

Bedankt

 
Cross-posten is niet toegestaan.
Een bericht / onderwerp.
Andere is verwijderd!erickki

 
Farao van Egypte,

Nr. elke bug.Het probleem is ....onderbreekt zijn zeer moeilijk te traceren met behulp van stap voor stap voor veel emulators.En vergeet niet Proteus is een software-simulator.

Laten we zeggen (hoewel je niet vermeld over welke micro u) u werkt met 8051 kern.

Het programma is eenvoudig:
uw assemblage codesets timer0 interrupt vlag en herladen registers, dan wist de haven p1.0 en tenslotte gaat in een lus voor eeuwig.
Elke 100us timerprogramma overbelasting en een Timer0 interrupt wordt gegenereerd.
De interrupt routine doen het complement van de vorige stand van p1.0.Het resultaat moet een vierkante golf op termijn van 200us (5KHz).

Als u wilt zien onderbreken tenuitvoerleggingsstaat, gebruik breekpunten.

Dus, gebruik CTRL F12, de cpu broncode dialoogvenster geopend.

Nu klikt u op over de lijn "cpl p1.0".Dit is de eerste regel van uw dienst interrupt routine.Klik F9; een rode controleposten moeten verscheen aan de linkerkant van bovenstaande code lijn.

Tenslotte drukt u op F12.Uw interrupt routine moeten worden opgespoord, nu en u kunt het meten van de tijd onderbreken over de stand bar.

Ik heb geen test uw code, maar als het werkt, de bovenstaande procedure moet u op te sporen onderbreken.

Hoop dat dit helpt in zekere zin

james

 
Thanks very much

Ik gebruik 89C2051 uC

Dit me helpen.

De tijd die ons 102

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Lachten" border="0" />
Thanks again,
Dag
AMR

 

Welcome to EDABoard.com

Sponsor

Back
Top