ik heb een vraag:

Het gaat over de ISR routine (pic12f675)
in de PDF file staat een voorbeeld EXAMPLE 9-2 hoe je de status en w registers moet saven ,en weer terug plaatsen.
Bij de uitleg staat dat het W_TEMP register in zowel bank0 als bank1 moet
worden gedefinieerd.
Hoe kan ik een register (W_TEMP) in beide banken definieren ???

Ik gebruik MPLAB 8.92 en assambly code.

voor W_TEMP een adres tussen 0x70 en 0x7F kiezen. Die 16 registers zijn bank-onafhankelijk (maakt dus niet uit of je in BANK0 of BANK1 zit)

Zo dus:

`
_w		EQU	0x7E		; Save area for 'W' register
_status		EQU	0x7F		; Save area for 'STATUS' register

INTHANDLER	movwf	_w		; Save W and STATUS
		movf	STATUS,W
		movwf	_status
....
....
int_done	movf	_status,w	; Restore W and STATUS
		movwf	STATUS
		swapf	_w,F
		swapf	_w,W
		retfie

[Bericht gewijzigd door JoWi op (53%)]

De PIC12F675 is een oud beestje, en had nog niet zo 'veel' geheugen... :)
Je moet tussen 0x20 en 0x5F zitten...

Als ik het doe zoals het voorbeeld van joWi:

_w EQU 0x7E ; Save area for 'W' register
_status EQU 0x7F ; Save area for 'STATUS' register

krijg ik de volgende melding.

Invalid RAM location specified. PS het gaat over PIC12F675

Staat in mijn datasheetblad: 0x60 tot 0x7F is 'unimplemented'... (dus foutmelding is correct)

ook staat in de text pic12f675.pdf file

Example 9-2 stores and restores the STATUS and W
registers. The user register, W_TEMP, must be defined
in both banks and must be defined at the same offset
from the bank base address (i.e., W_TEMP is defined
at 0x20 in Bank 0 and it must also be defined at 0xA0
in Bank 1). The user register, STATUS_TEMP, must be
defined in Bank 0. The Example 9-2:

hoe doe je dat ?

alvast bedankt voor jullie eerdere reacties

Dat hoeft niet, gaat automatisch goed...

vraag me dan toch af hoe je dat:
in de text van voorbeeld 9-2 programmeer-technisch zou moeten doen .
Dit zonder foutmelding dat W_Temp 2x wordt gebruikt ?

De geheugenbank 0x20 t/m 0x5F is ook bereikbaar uit de andere bank, daar hoef je niets voor te doen in assembly.
(geheugenplaats 0x20 is 0xA0, dus er valt niks te definieeren of toe te wijzen)

bedankt voor jullie reacties.

was wel nieuwsgierig hoe ze dat voorbeeld zouden programmeren.

groeten.

Op dinsdag 12 november 2024 15:52:19 schreef Arco:
De PIC12F675 is een oud beestje, en had nog niet zo 'veel' geheugen... :)
Je moet tussen 0x20 en 0x5F zitten...
[bijlage]

Yep, niet in het datasheet gekeken, de meeste oudjes hadden wat meer geheugen.