stm8s_awu.ls

来自「STM8-触摸例程」· LS 代码 · 共 274 行

LS
274
字号
   1                     ; C Compiler for STM8 (COSMIC Software)
   2                     ; Generator V4.2.8 - 03 Dec 2008
   3                     ; Optimizer V4.2.8 - 03 Dec 2008
   5                     .const:	section	.text
   6  0000               _APR_Array:
   7  0000 00            	dc.b	0
   8  0001 1e            	dc.b	30
   9  0002 1e            	dc.b	30
  10  0003 1e            	dc.b	30
  11  0004 1e            	dc.b	30
  12  0005 1e            	dc.b	30
  13  0006 1e            	dc.b	30
  14  0007 1e            	dc.b	30
  15  0008 1e            	dc.b	30
  16  0009 1e            	dc.b	30
  17  000a 1e            	dc.b	30
  18  000b 1e            	dc.b	30
  19  000c 1e            	dc.b	30
  20  000d 3d            	dc.b	61
  21  000e 17            	dc.b	23
  22  000f 17            	dc.b	23
  23  0010 3e            	dc.b	62
  24  0011               _TBR_Array:
  25  0011 00            	dc.b	0
  26  0012 01            	dc.b	1
  27  0013 02            	dc.b	2
  28  0014 03            	dc.b	3
  29  0015 04            	dc.b	4
  30  0016 05            	dc.b	5
  31  0017 06            	dc.b	6
  32  0018 07            	dc.b	7
  33  0019 08            	dc.b	8
  34  001a 09            	dc.b	9
  35  001b 0a            	dc.b	10
  36  001c 0b            	dc.b	11
  37  001d 0c            	dc.b	12
  38  001e 0c            	dc.b	12
  39  001f 0e            	dc.b	14
  40  0020 0f            	dc.b	15
  41  0021 0f            	dc.b	15
  70                     ; 83 void AWU_DeInit(void)
  70                     ; 84 {
  72                     	switch	.text
  73  0000               _AWU_DeInit:
  77                     ; 85   AWU->CSR = AWU_CSR_RESET_VALUE;
  79  0000 725f50f0      	clr	20720
  80                     ; 86   AWU->APR = AWU_APR_RESET_VALUE;
  82  0004 353f50f1      	mov	20721,#63
  83                     ; 87   AWU->TBR = AWU_TBR_RESET_VALUE;
  85  0008 725f50f2      	clr	20722
  86                     ; 88 }
  89  000c 81            	ret	
 251                     ; 105 void AWU_Init(AWU_Timebase_TypeDef AWU_TimeBase)
 251                     ; 106 {
 252                     	switch	.text
 253  000d               _AWU_Init:
 255       00000000      OFST:	set	0
 258                     ; 109   assert_param(IS_AWU_TIMEBASE_OK(AWU_TimeBase));
 260                     ; 112   AWU->CSR |= AWU_CSR_AWUEN;
 262  000d 721850f0      	bset	20720,#4
 263  0011 88            	push	a
 264                     ; 115   AWU->TBR &= (u8)(~AWU_TBR_AWUTB);
 266  0012 c650f2        	ld	a,20722
 267  0015 a4f0          	and	a,#240
 268  0017 c750f2        	ld	20722,a
 269                     ; 116   AWU->TBR |= TBR_Array[(u8)AWU_TimeBase];
 271  001a 5f            	clrw	x
 272  001b 7b01          	ld	a,(OFST+1,sp)
 273  001d 97            	ld	xl,a
 274  001e c650f2        	ld	a,20722
 275  0021 da0011        	or	a,(_TBR_Array,x)
 276  0024 c750f2        	ld	20722,a
 277                     ; 119   AWU->APR &= (u8)(~AWU_APR_APR);
 279  0027 c650f1        	ld	a,20721
 280  002a a4c0          	and	a,#192
 281  002c c750f1        	ld	20721,a
 282                     ; 120   AWU->APR |= APR_Array[(u8)AWU_TimeBase];
 284  002f 5f            	clrw	x
 285  0030 7b01          	ld	a,(OFST+1,sp)
 286  0032 97            	ld	xl,a
 287  0033 c650f1        	ld	a,20721
 288  0036 da0000        	or	a,(_APR_Array,x)
 289  0039 c750f1        	ld	20721,a
 290                     ; 122 }
 293  003c 84            	pop	a
 294  003d 81            	ret	
 349                     ; 137 void AWU_Cmd(FunctionalState NewState)
 349                     ; 138 {
 350                     	switch	.text
 351  003e               _AWU_Cmd:
 355                     ; 139   if (NewState != DISABLE)
 357  003e 4d            	tnz	a
 358  003f 2705          	jreq	L331
 359                     ; 142     AWU->CSR |= AWU_CSR_AWUEN;
 361  0041 721850f0      	bset	20720,#4
 364  0045 81            	ret	
 365  0046               L331:
 366                     ; 147     AWU->CSR &= (u8)(~AWU_CSR_AWUEN);
 368  0046 721950f0      	bres	20720,#4
 369                     ; 149 }
 372  004a 81            	ret	
 425                     	switch	.const
 426  0022               L41:
 427  0022 000003e8      	dc.l	1000
 428                     ; 176 void AWU_LSICalibrationConfig(u32 LSIFreqHz)
 428                     ; 177 {
 429                     	switch	.text
 430  004b               _AWU_LSICalibrationConfig:
 432  004b 5206          	subw	sp,#6
 433       00000006      OFST:	set	6
 436                     ; 179   u16 lsifreqkhz = 0x0;
 438                     ; 180   u16 A = 0x0;
 440                     ; 183   assert_param(IS_LSI_FREQUENCY_OK(LSIFreqHz));
 442                     ; 185   lsifreqkhz = (u16)(LSIFreqHz / 1000); /* Converts value in kHz */
 444  004d 96            	ldw	x,sp
 445  004e 1c0009        	addw	x,#OFST+3
 446  0051 cd0000        	call	c_ltor
 448  0054 ae0022        	ldw	x,#L41
 449  0057 cd0000        	call	c_ludv
 451  005a be02          	ldw	x,c_lreg+2
 452  005c 1f03          	ldw	(OFST-3,sp),x
 453                     ; 189   A = (u16)(lsifreqkhz >> 2U); /* Division by 4, keep integer part only */
 455  005e 54            	srlw	x
 456  005f 54            	srlw	x
 457  0060 1f05          	ldw	(OFST-1,sp),x
 458                     ; 191   if ((4U * A) >= ((lsifreqkhz - (4U * A)) * (1U + (2U * A))))
 460  0062 58            	sllw	x
 461  0063 58            	sllw	x
 462  0064 1f01          	ldw	(OFST-5,sp),x
 463  0066 1e03          	ldw	x,(OFST-3,sp)
 464  0068 72f001        	subw	x,(OFST-5,sp)
 465  006b 1605          	ldw	y,(OFST-1,sp)
 466  006d 9058          	sllw	y
 467  006f 905c          	incw	y
 468  0071 cd0000        	call	c_imul
 470  0074 1605          	ldw	y,(OFST-1,sp)
 471  0076 9058          	sllw	y
 472  0078 bf01          	ldw	c_x+1,x
 473  007a 9058          	sllw	y
 474  007c 90b301        	cpw	y,c_x+1
 475  007f 7b06          	ld	a,(OFST+0,sp)
 476  0081 2504          	jrult	L561
 477                     ; 193     AWU->APR = (u8)(A - 2U);
 479  0083 a002          	sub	a,#2
 481  0085 2001          	jra	L761
 482  0087               L561:
 483                     ; 197     AWU->APR = (u8)(A - 1U);
 485  0087 4a            	dec	a
 486  0088               L761:
 487  0088 c750f1        	ld	20721,a
 488                     ; 201   AWU->CSR |= AWU_CSR_MR;
 490                     ; 203 }
 493  008b 5b06          	addw	sp,#6
 494  008d 721250f0      	bset	20720,#1
 495  0091 81            	ret	
 573                     	switch	.const
 574  0026               L42:
 575  0026 000186a0      	dc.l	100000
 576  002a               L62:
 577  002a 00030d41      	dc.l	200001
 578                     ; 221 ErrorStatus AWU_AutoLSICalibration(void)
 578                     ; 222 {
 579                     	switch	.text
 580  0092               _AWU_AutoLSICalibration:
 582  0092 5205          	subw	sp,#5
 583       00000005      OFST:	set	5
 586                     ; 224   u32 lsi_freq_hz = 0x0;
 588  0094 96            	ldw	x,sp
 589  0095 1c0002        	addw	x,#OFST-3
 590  0098 cd0000        	call	c_ltor
 592                     ; 225   u32 fmaster = 0x0;
 594  009b 96            	ldw	x,sp
 595  009c 1c0002        	addw	x,#OFST-3
 596  009f cd0000        	call	c_ltor
 598                     ; 226   ErrorStatus status = ERROR;
 600                     ; 229   fmaster = CLK_GetClockFreq();
 602  00a2 cd0000        	call	_CLK_GetClockFreq
 604  00a5 96            	ldw	x,sp
 605  00a6 1c0002        	addw	x,#OFST-3
 606  00a9 cd0000        	call	c_rtol
 608                     ; 232   AWU->CSR |= AWU_CSR_MSR;
 610  00ac 721050f0      	bset	20720,#0
 611                     ; 235   lsi_freq_hz = TIM3_ComputeLsiClockFreq(fmaster);
 613  00b0 1e04          	ldw	x,(OFST-1,sp)
 614  00b2 89            	pushw	x
 615  00b3 1e04          	ldw	x,(OFST-1,sp)
 616  00b5 89            	pushw	x
 617  00b6 cd0000        	call	_TIM3_ComputeLsiClockFreq
 619  00b9 5b04          	addw	sp,#4
 620  00bb 96            	ldw	x,sp
 621  00bc 1c0002        	addw	x,#OFST-3
 622  00bf cd0000        	call	c_rtol
 624                     ; 238   AWU->CSR &= (u8)(~AWU_CSR_MSR);
 626  00c2 721150f0      	bres	20720,#0
 627                     ; 240   if ((lsi_freq_hz >= LSI_FREQUENCY_MIN) && (lsi_freq_hz <= LSI_FREQUENCY_MAX))
 629  00c6 96            	ldw	x,sp
 630  00c7 1c0002        	addw	x,#OFST-3
 631  00ca cd0000        	call	c_ltor
 633  00cd ae0026        	ldw	x,#L42
 634  00d0 cd0000        	call	c_lcmp
 636  00d3 251e          	jrult	L722
 638  00d5 96            	ldw	x,sp
 639  00d6 1c0002        	addw	x,#OFST-3
 640  00d9 cd0000        	call	c_ltor
 642  00dc ae002a        	ldw	x,#L62
 643  00df cd0000        	call	c_lcmp
 645  00e2 240f          	jruge	L722
 646                     ; 243     AWU_LSICalibrationConfig(lsi_freq_hz);
 648  00e4 1e04          	ldw	x,(OFST-1,sp)
 649  00e6 89            	pushw	x
 650  00e7 1e04          	ldw	x,(OFST-1,sp)
 651  00e9 89            	pushw	x
 652  00ea cd004b        	call	_AWU_LSICalibrationConfig
 654  00ed 5b04          	addw	sp,#4
 655                     ; 244     status = SUCCESS;
 657  00ef a601          	ld	a,#1
 659  00f1 2001          	jra	L132
 660  00f3               L722:
 661                     ; 248     status = ERROR;
 663  00f3 4f            	clr	a
 664  00f4               L132:
 665                     ; 251   return status;
 669  00f4 5b05          	addw	sp,#5
 670  00f6 81            	ret	
 693                     ; 269 void AWU_IdleModeEnable(void)
 693                     ; 270 {
 694                     	switch	.text
 695  00f7               _AWU_IdleModeEnable:
 699                     ; 273   AWU->CSR &= (u8)(~AWU_CSR_AWUEN);
 701  00f7 721950f0      	bres	20720,#4
 702                     ; 276   AWU->TBR = (u8)(~AWU_TBR_AWUTB);
 704  00fb 35f050f2      	mov	20722,#240
 705                     ; 278 }
 708  00ff 81            	ret	
 731                     ; 294 void AWU_ReInitCounter(void)
 731                     ; 295 {
 732                     	switch	.text
 733  0100               _AWU_ReInitCounter:
 737                     ; 296   AWU->CSR |= AWU_CSR_MR;
 739  0100 721250f0      	bset	20720,#1
 740                     ; 297 }
 743  0104 81            	ret	
 787                     ; 317 FlagStatus AWU_GetFlagStatus(void)
 787                     ; 318 {
 788                     	switch	.text
 789  0105               _AWU_GetFlagStatus:
 793                     ; 319   return((FlagStatus)(((u8)(AWU->CSR & AWU_CSR_AWUF) == (u8)0x00) ? RESET : SET));
 795  0105 720a50f002    	btjt	20720,#5,L04
 796  010a 4f            	clr	a
 798  010b 81            	ret	
 799  010c               L04:
 800  010c a601          	ld	a,#1
 803  010e 81            	ret	
 838                     	xdef	_TBR_Array
 839                     	xdef	_APR_Array
 840                     	xdef	_AWU_GetFlagStatus
 841                     	xdef	_AWU_ReInitCounter
 842                     	xdef	_AWU_IdleModeEnable
 843                     	xdef	_AWU_AutoLSICalibration
 844                     	xdef	_AWU_LSICalibrationConfig
 845                     	xdef	_AWU_Cmd
 846                     	xdef	_AWU_Init
 847                     	xdef	_AWU_DeInit
 848                     	xref	_CLK_GetClockFreq
 849                     	xref	_TIM3_ComputeLsiClockFreq
 850                     	xref.b	c_lreg
 851                     	xref.b	c_x
 870                     	xref	c_lcmp
 871                     	xref	c_rtol
 872                     	xref	c_imul
 873                     	xref	c_ludv
 874                     	xref	c_ltor
 875                     	end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?