   1                     ; C Compiler for STM8 (COSMIC Software)
   2                     ; Parser V4.8.32 - 23 Mar 2010
   3                     ; Generator V4.3.4 - 23 Mar 2010
  17                     	switch	.data
  18  0000               _TaskDb:
  19  0000 01            	dc.b	1
  20  0001 01            	dc.b	1
  21  0002 0000000a      	dc.l	10
  22  0006 0000000a      	dc.l	10
  23  000a 01            	dc.b	1
  25  000b 0000          	dc.w	_TaskTimer
  26  000d 01            	dc.b	1
  27  000e 01            	dc.b	1
  28  000f 00000064      	dc.l	100
  29  0013 00000064      	dc.l	100
  30  0017 02            	dc.b	2
  32  0018 0000          	dc.w	_TaskBlinLed
  33  001a 00            	dc.b	0
  34  001b 01            	dc.b	1
  35  001c 0000000a      	dc.l	10
  36  0020 0000000a      	dc.l	10
  37  0024 04            	dc.b	4
  39  0025 0000          	dc.w	_TaskBeep
  40  0027 01            	dc.b	1
  41  0028 01            	dc.b	1
  42  0029 00000014      	dc.l	20
  43  002d 00000014      	dc.l	20
  44  0031 0f            	dc.b	15
  46  0032 0000          	dc.w	_TaskScanKey
  47  0034 00            	dc.b	0
  48  0035 01            	dc.b	1
  49  0036 00000032      	dc.l	50
  50  003a 00000032      	dc.l	50
  51  003e 07            	dc.b	7
  53  003f 0000          	dc.w	_TaskWarn
  54  0041 00            	dc.b	0
  55  0042 01            	dc.b	1
  56  0043 00000032      	dc.l	50
  57  0047 00000032      	dc.l	50
  58  004b 08            	dc.b	8
  60  004c 0000          	dc.w	_TaskStopMotor
  61  004e 01            	dc.b	1
  62  004f 01            	dc.b	1
  63  0050 000007d0      	dc.l	2000
  64  0054 000007d0      	dc.l	2000
  65  0058 0a            	dc.b	10
  67  0059 0000          	dc.w	_TaskCheckPhase
  68  005b 01            	dc.b	1
  69  005c 01            	dc.b	1
  70  005d 00000001      	dc.l	1
  71  0061 00000001      	dc.l	1
  72  0065 0b            	dc.b	11
  74  0066 0000          	dc.w	_TaskFREQ
  75  0068 01            	dc.b	1
  76  0069 01            	dc.b	1
  77  006a 00000002      	dc.l	2
  78  006e 00000002      	dc.l	2
  79  0072 0c            	dc.b	12
  81  0073 0000          	dc.w	_TaskFREQMotor
  82  0075 01            	dc.b	1
  83  0076 01            	dc.b	1
  84  0077 000003e8      	dc.l	1000
  85  007b 000003e8      	dc.l	1000
  86  007f 0d            	dc.b	13
  88  0080 0000          	dc.w	_Task_Check_Motor
  89  0082 01            	dc.b	1
  90  0083 01            	dc.b	1
  91  0084 000001f4      	dc.l	500
  92  0088 000001f4      	dc.l	500
  93  008c 0e            	dc.b	14
  95  008d 0000          	dc.w	_TaskCheckSensor
  96  008f 00            	dc.b	0
  97  0090 01            	dc.b	1
  98  0091 000003e8      	dc.l	1000
  99  0095 000003e8      	dc.l	1000
 100  0099 09            	dc.b	9
 102  009a 0000          	dc.w	_Feed
 103  009c 01            	dc.b	1
 104  009d 01            	dc.b	1
 105  009e 000003e8      	dc.l	1000
 106  00a2 000003e8      	dc.l	1000
 107  00a6 11            	dc.b	17
 109  00a7 0000          	dc.w	_Task_Power_Check
 110  00a9 01            	dc.b	1
 111  00aa 01            	dc.b	1
 112  00ab 00000032      	dc.l	50
 113  00af 00000032      	dc.l	50
 114  00b3 13            	dc.b	19
 116  00b4 0000          	dc.w	_TaskChargeBat
 117  00b6 01            	dc.b	1
 118  00b7 01            	dc.b	1
 119  00b8 0000000a      	dc.l	10
 120  00bc 0000000a      	dc.l	10
 121  00c0 14            	dc.b	20
 123  00c1 0000          	dc.w	_TaskCheckBrakeCoil
 124  00c3 01            	dc.b	1
 125  00c4 01            	dc.b	1
 126  00c5 0000000a      	dc.l	10
 127  00c9 0000000a      	dc.l	10
 128  00cd 15            	dc.b	21
 130  00ce 0000          	dc.w	_Task_SEG7
 131  00d0 01            	dc.b	1
 132  00d1 01            	dc.b	1
 133  00d2 00000002      	dc.l	2
 134  00d6 00000002      	dc.l	2
 135  00da 16            	dc.b	22
 137  00db 0000          	dc.w	_TaskCommTimer
 138  00dd 00            	dc.b	0
 139  00de 01            	dc.b	1
 140  00df 00000032      	dc.l	50
 141  00e3 00000032      	dc.l	50
 142  00e7 12            	dc.b	18
 144  00e8 0000          	dc.w	_BotCheck
 145  00ea 01            	dc.b	1
 146  00eb 01            	dc.b	1
 147  00ec 0000000a      	dc.l	10
 148  00f0 0000000a      	dc.l	10
 149  00f4 10            	dc.b	16
 151  00f5 0000          	dc.w	_ManualCtrl
 152  00f7 01            	dc.b	1
 153  00f8 01            	dc.b	1
 154  00f9 0000000a      	dc.l	10
 155  00fd 0000000a      	dc.l	10
 156  0101 03            	dc.b	3
 158  0102 0000          	dc.w	_UpdateIO
 159  0104               _gc1ms:
 160  0104 00            	dc.b	0
 161  0105               _TMP1msCount:
 162  0105 00            	dc.b	0
 167                     .const:	section	.text
 168  0000               _LeapDays:
 169  0000 00            	dc.b	0
 170  0001 1f            	dc.b	31
 171  0002 1d            	dc.b	29
 172  0003 1f            	dc.b	31
 173  0004 1e            	dc.b	30
 174  0005 1f            	dc.b	31
 175  0006 1e            	dc.b	30
 176  0007 1f            	dc.b	31
 177  0008 1f            	dc.b	31
 178  0009 1e            	dc.b	30
 179  000a 1f            	dc.b	31
 180  000b 1e            	dc.b	30
 181  000c 1f            	dc.b	31
 182  000d 1f            	dc.b	31
 183  000e               _NormDays:
 184  000e 00            	dc.b	0
 185  000f 1f            	dc.b	31
 186  0010 1c            	dc.b	28
 187  0011 1f            	dc.b	31
 188  0012 1e            	dc.b	30
 189  0013 1f            	dc.b	31
 190  0014 1e            	dc.b	30
 191  0015 1f            	dc.b	31
 192  0016 1f            	dc.b	31
 193  0017 1e            	dc.b	30
 194  0018 1f            	dc.b	31
 195  0019 1e            	dc.b	30
 196  001a 1f            	dc.b	31
 197  001b 1f            	dc.b	31
 226                     ; 52 void idle(void) 
 226                     ; 53 {     
 228                     .text:	section	.text,new
 229  0000               _idle:
 233                     ; 54 	_asm("nop"); 
 236  0000 9d            nop
 238                     ; 56 	_asm("nop"); 	
 241  0001 9d            nop
 243                     ; 57 }	 
 246  0002 81            	ret
 282                     ; 59 void TaskProc(void)
 282                     ; 60 {
 283                     .text:	section	.text,new
 284  0000               _TaskProc:
 286  0000 88            	push	a
 287       00000001      OFST:	set	1
 290                     ; 63     if(!gc1ms)  //保证1ms扫描一次
 292  0001 725d0104      	tnz	_gc1ms
 293  0005 2607          	jrne	L53
 294                     ; 65 			idle();
 296  0007 cd0000        	call	_idle
 299  000a ac920092      	jpf	L73
 300  000e               L53:
 301                     ; 69 			if(TMP1msCount>0)
 303  000e 725d0105      	tnz	_TMP1msCount
 304  0012 2721          	jreq	L14
 305                     ; 71 				for(i=0;i<sizeof(TaskDb)/sizeof(TaskDb[0]);i++)
 307  0014 0f01          	clr	(OFST+0,sp)
 308  0016               L34:
 309                     ; 73 					TaskDb[i].lLastTime-=TMP1msCount;
 311  0016 7b01          	ld	a,(OFST+0,sp)
 312  0018 97            	ld	xl,a
 313  0019 a60d          	ld	a,#13
 314  001b 42            	mul	x,a
 315  001c c60105        	ld	a,_TMP1msCount
 316  001f b703          	ld	c_lreg+3,a
 317  0021 3f02          	clr	c_lreg+2
 318  0023 3f01          	clr	c_lreg+1
 319  0025 3f00          	clr	c_lreg
 320  0027 1c0002        	addw	x,#_TaskDb+2
 321  002a cd0000        	call	c_lgsub
 323                     ; 71 				for(i=0;i<sizeof(TaskDb)/sizeof(TaskDb[0]);i++)
 325  002d 0c01          	inc	(OFST+0,sp)
 328  002f 7b01          	ld	a,(OFST+0,sp)
 329  0031 a114          	cp	a,#20
 330  0033 25e1          	jrult	L34
 331  0035               L14:
 332                     ; 76 			gc1ms=0;
 334  0035 725f0104      	clr	_gc1ms
 335                     ; 77 			TMP1msCount = 0;
 337  0039 725f0105      	clr	_TMP1msCount
 338                     ; 78 				for(i=0;i<sizeof(TaskDb)/sizeof(TaskDb[0]);i++)
 340  003d 0f01          	clr	(OFST+0,sp)
 341  003f               L15:
 342                     ; 80 						if(!TaskDb[i].cActive)
 344  003f 7b01          	ld	a,(OFST+0,sp)
 345  0041 97            	ld	xl,a
 346  0042 a60d          	ld	a,#13
 347  0044 42            	mul	x,a
 348  0045 724d0000      	tnz	(_TaskDb,x)
 349  0049 273f          	jreq	L35
 350                     ; 81 								continue;
 352                     ; 82 						--TaskDb[i].lLastTime;
 354  004b 7b01          	ld	a,(OFST+0,sp)
 355  004d 97            	ld	xl,a
 356  004e a60d          	ld	a,#13
 357  0050 42            	mul	x,a
 358  0051 1c0002        	addw	x,#_TaskDb+2
 359  0054 a601          	ld	a,#1
 360  0056 cd0000        	call	c_lgsbc
 362                     ; 83 						if(TaskDb[i].lLastTime<=0)
 364  0059 9c            	rvf
 365  005a 7b01          	ld	a,(OFST+0,sp)
 366  005c 97            	ld	xl,a
 367  005d a60d          	ld	a,#13
 368  005f 42            	mul	x,a
 369  0060 1c0002        	addw	x,#_TaskDb+2
 370  0063 cd0000        	call	c_lzmp
 372  0066 2c22          	jrsgt	L35
 373                     ; 85 							TaskDb[i].lLastTime += TaskDb[i].lPeriod;
 375  0068 7b01          	ld	a,(OFST+0,sp)
 376  006a 97            	ld	xl,a
 377  006b a60d          	ld	a,#13
 378  006d 42            	mul	x,a
 379  006e 1c0006        	addw	x,#_TaskDb+6
 380  0071 cd0000        	call	c_ltor
 382  0074 7b01          	ld	a,(OFST+0,sp)
 383  0076 97            	ld	xl,a
 384  0077 a60d          	ld	a,#13
 385  0079 42            	mul	x,a
 386  007a 1c0002        	addw	x,#_TaskDb+2
 387  007d cd0000        	call	c_lgadd
 389                     ; 86 							TaskDb[i].TaskProc();                                 //执行任务
 391  0080 7b01          	ld	a,(OFST+0,sp)
 392  0082 97            	ld	xl,a
 393  0083 a60d          	ld	a,#13
 394  0085 42            	mul	x,a
 395  0086 de000b        	ldw	x,(_TaskDb+11,x)
 396  0089 fd            	call	(x)
 398  008a               L35:
 399                     ; 78 				for(i=0;i<sizeof(TaskDb)/sizeof(TaskDb[0]);i++)
 401  008a 0c01          	inc	(OFST+0,sp)
 404  008c 7b01          	ld	a,(OFST+0,sp)
 405  008e a114          	cp	a,#20
 406  0090 25ad          	jrult	L15
 407  0092               L73:
 408                     ; 90 }
 411  0092 84            	pop	a
 412  0093 81            	ret
 459                     ; 92 void ActiveTask(UCHAR cTaskType, ULONG lPeriod)
 459                     ; 93 {
 460                     .text:	section	.text,new
 461  0000               _ActiveTask:
 463  0000 88            	push	a
 464  0001 89            	pushw	x
 465       00000002      OFST:	set	2
 468                     ; 96     for(i=0;i<sizeof(TaskDb)/sizeof(TaskDb[0]);i++)
 470  0002 5f            	clrw	x
 471  0003 1f01          	ldw	(OFST-1,sp),x
 472  0005               L301:
 473                     ; 98         if(TaskDb[i].cType==cTaskType)
 475  0005 1e01          	ldw	x,(OFST-1,sp)
 476  0007 90ae000d      	ldw	y,#13
 477  000b cd0000        	call	c_imul
 479  000e d6000a        	ld	a,(_TaskDb+10,x)
 480  0011 1103          	cp	a,(OFST+1,sp)
 481  0013 2659          	jrne	L111
 482                     ; 100             if(TaskDb[i].cActive==0)
 484  0015 1e01          	ldw	x,(OFST-1,sp)
 485  0017 90ae000d      	ldw	y,#13
 486  001b cd0000        	call	c_imul
 488  001e 724d0000      	tnz	(_TaskDb,x)
 489  0022 2658          	jrne	L701
 490                     ; 102                 TaskDb[i].cActive=1;
 492  0024 1e01          	ldw	x,(OFST-1,sp)
 493  0026 90ae000d      	ldw	y,#13
 494  002a cd0000        	call	c_imul
 496  002d a601          	ld	a,#1
 497  002f d70000        	ld	(_TaskDb,x),a
 498                     ; 103                 TaskDb[i].lPeriod=lPeriod;
 500  0032 1e01          	ldw	x,(OFST-1,sp)
 501  0034 90ae000d      	ldw	y,#13
 502  0038 cd0000        	call	c_imul
 504  003b 7b09          	ld	a,(OFST+7,sp)
 505  003d d70009        	ld	(_TaskDb+9,x),a
 506  0040 7b08          	ld	a,(OFST+6,sp)
 507  0042 d70008        	ld	(_TaskDb+8,x),a
 508  0045 7b07          	ld	a,(OFST+5,sp)
 509  0047 d70007        	ld	(_TaskDb+7,x),a
 510  004a 7b06          	ld	a,(OFST+4,sp)
 511  004c d70006        	ld	(_TaskDb+6,x),a
 512                     ; 104                 TaskDb[i].lLastTime=lPeriod;
 514  004f 1e01          	ldw	x,(OFST-1,sp)
 515  0051 90ae000d      	ldw	y,#13
 516  0055 cd0000        	call	c_imul
 518  0058 7b09          	ld	a,(OFST+7,sp)
 519  005a d70005        	ld	(_TaskDb+5,x),a
 520  005d 7b08          	ld	a,(OFST+6,sp)
 521  005f d70004        	ld	(_TaskDb+4,x),a
 522  0062 7b07          	ld	a,(OFST+5,sp)
 523  0064 d70003        	ld	(_TaskDb+3,x),a
 524  0067 7b06          	ld	a,(OFST+4,sp)
 525  0069 d70002        	ld	(_TaskDb+2,x),a
 526  006c 200e          	jra	L701
 527  006e               L111:
 528                     ; 96     for(i=0;i<sizeof(TaskDb)/sizeof(TaskDb[0]);i++)
 530  006e 1e01          	ldw	x,(OFST-1,sp)
 531  0070 1c0001        	addw	x,#1
 532  0073 1f01          	ldw	(OFST-1,sp),x
 535  0075 1e01          	ldw	x,(OFST-1,sp)
 536  0077 a30014        	cpw	x,#20
 537  007a 2589          	jrult	L301
 538  007c               L701:
 539                     ; 109 }
 542  007c 5b03          	addw	sp,#3
 543  007e 81            	ret
 590                     ; 111 void ActiveTaskNow(UCHAR cTaskType, ULONG lPeriod)
 590                     ; 112 {
 591                     .text:	section	.text,new
 592  0000               _ActiveTaskNow:
 594  0000 88            	push	a
 595  0001 89            	pushw	x
 596       00000002      OFST:	set	2
 599                     ; 115     for(i=0;i<sizeof(TaskDb)/sizeof(TaskDb[0]);i++)
 601  0002 5f            	clrw	x
 602  0003 1f01          	ldw	(OFST-1,sp),x
 603  0005               L531:
 604                     ; 117         if(TaskDb[i].cType==cTaskType)
 606  0005 1e01          	ldw	x,(OFST-1,sp)
 607  0007 90ae000d      	ldw	y,#13
 608  000b cd0000        	call	c_imul
 610  000e d6000a        	ld	a,(_TaskDb+10,x)
 611  0011 1103          	cp	a,(OFST+1,sp)
 612  0013 2659          	jrne	L341
 613                     ; 119             if(TaskDb[i].cActive==0)
 615  0015 1e01          	ldw	x,(OFST-1,sp)
 616  0017 90ae000d      	ldw	y,#13
 617  001b cd0000        	call	c_imul
 619  001e 724d0000      	tnz	(_TaskDb,x)
 620  0022 2658          	jrne	L141
 621                     ; 121                 TaskDb[i].cActive=1;
 623  0024 1e01          	ldw	x,(OFST-1,sp)
 624  0026 90ae000d      	ldw	y,#13
 625  002a cd0000        	call	c_imul
 627  002d a601          	ld	a,#1
 628  002f d70000        	ld	(_TaskDb,x),a
 629                     ; 122                 TaskDb[i].lPeriod=lPeriod;
 631  0032 1e01          	ldw	x,(OFST-1,sp)
 632  0034 90ae000d      	ldw	y,#13
 633  0038 cd0000        	call	c_imul
 635  003b 7b09          	ld	a,(OFST+7,sp)
 636  003d d70009        	ld	(_TaskDb+9,x),a
 637  0040 7b08          	ld	a,(OFST+6,sp)
 638  0042 d70008        	ld	(_TaskDb+8,x),a
 639  0045 7b07          	ld	a,(OFST+5,sp)
 640  0047 d70007        	ld	(_TaskDb+7,x),a
 641  004a 7b06          	ld	a,(OFST+4,sp)
 642  004c d70006        	ld	(_TaskDb+6,x),a
 643                     ; 123                 TaskDb[i].lLastTime=0;
 645  004f 1e01          	ldw	x,(OFST-1,sp)
 646  0051 90ae000d      	ldw	y,#13
 647  0055 cd0000        	call	c_imul
 649  0058 a600          	ld	a,#0
 650  005a d70005        	ld	(_TaskDb+5,x),a
 651  005d a600          	ld	a,#0
 652  005f d70004        	ld	(_TaskDb+4,x),a
 653  0062 a600          	ld	a,#0
 654  0064 d70003        	ld	(_TaskDb+3,x),a
 655  0067 a600          	ld	a,#0
 656  0069 d70002        	ld	(_TaskDb+2,x),a
 657  006c 200e          	jra	L141
 658  006e               L341:
 659                     ; 115     for(i=0;i<sizeof(TaskDb)/sizeof(TaskDb[0]);i++)
 661  006e 1e01          	ldw	x,(OFST-1,sp)
 662  0070 1c0001        	addw	x,#1
 663  0073 1f01          	ldw	(OFST-1,sp),x
 666  0075 1e01          	ldw	x,(OFST-1,sp)
 667  0077 a30014        	cpw	x,#20
 668  007a 2589          	jrult	L531
 669  007c               L141:
 670                     ; 128 }
 673  007c 5b03          	addw	sp,#3
 674  007e 81            	ret
 721                     ; 130 void SetTaskLastTime(UCHAR cTaskType,ULONG lLastTime)
 721                     ; 131 {
 722                     .text:	section	.text,new
 723  0000               _SetTaskLastTime:
 725  0000 88            	push	a
 726  0001 89            	pushw	x
 727       00000002      OFST:	set	2
 730                     ; 133     for(i=0;i<sizeof(TaskDb)/sizeof(TaskDb[0]);i++)
 732  0002 5f            	clrw	x
 733  0003 1f01          	ldw	(OFST-1,sp),x
 734  0005               L761:
 735                     ; 135         if(TaskDb[i].cType==cTaskType)
 737  0005 1e01          	ldw	x,(OFST-1,sp)
 738  0007 90ae000d      	ldw	y,#13
 739  000b cd0000        	call	c_imul
 741  000e d6000a        	ld	a,(_TaskDb+10,x)
 742  0011 1103          	cp	a,(OFST+1,sp)
 743  0013 261f          	jrne	L571
 744                     ; 137 						TaskDb[i].lLastTime=lLastTime; 
 746  0015 1e01          	ldw	x,(OFST-1,sp)
 747  0017 90ae000d      	ldw	y,#13
 748  001b cd0000        	call	c_imul
 750  001e 7b09          	ld	a,(OFST+7,sp)
 751  0020 d70005        	ld	(_TaskDb+5,x),a
 752  0023 7b08          	ld	a,(OFST+6,sp)
 753  0025 d70004        	ld	(_TaskDb+4,x),a
 754  0028 7b07          	ld	a,(OFST+5,sp)
 755  002a d70003        	ld	(_TaskDb+3,x),a
 756  002d 7b06          	ld	a,(OFST+4,sp)
 757  002f d70002        	ld	(_TaskDb+2,x),a
 758                     ; 138             break;
 760  0032 200e          	jra	L371
 761  0034               L571:
 762                     ; 133     for(i=0;i<sizeof(TaskDb)/sizeof(TaskDb[0]);i++)
 764  0034 1e01          	ldw	x,(OFST-1,sp)
 765  0036 1c0001        	addw	x,#1
 766  0039 1f01          	ldw	(OFST-1,sp),x
 769  003b 1e01          	ldw	x,(OFST-1,sp)
 770  003d a30014        	cpw	x,#20
 771  0040 25c3          	jrult	L761
 772  0042               L371:
 773                     ; 141 }
 776  0042 5b03          	addw	sp,#3
 777  0044 81            	ret
 817                     ; 143 void SuspendTask(UCHAR cTaskType)
 817                     ; 144 {
 818                     .text:	section	.text,new
 819  0000               _SuspendTask:
 821  0000 88            	push	a
 822  0001 89            	pushw	x
 823       00000002      OFST:	set	2
 826                     ; 146     for(i=0;i<sizeof(TaskDb)/sizeof(TaskDb[0]);i++)
 828  0002 5f            	clrw	x
 829  0003 1f01          	ldw	(OFST-1,sp),x
 830  0005               L512:
 831                     ; 148         if(TaskDb[i].cType==cTaskType)
 833  0005 1e01          	ldw	x,(OFST-1,sp)
 834  0007 90ae000d      	ldw	y,#13
 835  000b cd0000        	call	c_imul
 837  000e d6000a        	ld	a,(_TaskDb+10,x)
 838  0011 1103          	cp	a,(OFST+1,sp)
 839  0013 260f          	jrne	L322
 840                     ; 150             TaskDb[i].cActive=0;
 842  0015 1e01          	ldw	x,(OFST-1,sp)
 843  0017 90ae000d      	ldw	y,#13
 844  001b cd0000        	call	c_imul
 846  001e 724f0000      	clr	(_TaskDb,x)
 847                     ; 151             break;
 849  0022 200e          	jra	L122
 850  0024               L322:
 851                     ; 146     for(i=0;i<sizeof(TaskDb)/sizeof(TaskDb[0]);i++)
 853  0024 1e01          	ldw	x,(OFST-1,sp)
 854  0026 1c0001        	addw	x,#1
 855  0029 1f01          	ldw	(OFST-1,sp),x
 858  002b 1e01          	ldw	x,(OFST-1,sp)
 859  002d a30014        	cpw	x,#20
 860  0030 25d3          	jrult	L512
 861  0032               L122:
 862                     ; 154 }
 865  0032 5b03          	addw	sp,#3
 866  0034 81            	ret
1002                     ; 159 SCHAR StartTimer(UCHAR cMode,ULONG lPeriod,void (* routine)(void *   Param1),void *   Param1)
1002                     ; 160 {
1003                     .text:	section	.text,new
1004  0000               _StartTimer:
1006  0000 88            	push	a
1007  0001 5203          	subw	sp,#3
1008       00000003      OFST:	set	3
1011                     ; 164     pt=&TimerData[0];
1013  0003 ae0001        	ldw	x,#_TimerData
1014  0006 1f02          	ldw	(OFST-1,sp),x
1015                     ; 165     for(i=0;i<MAX_TIMER;i++,pt++)
1017  0008 0f01          	clr	(OFST-2,sp)
1018  000a               L313:
1019                     ; 167         if(!pt->cUse)
1021  000a 1e02          	ldw	x,(OFST-1,sp)
1022  000c 7d            	tnz	(x)
1023  000d 2652          	jrne	L123
1024                     ; 169             switch(cMode)
1026  000f 7b04          	ld	a,(OFST+1,sp)
1028                     ; 177                     return -1;                      // error
1029  0011 4d            	tnz	a
1030  0012 270d          	jreq	L523
1031  0014 4a            	dec	a
1032  0015 270a          	jreq	L523
1033  0017 4a            	dec	a
1034  0018 2707          	jreq	L523
1035  001a               L722:
1036                     ; 175                 default:
1036                     ; 176                     pt->cUse = 0;
1038  001a 1e02          	ldw	x,(OFST-1,sp)
1039  001c 7f            	clr	(x)
1040                     ; 177                     return -1;                      // error
1042  001d a6ff          	ld	a,#255
1044  001f 203d          	jra	L22
1045                     ; 171                 case TIMER_MODE_TIMER:              // timer only
1045                     ; 172                 case TIMER_MODE_ONCEROUTINE:        // timely routine
1045                     ; 173                 case TIMER_MODE_CYCROUTINE:         // cyclely routine
1045                     ; 174                     break;
1047  0021               L523:
1048                     ; 179             pt->lPeriod     = lPeriod;              // set timer period
1050  0021 1e02          	ldw	x,(OFST-1,sp)
1051  0023 7b0a          	ld	a,(OFST+7,sp)
1052  0025 e705          	ld	(5,x),a
1053  0027 7b09          	ld	a,(OFST+6,sp)
1054  0029 e704          	ld	(4,x),a
1055  002b 7b08          	ld	a,(OFST+5,sp)
1056  002d e703          	ld	(3,x),a
1057  002f 7b07          	ld	a,(OFST+4,sp)
1058  0031 e702          	ld	(2,x),a
1059                     ; 180             pt->lLastTime   = lPeriod;	    		// get current system time as start timer
1061  0033 1e02          	ldw	x,(OFST-1,sp)
1062  0035 7b0a          	ld	a,(OFST+7,sp)
1063  0037 e709          	ld	(9,x),a
1064  0039 7b09          	ld	a,(OFST+6,sp)
1065  003b e708          	ld	(8,x),a
1066  003d 7b08          	ld	a,(OFST+5,sp)
1067  003f e707          	ld	(7,x),a
1068  0041 7b07          	ld	a,(OFST+4,sp)
1069  0043 e706          	ld	(6,x),a
1070                     ; 181             pt->routine     = routine;              // user timer's routine
1072  0045 1e02          	ldw	x,(OFST-1,sp)
1073  0047 160b          	ldw	y,(OFST+8,sp)
1074  0049 ef0a          	ldw	(10,x),y
1075                     ; 182             pt->cMode       = cMode;                // timer's work mode
1077  004b 7b04          	ld	a,(OFST+1,sp)
1078  004d 1e02          	ldw	x,(OFST-1,sp)
1079  004f e701          	ld	(1,x),a
1080                     ; 183             pt->cUse        = 1;
1082  0051 1e02          	ldw	x,(OFST-1,sp)
1083  0053 a601          	ld	a,#1
1084  0055 f7            	ld	(x),a
1085                     ; 184 						pt->Param1      = Param1;
1087  0056 1e02          	ldw	x,(OFST-1,sp)
1088  0058 160d          	ldw	y,(OFST+10,sp)
1089  005a ef0c          	ldw	(12,x),y
1090                     ; 185             return (i);                             // return timer number
1092  005c 7b01          	ld	a,(OFST-2,sp)
1094  005e               L22:
1096  005e 5b04          	addw	sp,#4
1097  0060 81            	ret
1098  0061               L123:
1099                     ; 165     for(i=0;i<MAX_TIMER;i++,pt++)
1101  0061 0c01          	inc	(OFST-2,sp)
1102  0063 1e02          	ldw	x,(OFST-1,sp)
1103  0065 1c000e        	addw	x,#14
1104  0068 1f02          	ldw	(OFST-1,sp),x
1107  006a 7b01          	ld	a,(OFST-2,sp)
1108  006c a108          	cp	a,#8
1109  006e 259a          	jrult	L313
1110                     ; 193     return (-1);                                    // no timer available
1112  0070 a6ff          	ld	a,#255
1114  0072 20ea          	jra	L22
1150                     ; 199 SCHAR StopTimer ( SCHAR * pcTimerNumber )
1150                     ; 200 {
1151                     .text:	section	.text,new
1152  0000               _StopTimer:
1154  0000 89            	pushw	x
1155       00000000      OFST:	set	0
1158                     ; 201     if(*pcTimerNumber>=MAX_TIMER || *pcTimerNumber==-1)
1160  0001 9c            	rvf
1161  0002 f6            	ld	a,(x)
1162  0003 a108          	cp	a,#8
1163  0005 2e05          	jrsge	L743
1165  0007 f6            	ld	a,(x)
1166  0008 a1ff          	cp	a,#255
1167  000a 2604          	jrne	L543
1168  000c               L743:
1169                     ; 202         return -1;                            // timer number error
1171  000c a6ff          	ld	a,#255
1173  000e 201a          	jra	L03
1174  0010               L543:
1175                     ; 204     TimerData[*pcTimerNumber].cUse=0;
1177  0010 1e01          	ldw	x,(OFST+1,sp)
1178  0012 f6            	ld	a,(x)
1179  0013 5f            	clrw	x
1180  0014 4d            	tnz	a
1181  0015 2a01          	jrpl	L62
1182  0017 53            	cplw	x
1183  0018               L62:
1184  0018 97            	ld	xl,a
1185  0019 90ae000e      	ldw	y,#14
1186  001d cd0000        	call	c_imul
1188  0020 724f0001      	clr	(_TimerData,x)
1189                     ; 205     *pcTimerNumber = -1;
1191  0024 1e01          	ldw	x,(OFST+1,sp)
1192  0026 a6ff          	ld	a,#255
1193  0028 f7            	ld	(x),a
1194                     ; 207     return 0;
1196  0029 4f            	clr	a
1198  002a               L03:
1200  002a 85            	popw	x
1201  002b 81            	ret
1234                     ; 213 void StopAllTimer(void)
1234                     ; 214 {
1235                     .text:	section	.text,new
1236  0000               _StopAllTimer:
1238  0000 88            	push	a
1239       00000001      OFST:	set	1
1242                     ; 216     for(i=0;i<MAX_TIMER;i++)
1244  0001 0f01          	clr	(OFST+0,sp)
1245  0003               L563:
1246                     ; 218         TimerData[i].cUse=0;
1248  0003 7b01          	ld	a,(OFST+0,sp)
1249  0005 97            	ld	xl,a
1250  0006 a60e          	ld	a,#14
1251  0008 42            	mul	x,a
1252  0009 724f0001      	clr	(_TimerData,x)
1253                     ; 216     for(i=0;i<MAX_TIMER;i++)
1255  000d 0c01          	inc	(OFST+0,sp)
1258  000f 7b01          	ld	a,(OFST+0,sp)
1259  0011 a108          	cp	a,#8
1260  0013 25ee          	jrult	L563
1261                     ; 220 }
1264  0015 84            	pop	a
1265  0016 81            	ret
1310                     ; 225 void TaskTimer(void)
1310                     ; 226 {
1311                     .text:	section	.text,new
1312  0000               _TaskTimer:
1314  0000 5203          	subw	sp,#3
1315       00000003      OFST:	set	3
1318                     ; 230     pt=&TimerData[0];                         				// pointer to the first timer
1320  0002 ae0001        	ldw	x,#_TimerData
1321  0005 1f02          	ldw	(OFST-1,sp),x
1322                     ; 231     for(i=0;i<MAX_TIMER;i++,pt++)
1324  0007 0f01          	clr	(OFST-2,sp)
1325  0009               L524:
1326                     ; 233         if(!pt->cUse)
1328  0009 1e02          	ldw	x,(OFST-1,sp)
1329  000b 7d            	tnz	(x)
1330  000c 275f          	jreq	L724
1331                     ; 234             continue;
1333                     ; 235         if((--(pt->lLastTime))==0)
1335  000e 1e02          	ldw	x,(OFST-1,sp)
1336  0010 1c0006        	addw	x,#6
1337  0013 a601          	ld	a,#1
1338  0015 cd0000        	call	c_lgsbc
1340  0018 cd0000        	call	c_lzmp
1342  001b 2650          	jrne	L724
1343                     ; 237             switch(pt->cMode)
1345  001d 1e02          	ldw	x,(OFST-1,sp)
1346  001f e601          	ld	a,(1,x)
1348                     ; 252                     break;
1349  0021 4d            	tnz	a
1350  0022 270b          	jreq	L373
1351  0024 4a            	dec	a
1352  0025 2738          	jreq	L773
1353  0027 4a            	dec	a
1354  0028 270a          	jreq	L573
1355  002a               L104:
1356                     ; 250                 default:
1356                     ; 251                     pt->cUse=0;
1358  002a 1e02          	ldw	x,(OFST-1,sp)
1359  002c 7f            	clr	(x)
1360                     ; 252                     break;
1362  002d 203e          	jra	L724
1363  002f               L373:
1364                     ; 239                 case TIMER_MODE_TIMER:          			// timer only
1364                     ; 240                      pt->cUse=0;
1366  002f 1e02          	ldw	x,(OFST-1,sp)
1367  0031 7f            	clr	(x)
1368                     ; 241                     break;
1370  0032 2039          	jra	L724
1371  0034               L573:
1372                     ; 242                 case TIMER_MODE_CYCROUTINE:           // cyclely routine
1372                     ; 243                      pt->lLastTime+=pt->lPeriod;
1374  0034 1e02          	ldw	x,(OFST-1,sp)
1375  0036 1602          	ldw	y,(OFST-1,sp)
1376  0038 90e605        	ld	a,(5,y)
1377  003b b703          	ld	c_lreg+3,a
1378  003d 90e604        	ld	a,(4,y)
1379  0040 b702          	ld	c_lreg+2,a
1380  0042 90e603        	ld	a,(3,y)
1381  0045 b701          	ld	c_lreg+1,a
1382  0047 90e602        	ld	a,(2,y)
1383  004a b700          	ld	c_lreg,a
1384  004c 1c0006        	addw	x,#6
1385  004f cd0000        	call	c_lgadd
1387                     ; 244                      pt->routine(pt->Param1);         // start user's routine
1389  0052 1e02          	ldw	x,(OFST-1,sp)
1390  0054 ee0c          	ldw	x,(12,x)
1391  0056 1602          	ldw	y,(OFST-1,sp)
1392  0058 90ee0a        	ldw	y,(10,y)
1393  005b 90fd          	call	(y)
1395                     ; 245                     break;
1397  005d 200e          	jra	L724
1398  005f               L773:
1399                     ; 246                 case TIMER_MODE_ONCEROUTINE:          // timer routine once
1399                     ; 247 										pt->cUse=0;
1401  005f 1e02          	ldw	x,(OFST-1,sp)
1402  0061 7f            	clr	(x)
1403                     ; 248                     pt->routine(pt->Param1);          // start user routine                       
1405  0062 1e02          	ldw	x,(OFST-1,sp)
1406  0064 ee0c          	ldw	x,(12,x)
1407  0066 1602          	ldw	y,(OFST-1,sp)
1408  0068 90ee0a        	ldw	y,(10,y)
1409  006b 90fd          	call	(y)
1411                     ; 249                     break;
1413  006d               L144:
1414  006d               L724:
1415                     ; 231     for(i=0;i<MAX_TIMER;i++,pt++)
1417  006d 0c01          	inc	(OFST-2,sp)
1418  006f 1e02          	ldw	x,(OFST-1,sp)
1419  0071 1c000e        	addw	x,#14
1420  0074 1f02          	ldw	(OFST-1,sp),x
1423  0076 7b01          	ld	a,(OFST-2,sp)
1424  0078 a108          	cp	a,#8
1425  007a 258d          	jrult	L524
1426                     ; 256 }
1429  007c 5b03          	addw	sp,#3
1430  007e 81            	ret
1458                     ; 263 @far @interrupt void TIM4_UPD_OVF_IRQHandler(void)
1458                     ; 264 #else // _RAISONANCE_ 
1458                     ; 265 void TIM4_UPD_OVF_IRQHandler(void) interrupt 23
1458                     ; 266 #endif // _COSMIC_ 
1458                     ; 267 { 
1460                     .text:	section	.text,new
1461  0000               f_TIM4_UPD_OVF_IRQHandler:
1463  0000 3b0002        	push	c_x+2
1464  0003 be00          	ldw	x,c_x
1465  0005 89            	pushw	x
1466  0006 3b0002        	push	c_y+2
1467  0009 be00          	ldw	x,c_y
1468  000b 89            	pushw	x
1471                     ; 268 	T4IntCnt=(++T4IntCnt)%10;
1473  000c 725c0000      	inc	_T4IntCnt
1474  0010 c60000        	ld	a,_T4IntCnt
1475  0013 5f            	clrw	x
1476  0014 97            	ld	xl,a
1477  0015 a60a          	ld	a,#10
1478  0017 cd0000        	call	c_smodx
1480  001a 01            	rrwa	x,a
1481  001b c70000        	ld	_T4IntCnt,a
1482  001e 02            	rlwa	x,a
1483                     ; 269   if(T4IntCnt==0)
1485  001f 725d0000      	tnz	_T4IntCnt
1486  0023 260f          	jrne	L354
1487                     ; 271 		if(gc1ms==1)
1489  0025 c60104        	ld	a,_gc1ms
1490  0028 a101          	cp	a,#1
1491  002a 2604          	jrne	L554
1492                     ; 273 			TMP1msCount++;
1494  002c 725c0105      	inc	_TMP1msCount
1495  0030               L554:
1496                     ; 275 		gc1ms=1; 
1498  0030 35010104      	mov	_gc1ms,#1
1499  0034               L354:
1500                     ; 277 	TIM4_ClearITPendingBit(TIM4_IT_UPDATE);
1502  0034 a601          	ld	a,#1
1503  0036 cd0000        	call	_TIM4_ClearITPendingBit
1505                     ; 279 }
1508  0039 85            	popw	x
1509  003a bf00          	ldw	c_y,x
1510  003c 320002        	pop	c_y+2
1511  003f 85            	popw	x
1512  0040 bf00          	ldw	c_x,x
1513  0042 320002        	pop	c_x+2
1514  0045 80            	iret
1524                     	switch	.data
1525  0106               L754_count:
1526  0106 00            	dc.b	0
1527  0107               L164_i:
1528  0107 00            	dc.b	0
1569                     ; 287 void TaskBlinLed(void)
1569                     ; 288 { 
1571                     .text:	section	.text,new
1572  0000               _TaskBlinLed:
1576                     ; 290  IWDG_ReloadCounter();	
1578  0000 cd0000        	call	_IWDG_ReloadCounter
1580                     ; 291 	count=(++count)%10;		
1582  0003 725c0106      	inc	L754_count
1583  0007 c60106        	ld	a,L754_count
1584  000a 5f            	clrw	x
1585  000b 97            	ld	xl,a
1586  000c a60a          	ld	a,#10
1587  000e cd0000        	call	c_smodx
1589  0011 01            	rrwa	x,a
1590  0012 c70106        	ld	L754_count,a
1591  0015 02            	rlwa	x,a
1592                     ; 292 	if(count==0)
1594  0016 725d0106      	tnz	L754_count
1595  001a 261b          	jrne	L105
1596                     ; 294 		LEDPORT->ODR&=~(1<<LEDBIT); 	
1598  001c 7211500f      	bres	20495,#0
1599                     ; 295 		FeedRun		= 0;
1601  0020 721b0002      	bres	_SPIIO+2,#5
1602                     ; 296 		if(Debug_time==1)
1604  0024 c60000        	ld	a,_Debug_time
1605  0027 a101          	cp	a,#1
1606  0029 2614          	jrne	L505
1607                     ; 298 			 Beep(1,10);
1609  002b ae000a        	ldw	x,#10
1610  002e 89            	pushw	x
1611  002f a601          	ld	a,#1
1612  0031 cd0000        	call	_Beep
1614  0034 85            	popw	x
1615  0035 2008          	jra	L505
1616  0037               L105:
1617                     ; 303 		LEDPORT->ODR|=(1<<LEDBIT);    
1619  0037 7210500f      	bset	20495,#0
1620                     ; 304 		FeedRun = 1; 
1622  003b 721a0002      	bset	_SPIIO+2,#5
1623  003f               L505:
1624                     ; 307 }
1627  003f 81            	ret
1743                     	switch	.const
1744  001c               L05:
1745  001c 00015180      	dc.l	86400
1746                     ; 313 time_t MakeTime(TIME *ptm)
1746                     ; 314 {
1747                     .text:	section	.text,new
1748  0000               _MakeTime:
1750  0000 89            	pushw	x
1751  0001 5210          	subw	sp,#16
1752       00000010      OFST:	set	16
1755                     ; 316     time_t t=0;
1757  0003 ae0000        	ldw	x,#0
1758  0006 1f0b          	ldw	(OFST-5,sp),x
1759  0008 ae0000        	ldw	x,#0
1760  000b 1f09          	ldw	(OFST-7,sp),x
1761                     ; 318     if(ptm->iYear>=2000)	/* if after Jan 1, 2000 */
1763  000d 1e11          	ldw	x,(OFST+1,sp)
1764  000f 9093          	ldw	y,x
1765  0011 90fe          	ldw	y,(y)
1766  0013 90a307d0      	cpw	y,#2000
1767  0017 2403          	jruge	L25
1768  0019 cc0121        	jp	L755
1769  001c               L25:
1770                     ; 320 	    for(days=0,year=2000;year<ptm->iYear;year++)
1772  001c 5f            	clrw	x
1773  001d 1f0d          	ldw	(OFST-3,sp),x
1774  001f ae07d0        	ldw	x,#2000
1775  0022 1f0f          	ldw	(OFST-1,sp),x
1777  0024 203e          	jra	L565
1778  0026               L165:
1779                     ; 322 				if((year%4==0 && year%100!=0)||(year%400==0))
1781  0026 1e0f          	ldw	x,(OFST-1,sp)
1782  0028 a604          	ld	a,#4
1783  002a cd0000        	call	c_smodx
1785  002d a30000        	cpw	x,#0
1786  0030 260c          	jrne	L575
1788  0032 1e0f          	ldw	x,(OFST-1,sp)
1789  0034 a664          	ld	a,#100
1790  0036 cd0000        	call	c_smodx
1792  0039 a30000        	cpw	x,#0
1793  003c 260f          	jrne	L375
1794  003e               L575:
1796  003e 1e0f          	ldw	x,(OFST-1,sp)
1797  0040 90ae0190      	ldw	y,#400
1798  0044 cd0000        	call	c_idiv
1800  0047 51            	exgw	x,y
1801  0048 a30000        	cpw	x,#0
1802  004b 2609          	jrne	L175
1803  004d               L375:
1804                     ; 323 					days+=366;
1806  004d 1e0d          	ldw	x,(OFST-3,sp)
1807  004f 1c016e        	addw	x,#366
1808  0052 1f0d          	ldw	(OFST-3,sp),x
1810  0054 2007          	jra	L775
1811  0056               L175:
1812                     ; 325 					days+=365;
1814  0056 1e0d          	ldw	x,(OFST-3,sp)
1815  0058 1c016d        	addw	x,#365
1816  005b 1f0d          	ldw	(OFST-3,sp),x
1817  005d               L775:
1818                     ; 320 	    for(days=0,year=2000;year<ptm->iYear;year++)
1820  005d 1e0f          	ldw	x,(OFST-1,sp)
1821  005f 1c0001        	addw	x,#1
1822  0062 1f0f          	ldw	(OFST-1,sp),x
1823  0064               L565:
1826  0064 1e11          	ldw	x,(OFST+1,sp)
1827  0066 9093          	ldw	y,x
1828  0068 51            	exgw	x,y
1829  0069 fe            	ldw	x,(x)
1830  006a 130f          	cpw	x,(OFST-1,sp)
1831  006c 51            	exgw	x,y
1832  006d 22b7          	jrugt	L165
1833                     ; 328 	    for(month=1;month<ptm->cMon;month++)
1835  006f ae0001        	ldw	x,#1
1836  0072 1f0f          	ldw	(OFST-1,sp),x
1838  0074 2047          	jra	L506
1839  0076               L106:
1840                     ; 330 	        if(((ptm->iYear%4==0) && (ptm->iYear%100!=0))||(ptm->iYear%400==0))
1842  0076 1e11          	ldw	x,(OFST+1,sp)
1843  0078 e601          	ld	a,(1,x)
1844  007a a503          	bcp	a,#3
1845  007c 260e          	jrne	L516
1847  007e 1e11          	ldw	x,(OFST+1,sp)
1848  0080 fe            	ldw	x,(x)
1849  0081 90ae0064      	ldw	y,#100
1850  0085 65            	divw	x,y
1851  0086 51            	exgw	x,y
1852  0087 a30000        	cpw	x,#0
1853  008a 260e          	jrne	L316
1854  008c               L516:
1856  008c 1e11          	ldw	x,(OFST+1,sp)
1857  008e fe            	ldw	x,(x)
1858  008f 90ae0190      	ldw	y,#400
1859  0093 65            	divw	x,y
1860  0094 51            	exgw	x,y
1861  0095 a30000        	cpw	x,#0
1862  0098 260f          	jrne	L116
1863  009a               L316:
1864                     ; 331 		        days+=LeapDays[month];
1866  009a 1e0f          	ldw	x,(OFST-1,sp)
1867  009c d60000        	ld	a,(_LeapDays,x)
1868  009f 1b0e          	add	a,(OFST-2,sp)
1869  00a1 6b0e          	ld	(OFST-2,sp),a
1870  00a3 2402          	jrnc	L44
1871  00a5 0c0d          	inc	(OFST-3,sp)
1872  00a7               L44:
1874  00a7 200d          	jra	L716
1875  00a9               L116:
1876                     ; 333 		        days+=NormDays[month];
1878  00a9 1e0f          	ldw	x,(OFST-1,sp)
1879  00ab d6000e        	ld	a,(_NormDays,x)
1880  00ae 1b0e          	add	a,(OFST-2,sp)
1881  00b0 6b0e          	ld	(OFST-2,sp),a
1882  00b2 2402          	jrnc	L64
1883  00b4 0c0d          	inc	(OFST-3,sp)
1884  00b6               L64:
1885  00b6               L716:
1886                     ; 328 	    for(month=1;month<ptm->cMon;month++)
1888  00b6 1e0f          	ldw	x,(OFST-1,sp)
1889  00b8 1c0001        	addw	x,#1
1890  00bb 1f0f          	ldw	(OFST-1,sp),x
1891  00bd               L506:
1894  00bd 9c            	rvf
1895  00be 1e11          	ldw	x,(OFST+1,sp)
1896  00c0 e602          	ld	a,(2,x)
1897  00c2 5f            	clrw	x
1898  00c3 97            	ld	xl,a
1899  00c4 130f          	cpw	x,(OFST-1,sp)
1900  00c6 2cae          	jrsgt	L106
1901                     ; 336 	    days+=(ptm->cDay-1);
1903  00c8 1e11          	ldw	x,(OFST+1,sp)
1904  00ca e603          	ld	a,(3,x)
1905  00cc 5f            	clrw	x
1906  00cd 97            	ld	xl,a
1907  00ce 5a            	decw	x
1908  00cf 72fb0d        	addw	x,(OFST-3,sp)
1909  00d2 1f0d          	ldw	(OFST-3,sp),x
1910                     ; 337         t=days*86400L+ptm->cHour*3600L+ptm->cMin*60L+ptm->cSec;
1912  00d4 1e11          	ldw	x,(OFST+1,sp)
1913  00d6 e605          	ld	a,(5,x)
1914  00d8 5f            	clrw	x
1915  00d9 97            	ld	xl,a
1916  00da a63c          	ld	a,#60
1917  00dc cd0000        	call	c_cmulx
1919  00df 96            	ldw	x,sp
1920  00e0 1c0005        	addw	x,#OFST-11
1921  00e3 cd0000        	call	c_rtol
1923  00e6 1e11          	ldw	x,(OFST+1,sp)
1924  00e8 e604          	ld	a,(4,x)
1925  00ea 5f            	clrw	x
1926  00eb 97            	ld	xl,a
1927  00ec 90ae0e10      	ldw	y,#3600
1928  00f0 cd0000        	call	c_umul
1930  00f3 96            	ldw	x,sp
1931  00f4 1c0001        	addw	x,#OFST-15
1932  00f7 cd0000        	call	c_rtol
1934  00fa 1e0d          	ldw	x,(OFST-3,sp)
1935  00fc cd0000        	call	c_itolx
1937  00ff ae001c        	ldw	x,#L05
1938  0102 cd0000        	call	c_lmul
1940  0105 96            	ldw	x,sp
1941  0106 1c0001        	addw	x,#OFST-15
1942  0109 cd0000        	call	c_ladd
1944  010c 96            	ldw	x,sp
1945  010d 1c0005        	addw	x,#OFST-11
1946  0110 cd0000        	call	c_ladd
1948  0113 1e11          	ldw	x,(OFST+1,sp)
1949  0115 e606          	ld	a,(6,x)
1950  0117 cd0000        	call	c_ladc
1952  011a 96            	ldw	x,sp
1953  011b 1c0009        	addw	x,#OFST-7
1954  011e cd0000        	call	c_rtol
1956  0121               L755:
1957                     ; 339     return t;
1959  0121 96            	ldw	x,sp
1960  0122 1c0009        	addw	x,#OFST-7
1961  0125 cd0000        	call	c_ltor
1965  0128 5b12          	addw	sp,#18
1966  012a 81            	ret
2057                     	switch	.const
2058  0020               L65:
2059  0020 00000e10      	dc.l	3600
2060  0024               L06:
2061  0024 0000003c      	dc.l	60
2062  0028               L07:
2063  0028 00000064      	dc.l	100
2064  002c               L27:
2065  002c 00000190      	dc.l	400
2066                     ; 344 void LocalTime(TIME *t,time_t *tSec)
2066                     ; 345 {
2067                     .text:	section	.text,new
2068  0000               _LocalTime:
2070  0000 89            	pushw	x
2071  0001 5218          	subw	sp,#24
2072       00000018      OFST:	set	24
2075                     ; 348     days=(*tSec/86400L);
2077  0003 1e1d          	ldw	x,(OFST+5,sp)
2078  0005 cd0000        	call	c_ltor
2080  0008 ae001c        	ldw	x,#L05
2081  000b cd0000        	call	c_ludv
2083  000e 96            	ldw	x,sp
2084  000f 1c000d        	addw	x,#OFST-11
2085  0012 cd0000        	call	c_rtol
2087                     ; 349     hour=(*tSec%86400L)/3600;
2089  0015 1e1d          	ldw	x,(OFST+5,sp)
2090  0017 cd0000        	call	c_ltor
2092  001a ae001c        	ldw	x,#L05
2093  001d cd0000        	call	c_lumd
2095  0020 ae0020        	ldw	x,#L65
2096  0023 cd0000        	call	c_ludv
2098  0026 96            	ldw	x,sp
2099  0027 1c0001        	addw	x,#OFST-23
2100  002a cd0000        	call	c_rtol
2102                     ; 350     min=(*tSec%3600L)/60;
2104  002d 1e1d          	ldw	x,(OFST+5,sp)
2105  002f cd0000        	call	c_ltor
2107  0032 ae0020        	ldw	x,#L65
2108  0035 cd0000        	call	c_lumd
2110  0038 ae0024        	ldw	x,#L06
2111  003b cd0000        	call	c_ludv
2113  003e 96            	ldw	x,sp
2114  003f 1c0005        	addw	x,#OFST-19
2115  0042 cd0000        	call	c_rtol
2117                     ; 351     sec=*tSec%60L;
2119  0045 1e1d          	ldw	x,(OFST+5,sp)
2120  0047 cd0000        	call	c_ltor
2122  004a ae0024        	ldw	x,#L06
2123  004d cd0000        	call	c_lumd
2125  0050 96            	ldw	x,sp
2126  0051 1c0009        	addw	x,#OFST-15
2127  0054 cd0000        	call	c_rtol
2129                     ; 353     year=2000;
2131  0057 ae07d0        	ldw	x,#2000
2132  005a 1f17          	ldw	(OFST-1,sp),x
2133  005c ae0000        	ldw	x,#0
2134  005f 1f15          	ldw	(OFST-3,sp),x
2136  0061 2045          	jra	L566
2137  0063               L166:
2138                     ; 356         days-=(((year%4==0 && year%100!=0)||(year%400==0)) ? 366:365);
2140  0063 7b18          	ld	a,(OFST+0,sp)
2141  0065 a503          	bcp	a,#3
2142  0067 2612          	jrne	L66
2143  0069 96            	ldw	x,sp
2144  006a 1c0015        	addw	x,#OFST-3
2145  006d cd0000        	call	c_ltor
2147  0070 ae0028        	ldw	x,#L07
2148  0073 cd0000        	call	c_lumd
2150  0076 cd0000        	call	c_lrzmp
2152  0079 2612          	jrne	L46
2153  007b               L66:
2154  007b 96            	ldw	x,sp
2155  007c 1c0015        	addw	x,#OFST-3
2156  007f cd0000        	call	c_ltor
2158  0082 ae002c        	ldw	x,#L27
2159  0085 cd0000        	call	c_lumd
2161  0088 cd0000        	call	c_lrzmp
2163  008b 2605          	jrne	L26
2164  008d               L46:
2165  008d ae016e        	ldw	x,#366
2166  0090 2003          	jra	L47
2167  0092               L26:
2168  0092 ae016d        	ldw	x,#365
2169  0095               L47:
2170  0095 cd0000        	call	c_itolx
2172  0098 96            	ldw	x,sp
2173  0099 1c000d        	addw	x,#OFST-11
2174  009c cd0000        	call	c_lgsub
2176                     ; 357         year++;
2178  009f 96            	ldw	x,sp
2179  00a0 1c0015        	addw	x,#OFST-3
2180  00a3 a601          	ld	a,#1
2181  00a5 cd0000        	call	c_lgadc
2183  00a8               L566:
2184                     ; 354     while(days>=(((year%4==0 && year%100!=0)||(year%400==0)) ? 366:365))  //if
2186  00a8 7b18          	ld	a,(OFST+0,sp)
2187  00aa a503          	bcp	a,#3
2188  00ac 2612          	jrne	L201
2189  00ae 96            	ldw	x,sp
2190  00af 1c0015        	addw	x,#OFST-3
2191  00b2 cd0000        	call	c_ltor
2193  00b5 ae0028        	ldw	x,#L07
2194  00b8 cd0000        	call	c_lumd
2196  00bb cd0000        	call	c_lrzmp
2198  00be 2612          	jrne	L001
2199  00c0               L201:
2200  00c0 96            	ldw	x,sp
2201  00c1 1c0015        	addw	x,#OFST-3
2202  00c4 cd0000        	call	c_ltor
2204  00c7 ae002c        	ldw	x,#L27
2205  00ca cd0000        	call	c_lumd
2207  00cd cd0000        	call	c_lrzmp
2209  00d0 2605          	jrne	L67
2210  00d2               L001:
2211  00d2 ae016e        	ldw	x,#366
2212  00d5 2003          	jra	L401
2213  00d7               L67:
2214  00d7 ae016d        	ldw	x,#365
2215  00da               L401:
2216  00da cd0000        	call	c_itolx
2218  00dd 96            	ldw	x,sp
2219  00de 1c000d        	addw	x,#OFST-11
2220  00e1 cd0000        	call	c_lcmp
2222  00e4 2203          	jrugt	L221
2223  00e6 cc0063        	jp	L166
2224  00e9               L221:
2225                     ; 359     month=1;
2227  00e9 ae0001        	ldw	x,#1
2228  00ec 1f13          	ldw	(OFST-5,sp),x
2229  00ee ae0000        	ldw	x,#0
2230  00f1 1f11          	ldw	(OFST-7,sp),x
2232  00f3 204d          	jra	L576
2233  00f5               L176:
2234                     ; 362         days-=(((year%4==0 && year%100!=0)||(year%400==0)) ? LeapDays[month]:NormDays[month]);
2236  00f5 7b18          	ld	a,(OFST+0,sp)
2237  00f7 a503          	bcp	a,#3
2238  00f9 2612          	jrne	L211
2239  00fb 96            	ldw	x,sp
2240  00fc 1c0015        	addw	x,#OFST-3
2241  00ff cd0000        	call	c_ltor
2243  0102 ae0028        	ldw	x,#L07
2244  0105 cd0000        	call	c_lumd
2246  0108 cd0000        	call	c_lrzmp
2248  010b 2612          	jrne	L011
2249  010d               L211:
2250  010d 96            	ldw	x,sp
2251  010e 1c0015        	addw	x,#OFST-3
2252  0111 cd0000        	call	c_ltor
2254  0114 ae002c        	ldw	x,#L27
2255  0117 cd0000        	call	c_lumd
2257  011a cd0000        	call	c_lrzmp
2259  011d 2609          	jrne	L601
2260  011f               L011:
2261  011f 1e13          	ldw	x,(OFST-5,sp)
2262  0121 d60000        	ld	a,(_LeapDays,x)
2263  0124 5f            	clrw	x
2264  0125 97            	ld	xl,a
2265  0126 2007          	jra	L411
2266  0128               L601:
2267  0128 1e13          	ldw	x,(OFST-5,sp)
2268  012a d6000e        	ld	a,(_NormDays,x)
2269  012d 5f            	clrw	x
2270  012e 97            	ld	xl,a
2271  012f               L411:
2272  012f cd0000        	call	c_itolx
2274  0132 96            	ldw	x,sp
2275  0133 1c000d        	addw	x,#OFST-11
2276  0136 cd0000        	call	c_lgsub
2278                     ; 363         month++;
2280  0139 96            	ldw	x,sp
2281  013a 1c0011        	addw	x,#OFST-7
2282  013d a601          	ld	a,#1
2283  013f cd0000        	call	c_lgadc
2285  0142               L576:
2286                     ; 360     while(days>=((year%4==0) ? LeapDays[month]:NormDays[month]))
2288  0142 7b18          	ld	a,(OFST+0,sp)
2289  0144 a503          	bcp	a,#3
2290  0146 2609          	jrne	L611
2291  0148 1e13          	ldw	x,(OFST-5,sp)
2292  014a d60000        	ld	a,(_LeapDays,x)
2293  014d 5f            	clrw	x
2294  014e 97            	ld	xl,a
2295  014f 2007          	jra	L021
2296  0151               L611:
2297  0151 1e13          	ldw	x,(OFST-5,sp)
2298  0153 d6000e        	ld	a,(_NormDays,x)
2299  0156 5f            	clrw	x
2300  0157 97            	ld	xl,a
2301  0158               L021:
2302  0158 cd0000        	call	c_itolx
2304  015b 96            	ldw	x,sp
2305  015c 1c000d        	addw	x,#OFST-11
2306  015f cd0000        	call	c_lcmp
2308  0162 2391          	jrule	L176
2309                     ; 365     days++;
2311  0164 96            	ldw	x,sp
2312  0165 1c000d        	addw	x,#OFST-11
2313  0168 a601          	ld	a,#1
2314  016a cd0000        	call	c_lgadc
2316                     ; 367     t->iYear=year;
2318  016d 1e19          	ldw	x,(OFST+1,sp)
2319  016f 1617          	ldw	y,(OFST-1,sp)
2320  0171 ff            	ldw	(x),y
2321                     ; 368     t->cMon=(char)(month);
2323  0172 7b14          	ld	a,(OFST-4,sp)
2324  0174 1e19          	ldw	x,(OFST+1,sp)
2325  0176 e702          	ld	(2,x),a
2326                     ; 369     t->cDay=(char)(days);
2328  0178 7b10          	ld	a,(OFST-8,sp)
2329  017a 1e19          	ldw	x,(OFST+1,sp)
2330  017c e703          	ld	(3,x),a
2331                     ; 370     t->cSec=(char)(sec);
2333  017e 7b0c          	ld	a,(OFST-12,sp)
2334  0180 1e19          	ldw	x,(OFST+1,sp)
2335  0182 e706          	ld	(6,x),a
2336                     ; 371     t->cMin=(char)(min);
2338  0184 7b08          	ld	a,(OFST-16,sp)
2339  0186 1e19          	ldw	x,(OFST+1,sp)
2340  0188 e705          	ld	(5,x),a
2341                     ; 372     t->cHour=(char)(hour);
2343  018a 7b04          	ld	a,(OFST-20,sp)
2344  018c 1e19          	ldw	x,(OFST+1,sp)
2345  018e e704          	ld	(4,x),a
2346                     ; 373 }
2349  0190 5b1a          	addw	sp,#26
2350  0192 81            	ret
2381                     ; 378 void Init_task_timer(void )
2381                     ; 379 {   
2382                     .text:	section	.text,new
2383  0000               _Init_task_timer:
2387                     ; 380 	TIM4_DeInit();
2389  0000 cd0000        	call	_TIM4_DeInit
2391                     ; 381 	TIM4_TimeBaseInit(TIM4_PRESCALER_16,100L);	
2393  0003 ae0064        	ldw	x,#100
2394  0006 a604          	ld	a,#4
2395  0008 95            	ld	xh,a
2396  0009 cd0000        	call	_TIM4_TimeBaseInit
2398                     ; 382 	TIM4_ITConfig(TIM4_IT_UPDATE,ENABLE);
2400  000c ae0001        	ldw	x,#1
2401  000f a601          	ld	a,#1
2402  0011 95            	ld	xh,a
2403  0012 cd0000        	call	_TIM4_ITConfig
2405                     ; 383 	TIM4_Cmd(ENABLE);
2407  0015 a601          	ld	a,#1
2408  0017 cd0000        	call	_TIM4_Cmd
2410                     ; 384 } 
2413  001a 81            	ret
2441                     ; 386 void InitPLL(void)
2441                     ; 387 {    
2442                     .text:	section	.text,new
2443  0000               _InitPLL:
2447                     ; 389 	CLK_DeInit(); 		  
2449  0000 cd0000        	call	_CLK_DeInit
2451                     ; 390 	CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); 
2453  0003 4f            	clr	a
2454  0004 cd0000        	call	_CLK_HSIPrescalerConfig
2456                     ; 391 	CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);  
2458  0007 4f            	clr	a
2459  0008 cd0000        	call	_CLK_SYSCLKConfig
2461                     ; 392 	CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSI, DISABLE, DISABLE);	  
2463  000b 4b00          	push	#0
2464  000d 4b00          	push	#0
2465  000f ae00e1        	ldw	x,#225
2466  0012 a601          	ld	a,#1
2467  0014 95            	ld	xh,a
2468  0015 cd0000        	call	_CLK_ClockSwitchConfig
2470  0018 85            	popw	x
2471                     ; 393 	CLK_LSICmd(ENABLE);
2473  0019 a601          	ld	a,#1
2474  001b cd0000        	call	_CLK_LSICmd
2476                     ; 395 }
2479  001e 81            	ret
2504                     ; 397 void Init_task(void)
2504                     ; 398 {
2505                     .text:	section	.text,new
2506  0000               _Init_task:
2510                     ; 399 	InitPLL();
2512  0000 cd0000        	call	_InitPLL
2514                     ; 400 	Init_task_timer();
2516  0003 cd0000        	call	_Init_task_timer
2518                     ; 401 }
2521  0006 81            	ret
2553                     ; 403 void Delay(UINT delayCnt)
2553                     ; 404 {
2554                     .text:	section	.text,new
2555  0000               _Delay:
2557  0000 89            	pushw	x
2558       00000000      OFST:	set	0
2561  0001 2002          	jra	L747
2562  0003               L547:
2563                     ; 407         _nop_();
2566  0003 9d            nop
2568                     ; 408         _nop_();
2571  0004 9d            nop
2573  0005               L747:
2574                     ; 405     while(delayCnt--)
2576  0005 1e01          	ldw	x,(OFST+1,sp)
2577  0007 1d0001        	subw	x,#1
2578  000a 1f01          	ldw	(OFST+1,sp),x
2579  000c 1c0001        	addw	x,#1
2580  000f a30000        	cpw	x,#0
2581  0012 26ef          	jrne	L547
2582                     ; 410 }
2585  0014 85            	popw	x
2586  0015 81            	ret
2589                     	switch	.data
2590  0108               _OptionByte:
2591  0108 aa            	dc.b	170
2592  0109 00            	dc.b	0
2593  010a 88            	dc.b	136
2594  010b 00            	dc.b	0
2595  010c 00            	dc.b	0
2596  010d 00            	dc.b	0
2597  010e 00            	dc.b	0
2598  010f 00            	dc.b	0
2599  0110 00            	dc.b	0
2635                     ; 438 void ModifyOptionByte(void)
2635                     ; 439 {
2636                     .text:	section	.text,new
2637  0000               _ModifyOptionByte:
2639  0000 5209          	subw	sp,#9
2640       00000009      OFST:	set	9
2643                     ; 441 		opt[0] = *((NEAR uint8_t*)0x4800);  
2645  0002 c64800        	ld	a,18432
2646  0005 6b01          	ld	(OFST-8,sp),a
2647                     ; 442 		opt[1]	= *((NEAR uint8_t*)0x4801);
2649  0007 c64801        	ld	a,18433
2650  000a 6b02          	ld	(OFST-7,sp),a
2651                     ; 443  		opt[2]	= *((NEAR uint8_t*)0x4803);
2653  000c c64803        	ld	a,18435
2654  000f 6b03          	ld	(OFST-6,sp),a
2655                     ; 444 		opt[3] = *((NEAR uint8_t*)0x4805);
2657  0011 c64805        	ld	a,18437
2658  0014 6b04          	ld	(OFST-5,sp),a
2659                     ; 445 		opt[4] = *((NEAR uint8_t*)0x4807);
2661  0016 c64807        	ld	a,18439
2662  0019 6b05          	ld	(OFST-4,sp),a
2663                     ; 446 		opt[5] = *((NEAR uint8_t*)0x4809);
2665  001b c64809        	ld	a,18441
2666  001e 6b06          	ld	(OFST-3,sp),a
2667                     ; 447 		opt[6] = *((NEAR uint8_t*)0x480B);
2669  0020 c6480b        	ld	a,18443
2670  0023 6b07          	ld	(OFST-2,sp),a
2671                     ; 448 		opt[7] = *((NEAR uint8_t*)0x480D);
2673  0025 c6480d        	ld	a,18445
2674  0028 6b08          	ld	(OFST-1,sp),a
2675                     ; 449 		opt[8] = *((NEAR uint8_t*)0x487E);
2677  002a c6487e        	ld	a,18558
2678  002d 6b09          	ld	(OFST+0,sp),a
2679                     ; 450 		if(memcmp(opt,OptionByte,sizeof(OptionByte))!=0)
2681  002f ae0009        	ldw	x,#9
2682  0032 89            	pushw	x
2683  0033 ae0108        	ldw	x,#_OptionByte
2684  0036 89            	pushw	x
2685  0037 96            	ldw	x,sp
2686  0038 1c0005        	addw	x,#OFST-4
2687  003b cd0000        	call	_memcmp
2689  003e 5b04          	addw	sp,#4
2690  0040 a30000        	cpw	x,#0
2691  0043 2703          	jreq	L177
2692                     ; 452 			ProgramOptionByte();
2694  0045 cd0000        	call	_ProgramOptionByte
2696  0048               L177:
2697                     ; 454 }
2700  0048 5b09          	addw	sp,#9
2701  004a 81            	ret
2741                     ; 456 void ProgramOptionByte(void)
2741                     ; 457 {    
2742                     .text:	section	.text,new
2743  0000               _ProgramOptionByte:
2745  0000 89            	pushw	x
2746       00000002      OFST:	set	2
2749                     ; 461 		char flagstatus=0,timeout = 0xFFF;
2751  0001 0f01          	clr	(OFST-1,sp)
2754  0003 a6ff          	ld	a,#255
2755  0005 6b02          	ld	(OFST+0,sp),a
2756  0007               L1101:
2757                     ; 464 			FLASH->DUKR = 0xae   ;
2759  0007 35ae5064      	mov	20580,#174
2760                     ; 465 			FLASH->DUKR = 0x56;		
2762  000b 35565064      	mov	20580,#86
2763                     ; 467 		while(!(FLASH->IAPSR&0x08));
2765  000f c6505f        	ld	a,20575
2766  0012 a508          	bcp	a,#8
2767  0014 27f1          	jreq	L1101
2768                     ; 469     FLASH->CR2 	= 0x80;
2770  0016 3580505b      	mov	20571,#128
2771                     ; 470     FLASH->NCR2	= 0x7F; 
2773  001a 357f505c      	mov	20572,#127
2774                     ; 474     *((NEAR uint8_t*)0x4800) = OptionByte[0]; 
2776  001e 5501084800    	mov	18432,_OptionByte
2777                     ; 476 		*((NEAR uint8_t*)0x4801) = OptionByte[1];
2779  0023 5501094801    	mov	18433,_OptionByte+1
2780                     ; 477 		*((NEAR uint8_t*)0x4802) = ~OptionByte[1];
2782  0028 c60109        	ld	a,_OptionByte+1
2783  002b 43            	cpl	a
2784  002c c74802        	ld	18434,a
2785                     ; 478 		*((NEAR uint8_t*)0x4803) = OptionByte[2];
2787  002f 55010a4803    	mov	18435,_OptionByte+2
2788                     ; 479 		*((NEAR uint8_t*)0x4804) = ~OptionByte[2];
2790  0034 c6010a        	ld	a,_OptionByte+2
2791  0037 43            	cpl	a
2792  0038 c74804        	ld	18436,a
2793                     ; 480 		*((NEAR uint8_t*)0x4805) = OptionByte[3];
2795  003b 55010b4805    	mov	18437,_OptionByte+3
2796                     ; 481 		*((NEAR uint8_t*)0x4806) = ~OptionByte[3];
2798  0040 c6010b        	ld	a,_OptionByte+3
2799  0043 43            	cpl	a
2800  0044 c74806        	ld	18438,a
2801                     ; 482 		*((NEAR uint8_t*)0x4807) = OptionByte[4];
2803  0047 55010c4807    	mov	18439,_OptionByte+4
2804                     ; 483 		*((NEAR uint8_t*)0x4808) = ~OptionByte[4];
2806  004c c6010c        	ld	a,_OptionByte+4
2807  004f 43            	cpl	a
2808  0050 c74808        	ld	18440,a
2809                     ; 484 		*((NEAR uint8_t*)0x4809) = OptionByte[5];
2811  0053 55010d4809    	mov	18441,_OptionByte+5
2812                     ; 485 		*((NEAR uint8_t*)0x480A) = ~OptionByte[5];
2814  0058 c6010d        	ld	a,_OptionByte+5
2815  005b 43            	cpl	a
2816  005c c7480a        	ld	18442,a
2817                     ; 486 		*((NEAR uint8_t*)0x480B) = OptionByte[6];
2819  005f 55010e480b    	mov	18443,_OptionByte+6
2820                     ; 487 		*((NEAR uint8_t*)0x480C) = ~OptionByte[6];
2822  0064 c6010e        	ld	a,_OptionByte+6
2823  0067 43            	cpl	a
2824  0068 c7480c        	ld	18444,a
2825                     ; 488 		*((NEAR uint8_t*)0x480D) = OptionByte[7];
2827  006b 55010f480d    	mov	18445,_OptionByte+7
2828                     ; 489 		*((NEAR uint8_t*)0x480E) = ~OptionByte[7];
2830  0070 c6010f        	ld	a,_OptionByte+7
2831  0073 43            	cpl	a
2832  0074 c7480e        	ld	18446,a
2833                     ; 490 		*((NEAR uint8_t*)0x487E) = OptionByte[8];
2835  0077 550110487e    	mov	18558,_OptionByte+8
2836                     ; 491 		*((NEAR uint8_t*)0x487F) = ~OptionByte[8];
2838  007c c60110        	ld	a,_OptionByte+8
2839  007f 43            	cpl	a
2840  0080 c7487f        	ld	18559,a
2842  0083 2009          	jra	L3201
2843  0085               L7101:
2844                     ; 494       flagstatus = (uint8_t)(FLASH->IAPSR & (uint8_t)(FLASH_IAPSR_HVOFF |
2844                     ; 495                   FLASH_IAPSR_WR_PG_DIS));
2846  0085 c6505f        	ld	a,20575
2847  0088 a441          	and	a,#65
2848  008a 6b01          	ld	(OFST-1,sp),a
2849                     ; 496 			timeout--;
2851  008c 0a02          	dec	(OFST+0,sp)
2852  008e               L3201:
2853                     ; 492 		while ((flagstatus == 0x00) && (timeout != 0x00))
2855  008e 0d01          	tnz	(OFST-1,sp)
2856  0090 2604          	jrne	L7201
2858  0092 0d02          	tnz	(OFST+0,sp)
2859  0094 26ef          	jrne	L7101
2860  0096               L7201:
2861                     ; 500     FLASH->CR2 &= (uint8_t)(~FLASH_CR2_OPT);
2863  0096 721f505b      	bres	20571,#7
2864                     ; 501     FLASH->NCR2 |= FLASH_NCR2_NOPT;
2866  009a 721e505c      	bset	20572,#7
2867                     ; 502 		FLASH->IAPSR &= 0xF7;
2869  009e 7217505f      	bres	20575,#3
2870                     ; 503 		WWDG->CR = 0x80;//复位stm8
2872  00a2 358050d1      	mov	20689,#128
2873  00a6               L1301:
2874                     ; 504 		while(1);
2876  00a6 20fe          	jra	L1301
3410                     	xdef	_OptionByte
3411                     	xref	_Debug_time
3412                     	xdef	f_TIM4_UPD_OVF_IRQHandler
3413                     	switch	.bss
3414  0000               _T4IntCnt:
3415  0000 00            	ds.b	1
3416                     	xdef	_T4IntCnt
3417                     	xdef	_idle
3418                     	xdef	_NormDays
3419                     	xdef	_LeapDays
3420                     	xdef	_TMP1msCount
3421                     	xdef	_gc1ms
3422                     	xref	_ManualCtrl
3423                     	xref	_TaskCommTimer
3424                     	xref	_TaskCheckSensor
3425                     	xref	_Task_Power_Check
3426                     	xref	_Task_Check_Motor
3427                     	xref	_TaskFREQMotor
3428                     	xref	_TaskCheckBrakeCoil
3429                     	xref	_BotCheck
3430                     	xref	_TaskChargeBat
3431                     	xref	_TaskScanKey
3432                     	xref	_Task_SEG7
3433                     	xref	_Feed
3434                     	xref	_TaskBeep
3435                     	xref	_TaskFREQ
3436                     	xref	_TaskCheckPhase
3437                     	xref	_TaskStopMotor
3438                     	xref	_TaskWarn
3439                     	xref	_Beep
3440                     	xref	_UpdateIO
3441                     	xref	_SPIIO
3442                     	xdef	_TaskDb
3443                     	xdef	_LocalTime
3444                     	xdef	_MakeTime
3445                     	xdef	_ModifyOptionByte
3446                     	xdef	_ProgramOptionByte
3447                     	xdef	_Delay
3448                     	xdef	_TaskBlinLed
3449                     	xdef	_InitPLL
3450                     	xdef	_Init_task
3451                     	xdef	_StopAllTimer
3452                     	xdef	_StopTimer
3453                     	xdef	_StartTimer
3454                     	xdef	_SuspendTask
3455                     	xdef	_SetTaskLastTime
3456                     	xdef	_ActiveTaskNow
3457                     	xdef	_ActiveTask
3458                     	xdef	_TaskProc
3459                     	xdef	_TaskTimer
3460                     	xdef	_Init_task_timer
3461  0001               _TimerData:
3462  0001 000000000000  	ds.b	112
3463                     	xdef	_TimerData
3464                     	xref	_IWDG_ReloadCounter
3465                     	xref	_memcmp
3466                     	xref	_TIM4_ClearITPendingBit
3467                     	xref	_TIM4_ITConfig
3468                     	xref	_TIM4_Cmd
3469                     	xref	_TIM4_TimeBaseInit
3470                     	xref	_TIM4_DeInit
3471                     	xref	_CLK_SYSCLKConfig
3472                     	xref	_CLK_HSIPrescalerConfig
3473                     	xref	_CLK_ClockSwitchConfig
3474                     	xref	_CLK_LSICmd
3475                     	xref	_CLK_DeInit
3476                     	xref.b	c_lreg
3477                     	xref.b	c_x
3478                     	xref.b	c_y
3498                     	xref	c_lcmp
3499                     	xref	c_lgadc
3500                     	xref	c_lrzmp
3501                     	xref	c_lumd
3502                     	xref	c_ludv
3503                     	xref	c_ladc
3504                     	xref	c_cmulx
3505                     	xref	c_ladd
3506                     	xref	c_rtol
3507                     	xref	c_umul
3508                     	xref	c_lmul
3509                     	xref	c_itolx
3510                     	xref	c_idiv
3511                     	xref	c_smodx
3512                     	xref	c_imul
3513                     	xref	c_lgadd
3514                     	xref	c_ltor
3515                     	xref	c_lzmp
3516                     	xref	c_lgsbc
3517                     	xref	c_lgsub
3518                     	end
