Files
seppl a3ccaae6cc ..
2025-06-30 20:58:09 +02:00

257 lines
6.9 KiB
NASM

;--------------------------------------------------------
; File Created by SDCC : free open source ISO C Compiler
; Version 4.5.0 #15242 (Linux)
;--------------------------------------------------------
.module main
;--------------------------------------------------------
; Public variables in this module
;--------------------------------------------------------
.globl _main
.globl _RTC_ITConfig
.globl _RTC_WakeUpCmd
.globl _RTC_SetWakeUpCounter
.globl _RTC_WakeUpClockConfig
.globl _GPIO_ResetBits
.globl _GPIO_SetBits
.globl _GPIO_Init
.globl _CLK_PeripheralClockConfig
.globl _CLK_RTCClockConfig
.globl _CLK_SYSCLKSourceSwitchCmd
.globl _CLK_SYSCLKDivConfig
.globl _CLK_GetSYSCLKSource
.globl _CLK_SYSCLKSourceConfig
;--------------------------------------------------------
; ram data
;--------------------------------------------------------
.area DATA
;--------------------------------------------------------
; ram data
;--------------------------------------------------------
.area INITIALIZED
;--------------------------------------------------------
; Stack segment in internal ram
;--------------------------------------------------------
.area SSEG
__start__stack:
.ds 1
;--------------------------------------------------------
; absolute external ram data
;--------------------------------------------------------
.area DABS (ABS)
; default segment ordering for linker
.area HOME
.area GSINIT
.area GSFINAL
.area CONST
.area INITIALIZER
.area CODE
;--------------------------------------------------------
; interrupt vector
;--------------------------------------------------------
.area HOME
__interrupt_vect:
int s_GSINIT ; reset
int _TRAP_IRQHandler ; trap
int 0x000000 ; int0
int _FLASH_IRQHandler ; int1
int _DMA1_CHANNEL0_1_IRQHandler ; int2
int _DMA1_CHANNEL2_3_IRQHandler ; int3
int _RTC_CSSLSE_IRQHandler ; int4
int _EXTIE_F_PVD_IRQHandler ; int5
int _EXTIB_G_IRQHandler ; int6
int _EXTID_H_IRQHandler ; int7
int _EXTI0_IRQHandler ; int8
int _EXTI1_IRQHandler ; int9
int _EXTI2_IRQHandler ; int10
int _EXTI3_IRQHandler ; int11
int _EXTI4_IRQHandler ; int12
int _EXTI5_IRQHandler ; int13
int _EXTI6_IRQHandler ; int14
int _EXTI7_IRQHandler ; int15
int _LCD_AES_IRQHandler ; int16
int _SWITCH_CSS_BREAK_DAC_IRQHandler ; int17
int _ADC1_COMP_IRQHandler ; int18
int _TIM2_UPD_OVF_TRG_BRK_USART2_TX_IRQHandler ; int19
int _TIM2_CC_USART2_RX_IRQHandler ; int20
int _TIM3_UPD_OVF_TRG_BRK_USART3_TX_IRQHandler ; int21
int _TIM3_CC_USART3_RX_IRQHandler ; int22
int _TIM1_UPD_OVF_TRG_COM_IRQHandler ; int23
int _TIM1_CC_IRQHandler ; int24
int _TIM4_UPD_OVF_TRG_IRQHandler ; int25
int _SPI1_IRQHandler ; int26
int _USART1_TX_TIM5_UPD_OVF_TRG_BRK_IRQHandler ; int27
int _USART1_RX_TIM5_CC_IRQHandler ; int28
int _I2C1_SPI2_IRQHandler ; int29
;--------------------------------------------------------
; global & static initialisations
;--------------------------------------------------------
.area HOME
.area GSINIT
.area GSFINAL
.area GSINIT
call ___sdcc_external_startup
tnz a
jreq __sdcc_init_data
jp __sdcc_program_startup
__sdcc_init_data:
; stm8_genXINIT() start
ldw x, #l_DATA
jreq 00002$
00001$:
clr (s_DATA - 1, x)
decw x
jrne 00001$
00002$:
ldw x, #l_INITIALIZER
jreq 00004$
00003$:
ld a, (s_INITIALIZER - 1, x)
ld (s_INITIALIZED - 1, x), a
decw x
jrne 00003$
00004$:
; stm8_genXINIT() end
.area GSFINAL
jp __sdcc_program_startup
;--------------------------------------------------------
; Home
;--------------------------------------------------------
.area HOME
.area HOME
__sdcc_program_startup:
jp _main
; return from main will return to caller
;--------------------------------------------------------
; code
;--------------------------------------------------------
.area CODE
; ../src/main.c: 28: void main(void)
; -----------------------------------------
; function main
; -----------------------------------------
_main:
; ../src/main.c: 30: GPIO_Init(GPIOB, GPIO_Pin_2, GPIO_Mode_Out_PP_Low_Fast);
push #0xe0
ld a, #0x04
ldw x, #0x5005
call _GPIO_Init
; ../src/main.c: 33: CLK_Config();
call _CLK_Config
; ../src/main.c: 34: PWR_Config();
call _PWR_Config
; ../src/main.c: 35: Led2_Init;
push #0xe0
ld a, #0x04
ldw x, #0x5005
call _GPIO_Init
; ../src/main.c: 36: Mono_Init;
push #0xd0
ld a, #0x01
ldw x, #0x5005
call _GPIO_Init
; ../src/main.c: 37: blink2();
call _blink2
; ../src/main.c: 41: CLK_RTCClockConfig(CLK_RTCCLKSource_LSE, CLK_RTCCLKDiv_1);
push #0x00
ld a, #0x10
call _CLK_RTCClockConfig
; ../src/main.c: 42: CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE);
push #0x01
ld a, #0x12
call _CLK_PeripheralClockConfig
; ../src/main.c: 45: RTC_WakeUpCmd(DISABLE);
clr a
call _RTC_WakeUpCmd
; ../src/main.c: 46: RTC_WakeUpClockConfig(RTC_WakeUpClock_RTCCLK_Div2);
ld a, #0x03
call _RTC_WakeUpClockConfig
; ../src/main.c: 47: RTC_SetWakeUpCounter(250);
ldw x, #0x00fa
call _RTC_SetWakeUpCounter
; ../src/main.c: 48: RTC_WakeUpCmd(ENABLE);
ld a, #0x01
call _RTC_WakeUpCmd
; ../src/main.c: 50: RTC_ITConfig(RTC_IT_WUT, ENABLE);
ld a, #0x01
ldw x, #0x0040
call _RTC_ITConfig
; ../src/main.c: 52: enableInterrupts();
rim
; ../src/main.c: 53: while (1){
00102$:
; ../src/main.c: 54: blink2();
call _blink2
; ../src/main.c: 55: halt();
halt
jra 00102$
; ../src/main.c: 57: }
ret
; ../src/main.c: 59: static void PWR_Config(void){
; -----------------------------------------
; function PWR_Config
; -----------------------------------------
_PWR_Config:
; ../src/main.c: 60: PWR->CSR1 = PWR_CSR1_PVDIF;
mov 0x50b2+0, #0x20
; ../src/main.c: 61: PWR->CSR2 = PWR_CSR2_RESET_VALUE;
mov 0x50b3+0, #0x00
; ../src/main.c: 62: PWR->CSR2 |= PWR_CSR2_ULP;
bset 0x50b3, #1
; ../src/main.c: 63: PWR->CSR2 |= PWR_CSR2_FWU;
bset 0x50b3, #2
; ../src/main.c: 64: }
ret
; ../src/main.c: 66: static void CLK_Config(void)
; -----------------------------------------
; function CLK_Config
; -----------------------------------------
_CLK_Config:
; ../src/main.c: 68: CLK_SYSCLKSourceSwitchCmd(ENABLE);
ld a, #0x01
call _CLK_SYSCLKSourceSwitchCmd
; ../src/main.c: 69: CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSI);
ld a, #0x02
call _CLK_SYSCLKSourceConfig
; ../src/main.c: 70: CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
clr a
call _CLK_SYSCLKDivConfig
; ../src/main.c: 71: while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_LSI);
00101$:
call _CLK_GetSYSCLKSource
cp a, #0x02
jrne 00101$
ret
jra 00101$
; ../src/main.c: 72: }
ret
; ../src/main.c: 85: static void blink2() {
; -----------------------------------------
; function blink2
; -----------------------------------------
_blink2:
; ../src/main.c: 86: Mono_ON;
ld a, #0x01
ldw x, #0x5005
call _GPIO_ResetBits
; ../src/main.c: 87: Led2_ON;
ld a, #0x04
ldw x, #0x5005
call _GPIO_SetBits
; ../src/main.c: 88: Led2_OFF;
ld a, #0x04
ldw x, #0x5005
call _GPIO_ResetBits
; ../src/main.c: 89: Mono_OFF;
ld a, #0x01
ldw x, #0x5005
; ../src/main.c: 90: }
jp _GPIO_SetBits
.area CODE
.area CONST
.area INITIALIZER
.area CABS (ABS)