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%)]
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
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
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
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
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
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 ?
Arco
Special Member
Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
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)
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.
