;-------------------------------------------------------- ; File Created by SDCC : free open source ISO C Compiler ; Version 4.5.0 #15242 (Linux) ;-------------------------------------------------------- .module stm8l15x_usart ;-------------------------------------------------------- ; Public variables in this module ;-------------------------------------------------------- .globl _CLK_GetClockFreq .globl _USART_DeInit .globl _USART_Init .globl _USART_ClockInit .globl _USART_Cmd .globl _USART_SetPrescaler .globl _USART_SendBreak .globl _USART_ReceiveData8 .globl _USART_ReceiveData9 .globl _USART_SendData8 .globl _USART_SendData9 .globl _USART_ReceiverWakeUpCmd .globl _USART_SetAddress .globl _USART_WakeUpConfig .globl _USART_HalfDuplexCmd .globl _USART_SmartCardCmd .globl _USART_SmartCardNACKCmd .globl _USART_SetGuardTime .globl _USART_IrDAConfig .globl _USART_IrDACmd .globl _USART_DMACmd .globl _USART_ITConfig .globl _USART_GetFlagStatus .globl _USART_ClearFlag .globl _USART_GetITStatus .globl _USART_ClearITPendingBit ;-------------------------------------------------------- ; 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_usart.c: 148: void USART_DeInit(USART_TypeDef* USARTx) ; ----------------------------------------- ; function USART_DeInit ; ----------------------------------------- _USART_DeInit: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 154: (void) USARTx->DR; ldw y, x ld a, (0x1, x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 156: USARTx->BRR2 = USART_BRR2_RESET_VALUE; /* Set USART_BRR2 to reset value 0x00 */ ldw x, y clr (0x0003, x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 157: USARTx->BRR1 = USART_BRR1_RESET_VALUE; /* Set USART_BRR1 to reset value 0x00 */ ldw x, y clr (0x02, x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 159: USARTx->CR1 = USART_CR1_RESET_VALUE; /* Set USART_CR1 to reset value 0x00 */ ldw x, y clr (0x0004, x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 160: USARTx->CR2 = USART_CR2_RESET_VALUE; /* Set USART_CR2 to reset value 0x00 */ ldw x, y clr (0x0005, x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 161: USARTx->CR3 = USART_CR3_RESET_VALUE; /* Set USART_CR3 to reset value 0x00 */ ldw x, y clr (0x0006, x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 162: USARTx->CR4 = USART_CR4_RESET_VALUE; /* Set USART_CR4 to reset value 0x00 */ ldw x, y clr (0x0007, x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 163: } ret ; ../inc/stm8l151x/src/stm8l15x_usart.c: 192: void USART_Init(USART_TypeDef* USARTx, uint32_t BaudRate, USART_WordLength_TypeDef ; ----------------------------------------- ; function USART_Init ; ----------------------------------------- _USART_Init: sub sp, #11 ; ../inc/stm8l151x/src/stm8l15x_usart.c: 210: USARTx->CR1 &= (uint8_t)(~(USART_CR1_PCEN | USART_CR1_PS | USART_CR1_M)); ldw (0x0a, sp), x addw x, #0x0004 ld a, (x) and a, #0xe9 ld (0x09, sp), a ld (x), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 213: USARTx->CR1 |= (uint8_t)((uint8_t)USART_WordLength | (uint8_t)USART_Parity); ld a, (0x12, sp) or a, (0x14, sp) or a, (0x09, sp) ld (x), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 216: USARTx->CR3 &= (uint8_t)(~USART_CR3_STOP); ldw x, (0x0a, sp) addw x, #0x0006 ld a, (x) and a, #0xcf ld (x), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 218: USARTx->CR3 |= (uint8_t)USART_StopBits; or a, (0x13, sp) ld (x), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 221: USARTx->BRR1 &= (uint8_t)(~USART_BRR1_DIVM); ldw x, (0x0a, sp) incw x incw x ldw (0x01, sp), x ld a, (x) ldw x, (0x01, sp) clr (x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 223: USARTx->BRR2 &= (uint8_t)(~USART_BRR2_DIVM); ldw x, (0x0a, sp) addw x, #0x0003 ldw (0x03, sp), x ld a, (x) and a, #0x0f ldw x, (0x03, sp) ld (x), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 225: USARTx->BRR2 &= (uint8_t)(~USART_BRR2_DIVF); ldw x, (0x03, sp) clr (x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 227: BaudRate_Mantissa = (uint32_t)(CLK_GetClockFreq() / BaudRate ); call _CLK_GetClockFreq ldw (0x08, sp), x ldw x, (0x10, sp) pushw x ldw x, (0x10, sp) pushw x ldw x, (0x0c, sp) pushw x pushw y ; ../inc/stm8l151x/src/stm8l15x_usart.c: 229: USARTx->BRR2 = (uint8_t)((BaudRate_Mantissa >> (uint8_t)8) & (uint8_t)0xF0); call __divulong addw sp, #8 ldw (0x05, sp), y ld a, xh and a, #0xf0 ld (0x09, sp), a ldw y, (0x03, sp) ld a, (0x09, sp) ld (y), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 231: USARTx->BRR2 |= (uint8_t)(BaudRate_Mantissa & (uint8_t)0x0F); ld a, xl and a, #0x0f or a, (0x09, sp) ldw y, (0x03, sp) ld (y), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 233: USARTx->BRR1 = (uint8_t)(BaudRate_Mantissa >> (uint8_t)4); ld a, #0x10 div x, a ld a, xl ldw x, (0x01, sp) ld (x), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 236: USARTx->CR2 &= (uint8_t)~(USART_CR2_TEN | USART_CR2_REN); ldw x, (0x0a, sp) addw x, #0x0005 ld a, (x) and a, #0xf3 ld (x), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 238: USARTx->CR2 |= (uint8_t)USART_Mode; or a, (0x15, sp) ld (x), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 239: } ldw x, (12, sp) addw sp, #21 jp (x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 264: void USART_ClockInit(USART_TypeDef* USARTx, USART_Clock_TypeDef USART_Clock, ; ----------------------------------------- ; function USART_ClockInit ; ----------------------------------------- _USART_ClockInit: sub sp, #5 ld (0x05, sp), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 275: USARTx->CR3 &= (uint8_t)~(USART_CR3_CPOL | USART_CR3_CPHA | USART_CR3_LBCL); addw x, #0x0006 ldw (0x01, sp), x ld a, (x) and a, #0xf8 ld (0x03, sp), a ldw x, (0x01, sp) ld a, (0x03, sp) ld (x), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 277: USARTx->CR3 |= (uint8_t)((uint8_t)((uint8_t)(USART_CPOL | (uint8_t)USART_CPHA ) | USART_LastBit)); ld a, (0x08, sp) or a, (0x09, sp) ld (0x04, sp), a ld a, (0x0a, sp) or a, (0x04, sp) or a, (0x03, sp) ldw x, (0x01, sp) ld (x), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 275: USARTx->CR3 &= (uint8_t)~(USART_CR3_CPOL | USART_CR3_CPHA | USART_CR3_LBCL); ldw x, (0x01, sp) ld a, (x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 279: if (USART_Clock != USART_Clock_Disable) tnz (0x05, sp) jreq 00102$ ; ../inc/stm8l151x/src/stm8l15x_usart.c: 281: USARTx->CR3 |= (uint8_t)(USART_CR3_CLKEN); /* Set the Clock Enable bit */ or a, #0x08 ldw x, (0x01, sp) ld (x), a jra 00104$ 00102$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 285: USARTx->CR3 &= (uint8_t)(~USART_CR3_CLKEN); /* Clear the Clock Enable bit */ and a, #0xf7 ldw x, (0x01, sp) ld (x), a 00104$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 287: } ldw x, (6, sp) addw sp, #10 jp (x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 296: void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState) ; ----------------------------------------- ; function USART_Cmd ; ----------------------------------------- _USART_Cmd: push a ld (0x01, sp), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 300: USARTx->CR1 &= (uint8_t)(~USART_CR1_USARTD); /**< USART Enable */ addw x, #0x0004 ld a, (x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 298: if (NewState != DISABLE) tnz (0x01, sp) jreq 00102$ ; ../inc/stm8l151x/src/stm8l15x_usart.c: 300: USARTx->CR1 &= (uint8_t)(~USART_CR1_USARTD); /**< USART Enable */ and a, #0xdf ld (x), a jra 00104$ 00102$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 304: USARTx->CR1 |= USART_CR1_USARTD; /**< USART Disable (for low power consumption) */ or a, #0x20 ld (x), a 00104$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 306: } pop a ret ; ../inc/stm8l151x/src/stm8l15x_usart.c: 329: void USART_SetPrescaler(USART_TypeDef* USARTx, uint8_t USART_Prescaler) ; ----------------------------------------- ; function USART_SetPrescaler ; ----------------------------------------- _USART_SetPrescaler: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 332: USARTx->PSCR = USART_Prescaler; addw x, #0x000a ld (x), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 333: } ret ; ../inc/stm8l151x/src/stm8l15x_usart.c: 340: void USART_SendBreak(USART_TypeDef* USARTx) ; ----------------------------------------- ; function USART_SendBreak ; ----------------------------------------- _USART_SendBreak: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 342: USARTx->CR2 |= USART_CR2_SBK; addw x, #0x0005 ld a, (x) or a, #0x01 ld (x), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 343: } ret ; ../inc/stm8l151x/src/stm8l15x_usart.c: 382: uint8_t USART_ReceiveData8(USART_TypeDef* USARTx) ; ----------------------------------------- ; function USART_ReceiveData8 ; ----------------------------------------- _USART_ReceiveData8: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 384: return USARTx->DR; ld a, (0x1, x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 385: } ret ; ../inc/stm8l151x/src/stm8l15x_usart.c: 392: uint16_t USART_ReceiveData9(USART_TypeDef* USARTx) ; ----------------------------------------- ; function USART_ReceiveData9 ; ----------------------------------------- _USART_ReceiveData9: pushw x ; ../inc/stm8l151x/src/stm8l15x_usart.c: 396: temp = ((uint16_t)(((uint16_t)((uint16_t)USARTx->CR1 & (uint16_t)USART_CR1_R8)) << 1)); ldw y, x ld a, (0x4, x) and a, #0x80 ld xl, a clr a ld xh, a sllw x ldw (0x01, sp), x ; ../inc/stm8l151x/src/stm8l15x_usart.c: 397: return (uint16_t)( ((uint16_t)((uint16_t)USARTx->DR) | temp) & ((uint16_t)0x01FF)); ld a, (0x1, y) or a, (0x02, sp) ld xl, a ld a, (0x01, sp) and a, #0x01 ld xh, a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 398: } addw sp, #2 ret ; ../inc/stm8l151x/src/stm8l15x_usart.c: 405: void USART_SendData8(USART_TypeDef* USARTx, uint8_t Data) ; ----------------------------------------- ; function USART_SendData8 ; ----------------------------------------- _USART_SendData8: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 408: USARTx->DR = Data; incw x ld (x), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 409: } ret ; ../inc/stm8l151x/src/stm8l15x_usart.c: 418: void USART_SendData9(USART_TypeDef* USARTx, uint16_t Data) ; ----------------------------------------- ; function USART_SendData9 ; ----------------------------------------- _USART_SendData9: sub sp, #3 ; ../inc/stm8l151x/src/stm8l15x_usart.c: 423: USARTx->CR1 &= ((uint8_t)~USART_CR1_T8); ldw (0x02, sp), x addw x, #0x0004 ld a, (x) and a, #0xbf ld (0x01, sp), a ld (x), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 426: USARTx->CR1 |= (uint8_t)(((uint8_t)(Data >> 2)) & USART_CR1_T8); ldw y, (0x06, sp) srlw y srlw y ld a, yl and a, #0x40 or a, (0x01, sp) ld (x), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 429: USARTx->DR = (uint8_t)(Data); ldw x, (0x02, sp) incw x ld a, (0x07, sp) ld (x), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 430: } ldw x, (4, sp) addw sp, #7 jp (x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 473: void USART_ReceiverWakeUpCmd(USART_TypeDef* USARTx, FunctionalState NewState) ; ----------------------------------------- ; function USART_ReceiverWakeUpCmd ; ----------------------------------------- _USART_ReceiverWakeUpCmd: push a ld (0x01, sp), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 480: USARTx->CR2 |= USART_CR2_RWU; addw x, #0x0005 ld a, (x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 477: if (NewState != DISABLE) tnz (0x01, sp) jreq 00102$ ; ../inc/stm8l151x/src/stm8l15x_usart.c: 480: USARTx->CR2 |= USART_CR2_RWU; or a, #0x02 ld (x), a jra 00104$ 00102$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 485: USARTx->CR2 &= ((uint8_t)~USART_CR2_RWU); and a, #0xfd ld (x), a 00104$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 487: } pop a ret ; ../inc/stm8l151x/src/stm8l15x_usart.c: 496: void USART_SetAddress(USART_TypeDef* USARTx, uint8_t USART_Address) ; ----------------------------------------- ; function USART_SetAddress ; ----------------------------------------- _USART_SetAddress: push a ld (0x01, sp), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 502: USARTx->CR4 &= ((uint8_t)~USART_CR4_ADD); addw x, #0x0007 ld a, (x) and a, #0xf0 ld (x), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 504: USARTx->CR4 |= USART_Address; or a, (0x01, sp) ld (x), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 505: } pop a ret ; ../inc/stm8l151x/src/stm8l15x_usart.c: 515: void USART_WakeUpConfig(USART_TypeDef* USARTx, USART_WakeUp_TypeDef USART_WakeUp) ; ----------------------------------------- ; function USART_WakeUpConfig ; ----------------------------------------- _USART_WakeUpConfig: push a ld (0x01, sp), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 519: USARTx->CR1 &= ((uint8_t)~USART_CR1_WAKE); addw x, #0x0004 ld a, (x) and a, #0xf7 ld (x), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 520: USARTx->CR1 |= (uint8_t)USART_WakeUp; or a, (0x01, sp) ld (x), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 521: } pop a ret ; ../inc/stm8l151x/src/stm8l15x_usart.c: 566: void USART_HalfDuplexCmd(USART_TypeDef* USARTx, FunctionalState NewState) ; ----------------------------------------- ; function USART_HalfDuplexCmd ; ----------------------------------------- _USART_HalfDuplexCmd: push a ld (0x01, sp), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 572: USARTx->CR5 |= USART_CR5_HDSEL; /**< USART Half Duplex Enable */ addw x, #0x0008 ld a, (x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 570: if (NewState != DISABLE) tnz (0x01, sp) jreq 00102$ ; ../inc/stm8l151x/src/stm8l15x_usart.c: 572: USARTx->CR5 |= USART_CR5_HDSEL; /**< USART Half Duplex Enable */ or a, #0x08 ld (x), a jra 00104$ 00102$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 576: USARTx->CR5 &= (uint8_t)~USART_CR5_HDSEL; /**< USART Half Duplex Disable */ and a, #0xf7 ld (x), a 00104$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 578: } pop a ret ; ../inc/stm8l151x/src/stm8l15x_usart.c: 644: void USART_SmartCardCmd(USART_TypeDef* USARTx, FunctionalState NewState) ; ----------------------------------------- ; function USART_SmartCardCmd ; ----------------------------------------- _USART_SmartCardCmd: push a ld (0x01, sp), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 651: USARTx->CR5 |= USART_CR5_SCEN; addw x, #0x0008 ld a, (x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 648: if (NewState != DISABLE) tnz (0x01, sp) jreq 00102$ ; ../inc/stm8l151x/src/stm8l15x_usart.c: 651: USARTx->CR5 |= USART_CR5_SCEN; or a, #0x20 ld (x), a jra 00104$ 00102$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 656: USARTx->CR5 &= ((uint8_t)(~USART_CR5_SCEN)); and a, #0xdf ld (x), a 00104$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 658: } pop a ret ; ../inc/stm8l151x/src/stm8l15x_usart.c: 667: void USART_SmartCardNACKCmd(USART_TypeDef* USARTx, FunctionalState NewState) ; ----------------------------------------- ; function USART_SmartCardNACKCmd ; ----------------------------------------- _USART_SmartCardNACKCmd: push a ld (0x01, sp), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 674: USARTx->CR5 |= USART_CR5_NACK; addw x, #0x0008 ld a, (x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 671: if (NewState != DISABLE) tnz (0x01, sp) jreq 00102$ ; ../inc/stm8l151x/src/stm8l15x_usart.c: 674: USARTx->CR5 |= USART_CR5_NACK; or a, #0x10 ld (x), a jra 00104$ 00102$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 679: USARTx->CR5 &= ((uint8_t)~(USART_CR5_NACK)); and a, #0xef ld (x), a 00104$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 681: } pop a ret ; ../inc/stm8l151x/src/stm8l15x_usart.c: 690: void USART_SetGuardTime(USART_TypeDef* USARTx, uint8_t USART_GuardTime) ; ----------------------------------------- ; function USART_SetGuardTime ; ----------------------------------------- _USART_SetGuardTime: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 693: USARTx->GTR = USART_GuardTime; addw x, #0x0009 ld (x), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 694: } ret ; ../inc/stm8l151x/src/stm8l15x_usart.c: 751: void USART_IrDAConfig(USART_TypeDef* USARTx, USART_IrDAMode_TypeDef USART_IrDAMode) ; ----------------------------------------- ; function USART_IrDAConfig ; ----------------------------------------- _USART_IrDAConfig: push a ld (0x01, sp), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 757: USARTx->CR5 |= USART_CR5_IRLP; addw x, #0x0008 ld a, (x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 755: if (USART_IrDAMode != USART_IrDAMode_Normal) tnz (0x01, sp) jreq 00102$ ; ../inc/stm8l151x/src/stm8l15x_usart.c: 757: USARTx->CR5 |= USART_CR5_IRLP; or a, #0x04 ld (x), a jra 00104$ 00102$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 761: USARTx->CR5 &= ((uint8_t)~USART_CR5_IRLP); and a, #0xfb ld (x), a 00104$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 763: } pop a ret ; ../inc/stm8l151x/src/stm8l15x_usart.c: 772: void USART_IrDACmd(USART_TypeDef* USARTx, FunctionalState NewState) ; ----------------------------------------- ; function USART_IrDACmd ; ----------------------------------------- _USART_IrDACmd: push a ld (0x01, sp), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 781: USARTx->CR5 |= USART_CR5_IREN; addw x, #0x0008 ld a, (x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 778: if (NewState != DISABLE) tnz (0x01, sp) jreq 00102$ ; ../inc/stm8l151x/src/stm8l15x_usart.c: 781: USARTx->CR5 |= USART_CR5_IREN; or a, #0x02 ld (x), a jra 00104$ 00102$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 786: USARTx->CR5 &= ((uint8_t)~USART_CR5_IREN); and a, #0xfd ld (x), a 00104$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 788: } pop a ret ; ../inc/stm8l151x/src/stm8l15x_usart.c: 818: void USART_DMACmd(USART_TypeDef* USARTx, USART_DMAReq_TypeDef USART_DMAReq, ; ----------------------------------------- ; function USART_DMACmd ; ----------------------------------------- _USART_DMACmd: push a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 829: USARTx->CR5 |= (uint8_t) USART_DMAReq; addw x, #0x0008 push a ld a, (x) ld (0x02, sp), a pop a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 825: if (NewState != DISABLE) tnz (0x04, sp) jreq 00102$ ; ../inc/stm8l151x/src/stm8l15x_usart.c: 829: USARTx->CR5 |= (uint8_t) USART_DMAReq; or a, (0x01, sp) ld (x), a jra 00104$ 00102$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 835: USARTx->CR5 &= (uint8_t)~USART_DMAReq; cpl a and a, (0x01, sp) ld (x), a 00104$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 837: } pop a popw x pop a jp (x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 939: void USART_ITConfig(USART_TypeDef* USARTx, USART_IT_TypeDef USART_IT, FunctionalState NewState) ; ----------------------------------------- ; function USART_ITConfig ; ----------------------------------------- _USART_ITConfig: sub sp, #9 ldw (0x08, sp), x ; ../inc/stm8l151x/src/stm8l15x_usart.c: 946: usartreg = (uint8_t)((uint16_t)USART_IT >> 0x08); ldw x, (0x0c, sp) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 948: itpos = (uint8_t)((uint8_t)1 << (uint8_t)((uint8_t)USART_IT & (uint8_t)0x0F)); ld a, (0x0d, sp) and a, #0x0f push a ld a, #0x01 ld (0x08, sp), a pop a tnz a jreq 00154$ 00153$: sll (0x07, sp) dec a jrne 00153$ 00154$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 953: if (usartreg == 0x01) ld a, xh dec a jrne 00156$ ld a, #0x01 ld (0x01, sp), a .byte 0xc5 00156$: clr (0x01, sp) 00157$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 955: USARTx->CR1 |= itpos; ldw y, (0x08, sp) addw y, #0x0004 ldw (0x02, sp), y ; ../inc/stm8l151x/src/stm8l15x_usart.c: 957: else if (usartreg == 0x05) ld a, xh sub a, #0x05 jrne 00159$ inc a ld (0x04, sp), a .byte 0xc5 00159$: clr (0x04, sp) 00160$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 959: USARTx->CR5 |= itpos; ldw x, (0x08, sp) addw x, #0x0008 ldw (0x05, sp), x ; ../inc/stm8l151x/src/stm8l15x_usart.c: 964: USARTx->CR2 |= itpos; ldw x, (0x08, sp) addw x, #0x0005 ; ../inc/stm8l151x/src/stm8l15x_usart.c: 950: if (NewState != DISABLE) tnz (0x0e, sp) jreq 00114$ ; ../inc/stm8l151x/src/stm8l15x_usart.c: 953: if (usartreg == 0x01) tnz (0x01, sp) jreq 00105$ ; ../inc/stm8l151x/src/stm8l15x_usart.c: 955: USARTx->CR1 |= itpos; ldw x, (0x02, sp) ld a, (x) or a, (0x07, sp) ldw x, (0x02, sp) ld (x), a jra 00116$ 00105$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 957: else if (usartreg == 0x05) tnz (0x04, sp) jreq 00102$ ; ../inc/stm8l151x/src/stm8l15x_usart.c: 959: USARTx->CR5 |= itpos; ldw x, (0x05, sp) ld a, (x) or a, (0x07, sp) ldw x, (0x05, sp) ld (x), a jra 00116$ 00102$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 964: USARTx->CR2 |= itpos; ld a, (x) or a, (0x07, sp) ld (x), a jra 00116$ 00114$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 972: USARTx->CR1 &= (uint8_t)(~itpos); cpl (0x07, sp) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 970: if (usartreg == 0x01) tnz (0x01, sp) jreq 00111$ ; ../inc/stm8l151x/src/stm8l15x_usart.c: 972: USARTx->CR1 &= (uint8_t)(~itpos); ldw x, (0x02, sp) ld a, (x) and a, (0x07, sp) ldw x, (0x02, sp) ld (x), a jra 00116$ 00111$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 974: else if (usartreg == 0x05) tnz (0x04, sp) jreq 00108$ ; ../inc/stm8l151x/src/stm8l15x_usart.c: 976: USARTx->CR5 &= (uint8_t)(~itpos); ldw x, (0x05, sp) ld a, (x) and a, (0x07, sp) ldw x, (0x05, sp) ld (x), a jra 00116$ 00108$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 981: USARTx->CR2 &= (uint8_t)(~itpos); ld a, (x) and a, (0x07, sp) ld (x), a 00116$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 984: } ldw x, (10, sp) addw sp, #14 jp (x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1002: FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, USART_FLAG_TypeDef USART_FLAG) ; ----------------------------------------- ; function USART_GetFlagStatus ; ----------------------------------------- _USART_GetFlagStatus: push a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1009: if (USART_FLAG == USART_FLAG_SBK) ldw y, (0x04, sp) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1011: if ((USARTx->CR2 & (uint8_t)USART_FLAG) != (uint8_t)0x00) ld a, (0x05, sp) ld (0x01, sp), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1009: if (USART_FLAG == USART_FLAG_SBK) cpw y, #0x0101 jrne 00108$ ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1011: if ((USARTx->CR2 & (uint8_t)USART_FLAG) != (uint8_t)0x00) ld a, (0x5, x) and a, (0x01, sp) jreq 00102$ ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1014: status = SET; ld a, #0x01 jra 00109$ 00102$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1019: status = RESET; clr a jra 00109$ 00108$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1024: if ((USARTx->SR & (uint8_t)USART_FLAG) != (uint8_t)0x00) ld a, (x) and a, (0x01, sp) jreq 00105$ ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1027: status = SET; ld a, #0x01 ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1032: status = RESET; .byte 0x21 00105$: clr a 00109$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1036: return status; ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1037: } ldw x, (2, sp) addw sp, #5 jp (x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1060: void USART_ClearFlag(USART_TypeDef* USARTx, USART_FLAG_TypeDef USART_FLAG) ; ----------------------------------------- ; function USART_ClearFlag ; ----------------------------------------- _USART_ClearFlag: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1065: USARTx->SR = (uint8_t)((uint16_t)~((uint16_t)USART_FLAG)); ldw y, (0x03, sp) cplw y ld a, yl ld (x), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1066: } ldw x, (1, sp) addw sp, #4 jp (x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1083: ITStatus USART_GetITStatus(USART_TypeDef* USARTx, USART_IT_TypeDef USART_IT) ; ----------------------------------------- ; function USART_GetITStatus ; ----------------------------------------- _USART_GetITStatus: sub sp, #9 ldw (0x08, sp), x ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1096: itpos = (uint8_t)((uint8_t)1 << (uint8_t)((uint8_t)USART_IT & (uint8_t)0x0F)); ld a, (0x0d, sp) ld xl, a and a, #0x0f push a ld a, #0x01 ld (0x04, sp), a pop a tnz a jreq 00179$ 00178$: sll (0x03, sp) dec a jrne 00178$ 00179$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1098: itmask1 = (uint8_t)((uint8_t)USART_IT >> (uint8_t)4); ld a, xl swap a and a, #0x0f ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1100: itmask2 = (uint8_t)((uint8_t)1 << itmask1); push a ld a, #0x01 ld (0x08, sp), a pop a tnz a jreq 00181$ 00180$: sll (0x07, sp) dec a jrne 00180$ 00181$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1103: if (USART_IT == USART_IT_PE) ldw y, (0x0c, sp) ldw (0x01, sp), y ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1109: if (((USARTx->SR & itpos) != (uint8_t)0x00) && enablestatus) ldw y, (0x08, sp) ldw (0x04, sp), y ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1103: if (USART_IT == USART_IT_PE) ldw x, (0x01, sp) cpw x, #0x0100 jrne 00118$ ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1106: enablestatus = (uint8_t)((uint8_t)USARTx->CR1 & itmask2); ldw y, (0x08, sp) ldw (0x01, sp), y ldw x, y ld a, (0x4, x) and a, (0x07, sp) ld (0x07, sp), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1109: if (((USARTx->SR & itpos) != (uint8_t)0x00) && enablestatus) ldw x, (0x04, sp) ld a, (x) and a, (0x03, sp) jreq 00102$ tnz (0x07, sp) jreq 00102$ ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1112: pendingbitstatus = SET; ld a, #0x01 jra 00119$ 00102$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1117: pendingbitstatus = RESET; clr a jra 00119$ 00118$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1124: enablestatus = (uint8_t)((uint8_t)USARTx->CR2 & itmask2); ldw x, (0x08, sp) ld a, (0x5, x) and a, (0x07, sp) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1121: else if (USART_IT == USART_IT_OR) ldw x, (0x01, sp) cpw x, #0x0235 jrne 00115$ ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1124: enablestatus = (uint8_t)((uint8_t)USARTx->CR2 & itmask2); ld (0x06, sp), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1127: temp = (uint8_t)(USARTx->CR5 & USART_CR5_EIE); ldw x, (0x08, sp) ld a, (0x8, x) and a, #0x01 ld (0x07, sp), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1129: if (( (USARTx->SR & itpos) != 0x00) && ((enablestatus || temp))) ldw x, (0x04, sp) ld a, (x) and a, (0x03, sp) jreq 00106$ tnz (0x06, sp) jrne 00105$ tnz (0x07, sp) jreq 00106$ 00105$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1132: pendingbitstatus = SET; ld a, #0x01 jra 00119$ 00106$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1137: pendingbitstatus = RESET; clr a jra 00119$ 00115$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1144: enablestatus = (uint8_t)((uint8_t)USARTx->CR2 & itmask2); ld (0x07, sp), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1146: if (((USARTx->SR & itpos) != (uint8_t)0x00) && enablestatus) ldw x, (0x04, sp) ld a, (x) and a, (0x03, sp) jreq 00111$ tnz (0x07, sp) jreq 00111$ ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1149: pendingbitstatus = SET; ld a, #0x01 ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1154: pendingbitstatus = RESET; .byte 0x21 00111$: clr a 00119$: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1159: return pendingbitstatus; ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1160: } ldw x, (10, sp) addw sp, #13 jp (x) ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1183: void USART_ClearITPendingBit(USART_TypeDef* USARTx, USART_IT_TypeDef USART_IT) ; ----------------------------------------- ; function USART_ClearITPendingBit ; ----------------------------------------- _USART_ClearITPendingBit: ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1188: USARTx->SR &= (uint8_t)(~USART_SR_TC); ld a, (x) and a, #0xbf ld (x), a ; ../inc/stm8l151x/src/stm8l15x_usart.c: 1189: } ldw x, (1, sp) addw sp, #4 jp (x) .area CODE .area CONST .area INITIALIZER .area CABS (ABS)