Files
cctl/cctl-rf/start.asm
T

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