268 lines
8.4 KiB
NASM
268 lines
8.4 KiB
NASM
;--------------------------------------------------------
|
|
; File Created by SDCC : free open source ISO C Compiler
|
|
; Version 4.5.0 #15242 (Linux)
|
|
;--------------------------------------------------------
|
|
.module stm8l15x_pwr
|
|
|
|
;--------------------------------------------------------
|
|
; Public variables in this module
|
|
;--------------------------------------------------------
|
|
.globl _PWR_DeInit
|
|
.globl _PWR_PVDLevelConfig
|
|
.globl _PWR_PVDCmd
|
|
.globl _PWR_FastWakeUpCmd
|
|
.globl _PWR_UltraLowPowerCmd
|
|
.globl _PWR_PVDITConfig
|
|
.globl _PWR_GetFlagStatus
|
|
.globl _PWR_PVDClearFlag
|
|
.globl _PWR_PVDGetITStatus
|
|
.globl _PWR_PVDClearITPendingBit
|
|
;--------------------------------------------------------
|
|
; ram data
|
|
;--------------------------------------------------------
|
|
.area DATA
|
|
;--------------------------------------------------------
|
|
; ram data
|
|
;--------------------------------------------------------
|
|
.area INITIALIZED
|
|
;--------------------------------------------------------
|
|
; absolute external ram data
|
|
;--------------------------------------------------------
|
|
.area DABS (ABS)
|
|
|
|
; default segment ordering for linker
|
|
.area HOME
|
|
.area GSINIT
|
|
.area GSFINAL
|
|
.area CONST
|
|
.area INITIALIZER
|
|
.area CODE
|
|
|
|
;--------------------------------------------------------
|
|
; global & static initialisations
|
|
;--------------------------------------------------------
|
|
.area HOME
|
|
.area GSINIT
|
|
.area GSFINAL
|
|
.area GSINIT
|
|
;--------------------------------------------------------
|
|
; Home
|
|
;--------------------------------------------------------
|
|
.area HOME
|
|
.area HOME
|
|
;--------------------------------------------------------
|
|
; code
|
|
;--------------------------------------------------------
|
|
.area CODE
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 82: void PWR_DeInit(void)
|
|
; -----------------------------------------
|
|
; function PWR_DeInit
|
|
; -----------------------------------------
|
|
_PWR_DeInit:
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 84: PWR->CSR1 = PWR_CSR1_PVDIF;
|
|
mov 0x50b2+0, #0x20
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 85: PWR->CSR2 = PWR_CSR2_RESET_VALUE;
|
|
mov 0x50b3+0, #0x00
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 86: }
|
|
ret
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 102: void PWR_PVDLevelConfig(PWR_PVDLevel_TypeDef PWR_PVDLevel)
|
|
; -----------------------------------------
|
|
; function PWR_PVDLevelConfig
|
|
; -----------------------------------------
|
|
_PWR_PVDLevelConfig:
|
|
push a
|
|
ld (0x01, sp), a
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 108: PWR->CSR1 &= (uint8_t)(~PWR_CSR1_PLS);
|
|
ld a, 0x50b2
|
|
and a, #0xf1
|
|
ld 0x50b2, a
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 111: PWR->CSR1 |= PWR_PVDLevel;
|
|
ld a, 0x50b2
|
|
or a, (0x01, sp)
|
|
ld 0x50b2, a
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 113: }
|
|
pop a
|
|
ret
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 121: void PWR_PVDCmd(FunctionalState NewState)
|
|
; -----------------------------------------
|
|
; function PWR_PVDCmd
|
|
; -----------------------------------------
|
|
_PWR_PVDCmd:
|
|
push a
|
|
ld (0x01, sp), a
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 129: PWR->CSR1 |= PWR_CSR1_PVDE;
|
|
ld a, 0x50b2
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 126: if (NewState != DISABLE)
|
|
tnz (0x01, sp)
|
|
jreq 00102$
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 129: PWR->CSR1 |= PWR_CSR1_PVDE;
|
|
or a, #0x01
|
|
ld 0x50b2, a
|
|
jra 00104$
|
|
00102$:
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 134: PWR->CSR1 &= (uint8_t)(~PWR_CSR1_PVDE);
|
|
and a, #0xfe
|
|
ld 0x50b2, a
|
|
00104$:
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 136: }
|
|
pop a
|
|
ret
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 171: void PWR_FastWakeUpCmd(FunctionalState NewState)
|
|
; -----------------------------------------
|
|
; function PWR_FastWakeUpCmd
|
|
; -----------------------------------------
|
|
_PWR_FastWakeUpCmd:
|
|
push a
|
|
ld (0x01, sp), a
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 179: PWR->CSR2 |= PWR_CSR2_FWU;
|
|
ld a, 0x50b3
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 176: if (NewState != DISABLE)
|
|
tnz (0x01, sp)
|
|
jreq 00102$
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 179: PWR->CSR2 |= PWR_CSR2_FWU;
|
|
or a, #0x04
|
|
ld 0x50b3, a
|
|
jra 00104$
|
|
00102$:
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 184: PWR->CSR2 &= (uint8_t)(~PWR_CSR2_FWU);
|
|
and a, #0xfb
|
|
ld 0x50b3, a
|
|
00104$:
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 186: }
|
|
pop a
|
|
ret
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 194: void PWR_UltraLowPowerCmd(FunctionalState NewState)
|
|
; -----------------------------------------
|
|
; function PWR_UltraLowPowerCmd
|
|
; -----------------------------------------
|
|
_PWR_UltraLowPowerCmd:
|
|
push a
|
|
ld (0x01, sp), a
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 202: PWR->CSR2 |= PWR_CSR2_ULP;
|
|
ld a, 0x50b3
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 199: if (NewState != DISABLE)
|
|
tnz (0x01, sp)
|
|
jreq 00102$
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 202: PWR->CSR2 |= PWR_CSR2_ULP;
|
|
or a, #0x02
|
|
ld 0x50b3, a
|
|
jra 00104$
|
|
00102$:
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 207: PWR->CSR2 &= (uint8_t)(~PWR_CSR2_ULP);
|
|
and a, #0xfd
|
|
ld 0x50b3, a
|
|
00104$:
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 209: }
|
|
pop a
|
|
ret
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 232: void PWR_PVDITConfig(FunctionalState NewState)
|
|
; -----------------------------------------
|
|
; function PWR_PVDITConfig
|
|
; -----------------------------------------
|
|
_PWR_PVDITConfig:
|
|
push a
|
|
ld (0x01, sp), a
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 240: PWR->CSR1 |= PWR_CSR1_PVDIEN;
|
|
ld a, 0x50b2
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 237: if (NewState != DISABLE)
|
|
tnz (0x01, sp)
|
|
jreq 00102$
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 240: PWR->CSR1 |= PWR_CSR1_PVDIEN;
|
|
or a, #0x10
|
|
ld 0x50b2, a
|
|
jra 00104$
|
|
00102$:
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 245: PWR->CSR1 &= (uint8_t)(~PWR_CSR1_PVDIEN);
|
|
and a, #0xef
|
|
ld 0x50b2, a
|
|
00104$:
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 247: }
|
|
pop a
|
|
ret
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 261: FlagStatus PWR_GetFlagStatus(PWR_FLAG_TypeDef PWR_FLAG)
|
|
; -----------------------------------------
|
|
; function PWR_GetFlagStatus
|
|
; -----------------------------------------
|
|
_PWR_GetFlagStatus:
|
|
push a
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 268: if ((PWR_FLAG & PWR_FLAG_VREFINTF) != 0)
|
|
ld (0x01, sp), a
|
|
srl a
|
|
jrnc 00108$
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 270: if ((PWR->CSR2 & PWR_CR2_VREFINTF) != (uint8_t)RESET )
|
|
btjf 0x50b3, #0, 00102$
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 272: bitstatus = SET;
|
|
ld a, #0x01
|
|
jra 00109$
|
|
00102$:
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 276: bitstatus = RESET;
|
|
clr a
|
|
jra 00109$
|
|
00108$:
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 281: if ((PWR->CSR1 & PWR_FLAG) != (uint8_t)RESET )
|
|
ld a, 0x50b2
|
|
and a, (0x01, sp)
|
|
jreq 00105$
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 283: bitstatus = SET;
|
|
ld a, #0x01
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 287: bitstatus = RESET;
|
|
.byte 0x21
|
|
00105$:
|
|
clr a
|
|
00109$:
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 292: return((FlagStatus)bitstatus);
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 293: }
|
|
addw sp, #1
|
|
ret
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 300: void PWR_PVDClearFlag(void)
|
|
; -----------------------------------------
|
|
; function PWR_PVDClearFlag
|
|
; -----------------------------------------
|
|
_PWR_PVDClearFlag:
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 303: PWR->CSR1 |= PWR_CSR1_PVDIF;
|
|
bset 0x50b2, #5
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 304: }
|
|
ret
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 311: ITStatus PWR_PVDGetITStatus(void)
|
|
; -----------------------------------------
|
|
; function PWR_PVDGetITStatus
|
|
; -----------------------------------------
|
|
_PWR_PVDGetITStatus:
|
|
push a
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 317: PVD_itStatus = (uint8_t)(PWR->CSR1 & (uint8_t)PWR_CSR1_PVDIF);
|
|
ld a, 0x50b2
|
|
and a, #0x20
|
|
ld (0x01, sp), a
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 318: PVD_itEnable = (uint8_t)(PWR->CSR1 & (uint8_t)PWR_CSR1_PVDIEN);
|
|
ld a, 0x50b2
|
|
and a, #0x10
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 320: if ((PVD_itStatus != (uint8_t)RESET ) && (PVD_itEnable != (uint8_t)RESET))
|
|
tnz (0x01, sp)
|
|
jreq 00102$
|
|
tnz a
|
|
jreq 00102$
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 322: bitstatus = (ITStatus)SET;
|
|
ld a, #0x01
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 326: bitstatus = (ITStatus)RESET;
|
|
.byte 0x21
|
|
00102$:
|
|
clr a
|
|
00103$:
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 328: return ((ITStatus)bitstatus);
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 329: }
|
|
addw sp, #1
|
|
ret
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 336: void PWR_PVDClearITPendingBit(void)
|
|
; -----------------------------------------
|
|
; function PWR_PVDClearITPendingBit
|
|
; -----------------------------------------
|
|
_PWR_PVDClearITPendingBit:
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 339: PWR->CSR1 |= PWR_CSR1_PVDIF;
|
|
bset 0x50b2, #5
|
|
; ../inc/stm8l151x/src/stm8l15x_pwr.c: 340: }
|
|
ret
|
|
.area CODE
|
|
.area CONST
|
|
.area INITIALIZER
|
|
.area CABS (ABS)
|