Får jag lov att presentera min första asm-kod på 20 år!

Kod: Markera allt
;************************************************************
processor 18f1320
#include <p18f1320.inc>
;************************************************************
; TFTUVbox
;
; Använder interna oscillatorn (8MHz.)
; Knappar --> AN5 (RB1)
; Öppet lock --> RB7
; Mäta ljus --> AN4 (RB0)
; Ljud <-- RB3
; Styra UV <-- RB4
; Styra TFT <-- RB6
;
;************************************************************
; CONFIG SETTINGS
CONFIG OSC = INTIO2
CONFIG PWRT = ON, BOR = OFF, WDT = OFF, MCLRE = ON
CONFIG STVR = OFF, LVP = OFF, DEBUG = OFF, CP0 = ON
CONFIG CP1 = ON, CPB = ON, CPD = ON, WRT0 = ON
CONFIG WRT1 = ON, WRTB = ON, WRTC = ON, WRTD = ON
CONFIG EBTR0 = ON, EBTR1 = ON, EBTRB = OFF
;************************************************************
; Defines och EUQ
; DISPLAY 12x2
#define D4 LATA, 0
#define D5 LATA, 1
#define D6 LATA, 2
#define D7 LATA, 3
#define RS LATA, 4
#define E LATA,6
; BELYSNING
#define UV_rela PORTB, 4
#define TFT_rela PORTB, 6
; ENCODER
#define Encoder1a PORTB, 5
#define Encoder1b PORTB, 2
;************************************************************
Boot CODE h'0000'
goto Start
;************************************************************
Main CODE
Start
; OSCILLATOR FREQ 8MHz
bcf OSCCON, IDLEN
bsf OSCCON, IRCF2
bsf OSCCON, IRCF1
bsf OSCCON, IRCF0
bsf OSCCON, SCS1
; IN/UTGÅNGAR
movlw b'10000000'
movwf TRISA
movlw b'10100111'
movwf TRISB
; NOLLSTÄLL PORTARNA...
clrf PORTA
clrf PORTB
; INITIERA INTERRUPT
**Plockade bort lite initieringar här**
;************************************************************
; INITIERA DISPLAYEN
lcd_start CODE
bcf RS
movlw b'00000011'
movwf LATA
call delay_1ms
; movlw b'00000011'
; movwf LATA
;************************************************************
loop
goto loop ;Igen!
;************************************************************
; Delay1ms -- 1ms = 2000 cycles @ 8MHz. <-- Ska bli 1ms, koden stämmer inte nu.
dly_vars udata_acs
CNT1 res 1
CNT2 res 1
CNT3 res 1
dly_code CODE
delay_1ms
; return
;
movlw 0x01
movwf CNT1
movlw 0x01
movwf CNT2
movlw 0x10
movwf CNT3
dly_loop
decfsz CNT2
goto dly_loop
movlw 0x08
movwf CNT2
; decfsz CNT1
; goto dly_loop
; decfsz CNT3
; goto dly_loop
return
end
När jag kör koden i MPLAB SIM och har med de sista fyra ; så får jag:
CORE-E0002: Stack under flow error occurred from instruction at 0x0000c4
Plockar jag bort de sista ; så får jag istället:
CORE-E0001: Stack over flow error occurred from instruction at 0x0000be
Litet klipp ur .lst-filen när jag har med de sista ;
Kod: Markera allt
; decfsz CNT1
; goto dly_loop
; decfsz CNT3
; goto dly_loop
0000c4 0012 RETURN 0x0 return
