; Assembly PIC18 - Versione 0.20 - Marzo 2017 ; Copyright (c) 2016-2017, Vincenzo Villa ; Creative Commons | Attribuzione - Condividi allo stesso modo 4.0 Internazionale (CC BY-SA 4.0) ; Creative Commons | Attribution-Share Alike 4.0 Unported ; https://www.vincenzov.net/tutorial/PIC18/Assembly/variabili-2.htm ; Riferimento: fogli tecnici del PIC18F2XK20/4XK20 ; Stack software ; PIC18F26K20 / MPLAB X 3.55 / MPASM v5.72 #include "p18f26k20.inc" ; il file con la definizine dei registri specifici del PIC in uso stack UDATA stack_data res 0x100 ; un intero banco della RAM è riservato per lo stack (256 byte) variabili UDATA_ACS var1 res 1 ; variabili varie variabili2 UDATA var2 res 1 ; variabili varie main CODE 0x0000 ; vettore di reset, indirizzo 0. Il codice inizia qui movlw 0x11 ; Inizializziamo le variabili movwf var1 BANKSEL var2 movlw 0x22 movwf var2 lfsr FSR1, stack_data+0xFF ; inizializziamo lo stack software: FSR1 punta all'ultima cella dello stack movlw 0x55 movwf POSTDEC1 ; Salviamo WREG nello stack movff STATUS, POSTDEC1 ; Salviamo STATUS nello stack movff BSR, POSTDEC1 ; Salviamo BSR nello stack movff var1, POSTDEC1 ; Salviamo var1 nello stack movff var2, POSTDEC1 ; Salviamo var2 nello stack movlw 0x33 ; Cancelliamo il vecchio contenuto delle variabili movwf var1 movwf var2 movff PREINC1, var2 ; Recuperiamo var2 dallo stack movff PREINC1, var1 ; Recuperiamo var1 dallo stack movff PREINC1, BSR ; Recuperiamo BSR dallo stack movff PREINC1, STATUS ; Recuperiamo STATUS dallo stack movf PREINC1, W ; Recuperiamo WREG dallo stack sleep END ; Fine del file