135 lines
3.2 KiB
NASM
135 lines
3.2 KiB
NASM
; RF config is interleaved witht the interupt vectors to save space.
|
|
; To select crystal frequency set 1 or 0
|
|
CRYSTAL_26_MHZ=1
|
|
; Remember to change in main.c also.
|
|
;
|
|
.globl __start__stack
|
|
;--------------------------------------------------------
|
|
; Stack segment in internal ram
|
|
;--------------------------------------------------------
|
|
.area SSEG (DATA)
|
|
__start__stack:
|
|
.ds 1
|
|
|
|
;--------------------------------------------------------
|
|
; interrupt vector
|
|
;--------------------------------------------------------
|
|
.area VECTOR (CODE)
|
|
.globl __interrupt_vect
|
|
__interrupt_vect:
|
|
ljmp __sdcc_gsinit_startup
|
|
|
|
jnb psw.1, 00001$ ; RFTXRX if F1=1 call bootload isr
|
|
ljmp _rftxrx_isr ;
|
|
.ds 2
|
|
ljmp #(0x400+0x0B) ; ADC
|
|
00001$:
|
|
ljmp #(0x400+0x03) ; User code RFTXRX usr
|
|
.ds 2
|
|
ljmp #(0x400+0x13) ; URX0
|
|
.db 0xD3 ; SYNC1
|
|
.db 0x91 ; SYNC0
|
|
.db 0xFF ; PKTLEN
|
|
.db 0x05 ; PKTCTRL1
|
|
.db 0x45 ; PKTCTRL0
|
|
ljmp #(0x400+0x1B) ; URX1
|
|
.db 0xFE ; ADDR
|
|
.db 0x00 ; CHANNR
|
|
.db 0x0C ; FSCTRL1
|
|
.db 0x00 ; FSCTRL0
|
|
.if CRYSTAL_26_MHZ
|
|
.db 0x21 ; FREQ2
|
|
.else
|
|
.db 0x24 ; FREQ2
|
|
.endif
|
|
ljmp #(0x400+0x23) ; ENC
|
|
.if CRYSTAL_26_MHZ
|
|
.db 0x65 ; FREQ1
|
|
.db 0x6A ; FREQ0
|
|
.db 0x2D ; MDMCFG4
|
|
.db 0x3B ; MDMCFG3
|
|
.else
|
|
.db 0x2D ; FREQ1
|
|
.db 0xDD ; FREQ0
|
|
.db 0x1D ; MDMCFG4
|
|
.db 0x55 ; MDMCFG3
|
|
.endif
|
|
.db 0x13 ; MDMCFG2
|
|
ljmp #(0x400+0x2B) ; ST
|
|
.db 0x22 ; MDMCFG1
|
|
.db 0xF8 ; MDMCFG0
|
|
.db 0x62 ; DEVIATN
|
|
.db 0x07 ; MCSM2
|
|
.db 0x30 ; MCSM1
|
|
ljmp #(0x400+0x33) ; P2INT
|
|
.db 0x18 ; MCSM0
|
|
.db 0x1D ; FOCCFG
|
|
.db 0x1C ; BSCFG
|
|
.db 0xC7 ; AGCCTRL2
|
|
.db 0x00 ; AGCCTRL1
|
|
ljmp #(0x400+0x3B) ; UTX0
|
|
.db 0xB0 ; AGCCTRL0
|
|
.db 0xB6 ; FREND1
|
|
.db 0x10 ; FREND0
|
|
.db 0xEA ; FSCAL3
|
|
.db 0x2A ; FSCAL2
|
|
ljmp #(0x400+0x43) ; DMA
|
|
.db 0x00 ; FSCAL1
|
|
.db 0x1F ; FSCAL0
|
|
.ds 3
|
|
ljmp #(0x400+0x4B) ; T1
|
|
.ds 5
|
|
ljmp #(0x400+0x53) ; T2
|
|
.ds 5
|
|
ljmp #(0x400+0x5B) ; T3
|
|
.ds 5
|
|
ljmp #(0x400+0x63) ; T4
|
|
.ds 5
|
|
ljmp #(0x400+0x6B) ; P0INT
|
|
.ds 5
|
|
ljmp #(0x400+0x73) ; UTX1
|
|
.ds 5
|
|
ljmp #(0x400+0x7B) ; P1INT
|
|
.ds 5
|
|
ljmp #(0x400+0x83) ; RF
|
|
.ds 5
|
|
ljmp #(0x400+0x8B) ; WDT
|
|
|
|
|
|
;--------------------------------------------------------
|
|
; external initialized ram data
|
|
;--------------------------------------------------------
|
|
.area XISEG (XDATA)
|
|
.area HOME (CODE)
|
|
.area GSINIT0 (CODE)
|
|
.area GSINIT1 (CODE)
|
|
.area GSINIT2 (CODE)
|
|
.area GSINIT3 (CODE)
|
|
.area GSINIT4 (CODE)
|
|
.area GSINIT5 (CODE)
|
|
.area GSINIT (CODE)
|
|
.area GSFINAL (CODE)
|
|
.area CSEG (CODE)
|
|
|
|
;--------------------------------------------------------
|
|
; global & static initialisations
|
|
;--------------------------------------------------------
|
|
|
|
.area GSINIT (CODE)
|
|
.globl __sdcc_gsinit_startup
|
|
.globl __sdcc_program_startup
|
|
.globl __start__stack
|
|
.globl __mcs51_genXINIT
|
|
.globl __mcs51_genXRAMCLEAR
|
|
.globl __mcs51_genRAMCLEAR
|
|
.area GSFINAL (CODE)
|
|
ljmp __sdcc_program_startup
|
|
;--------------------------------------------------------
|
|
; Home
|
|
;--------------------------------------------------------
|
|
.area HOME (CODE)
|
|
.area HOME (CODE)
|
|
__sdcc_program_startup:
|
|
acall _bootloader_main
|
|
; return from main will lock up
|