⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ucos_ii.ls

📁 ucos在所有cpu下的移植范例
💻 LS
📖 第 1 页 / 共 5 页
字号:
3527  0398 10ef          	cli	
3529  039a 20ea          	bra	L5031
3581                     	switch	.const
3582  0108               L64:
3583  0108 00000064      	dc.l	100
3584                     ; 638 void OSTaskStat (void *pdata)
3584                     ; 639 {
3585                     	switch	.text
3586  039c               _OSTaskStat:
3588  039c 3b            	pshd	
3589  039d 1b97          	leas	-9,s
3590       00000009      OFST:	set	9
3593                     ; 644     pdata = pdata;                               /* Prevent compiler warning for not using 'pdata'     */
3595                     ;***** ldd OFST+0,s ***** M2
3596                     ;***** std OFST+0,s ***** M2
3598  039f 2006          	bra	L5331
3599  03a1               L1331:
3600                     ; 646         OSTimeDly(2 * OS_TICKS_PER_SEC);         /* Wait until statistic task is ready                 */
3602  03a1 cc0028        	ldd	#40
3603  03a4 1611fc        	jsr	_OSTimeDly
3605  03a7               L5331:
3606                     ; 645     while (OSStatRdy == FALSE) {
3608  03a7 f60abb        	ldab	_OSStatRdy
3609  03aa 27f5          	beq	L1331
3610  03ac               L1431:
3611                     ; 649         OS_ENTER_CRITICAL();
3613  03ac 1410          	sei	
3614                     ; 650         OSIdleCtrRun = OSIdleCtr;                /* Obtain the of the idle counter for the past second */
3616                     ;***** ldd _OSIdleCtr+2 ***** M2
3617                     ;***** std _OSIdleCtrRun+2 ***** M2
3618  03ae 18040ac70abe  	movw	_OSIdleCtr+2,_OSIdleCtrRun+2
3619                     ;***** ldd _OSIdleCtr ***** M2
3620                     ;***** std _OSIdleCtrRun ***** M2
3621  03b4 18040ac50abc  	movw	_OSIdleCtr,_OSIdleCtrRun
3622                     ; 651         run          = OSIdleCtr;
3624                     ;***** ldd _OSIdleCtr+2 ***** M2
3625                     ;***** std OFST-2,s ***** M2
3626  03ba 1801870ac7    	movw	_OSIdleCtr+2,OFST-2,s
3627                     ;***** ldd _OSIdleCtr ***** M2
3628                     ;***** std OFST-4,s ***** M2
3629  03bf 1801850ac5    	movw	_OSIdleCtr,OFST-4,s
3630                     ; 652         OSIdleCtr    = 0L;                       /* Reset the idle counter for the next second         */
3632                     ;***** ldd #0 ***** L0
3633  03c4 87            	clra	
3634  03c5 c7            	clrb	
3635  03c6 7c0ac7        	std	_OSIdleCtr+2
3636                     ;***** ldd #0 ***** L0
3637                     ;***** clra  ***** C0
3638                     ;***** clrb  ***** C0
3639  03c9 7c0ac5        	std	_OSIdleCtr
3640                     ; 653         OS_EXIT_CRITICAL();
3642  03cc 10ef          	cli	
3643                     ; 654         if (OSIdleCtrMax > 0L) {
3645  03ce fc0ac0        	ldd	_OSIdleCtrMax
3646                     ;***** bne L44 ***** B1
3647  03d1 2605          	bne	LC002
3648  03d3 fc0ac2        	ldd	_OSIdleCtrMax+2
3649  03d6 2734          	beq	L5431
3650  03d8               LC002:
3651                     ; 655             usage = (INT8S)(100L - 100L * run / OSIdleCtrMax);
3653  03d8 ec87          	ldd	OFST-2,s
3654  03da ee85          	ldx	OFST-4,s
3655  03dc cd0108        	ldy	#L64
3656  03df 160000        	jsr	c_lmul
3657  03e2 cd0ac0        	ldy	#_OSIdleCtrMax
3658  03e5 160000        	jsr	c_ludv
3659  03e8 6c82          	std	OFST-7,s
3660  03ea 6e80          	stx	OFST-9,s
3661  03ec ce0000        	ldx	#0
3662  03ef cc0064        	ldd	#100
3663  03f2 1980          	leay	OFST-9,s
3664  03f4 160000        	jsr	c_lsub
3665  03f7 6b84          	stab	OFST-5,s
3666                     ; 656             if (usage > 100) {
3668                     ;***** ldab OFST-5,s ***** L1
3669  03f9 c164          	cmpb	#100
3670  03fb 2f07          	ble	L7431
3671                     ; 657                 OSCPUUsage = 100;
3673  03fd c664          	ldab	#100
3674  03ff 7b0ac4        	stab	_OSCPUUsage
3676  0402 200b          	bra	L7531
3677  0404               L7431:
3678                     ; 658             } else if (usage < 0) {
3680                     ;***** tst OFST-5,s ***** T3
3681  0404 d7            	tstb	
3682                     ;***** bge L3531 ***** B1
3683                     ; 659                 OSCPUUsage =   0;
3685                     ;***** clr _OSCPUUsage ***** F0
3687                     ;***** jbr L5431 ***** B1
3688  0405 2d05          	blt	L5431
3689                     ; 661                 OSCPUUsage = usage;
3691                     ;***** ldab OFST-5,s ***** L1
3692  0407 7b0ac4        	stab	_OSCPUUsage
3693  040a 2003          	bra	L7531
3694  040c               L5431:
3695                     ; 664             OSCPUUsage = 0;
3697  040c 790ac4        	clr	_OSCPUUsage
3698  040f               L7531:
3699                     ; 666         OSTaskStatHook();                        /* Invoke user definable hook                         */
3701  040f 160000        	jsr	_OSTaskStatHook
3703                     ; 667         OSTimeDly(OS_TICKS_PER_SEC);             /* Accumulate OSIdleCtr for the next second           */
3705  0412 cc0014        	ldd	#20
3706  0415 1611fc        	jsr	_OSTimeDly
3709  0418 2092          	bra	L1431
3803                     ; 715 INT8U OSTCBInit (INT8U prio, OS_STK *ptos, OS_STK *pbos, INT16U id, INT16U stk_size, void *pext, INT16U opt)
3803                     ; 716 {
3804                     	switch	.text
3805  041a               _OSTCBInit:
3807  041a 37            	pshb	
3808  041b 3b            	pshd	
3809       00000002      OFST:	set	2
3812                     ; 720     OS_ENTER_CRITICAL();
3814  041c 1410          	sei	
3815                     ; 721     ptcb = OSTCBFreeList;                                  /* Get a free TCB from the free TCB list    */
3817  041e fd0aa8        	ldy	_OSTCBFreeList
3818  0421 6d80          	sty	OFST-2,s
3819                     ; 722     if (ptcb != (OS_TCB *)0) {
3821                     ;***** ldy OFST-2,s ***** L1
3822                     ;***** sty -2,s ***** C2
3823  0423 182700a6      	beq	L1241
3824                     ; 723         OSTCBFreeList        = ptcb->OSTCBNext;            /* Update pointer to free TCB list          */
3826                     ;***** ldy OFST-2,s ***** L1
3827                     ;***** ldd 14,y ***** M2
3828                     ;***** std _OSTCBFreeList ***** M2
3829  0427 18054e0aa8    	movw	14,y,_OSTCBFreeList
3830                     ; 724         OS_EXIT_CRITICAL();
3832  042c 10ef          	cli	
3833                     ; 725         ptcb->OSTCBStkPtr    = ptos;                       /* Load Stack pointer in TCB                */
3835                     ;***** ldd OFST+3,s ***** M2
3836                     ;***** std [OFST-2,s] ***** D1
3837                     ;***** std 0,y ***** M2
3838  042e 18028540      	movw	OFST+3,s,0,y
3839                     ; 726         ptcb->OSTCBPrio      = (INT8U)prio;                /* Load task priority into TCB              */
3841  0432 e682          	ldab	OFST+0,s
3842                     ;***** ldy OFST-2,s ***** L1
3843  0434 6be819        	stab	25,y
3844                     ; 727         ptcb->OSTCBStat      = OS_STAT_RDY;                /* Task is ready to run                     */
3846                     ;***** ldy OFST-2,s ***** L1
3847                     ;***** clr 24,y ***** C0
3848  0437 87            	clra	
3849  0438 6ae818        	staa	24,y
3850                     ; 728         ptcb->OSTCBDly       = 0;                          /* Task is not delayed                      */
3852                     ;***** clra  ***** C0
3853  043b c7            	clrb	
3854                     ;***** ldy OFST-2,s ***** L1
3855  043c 6ce816        	std	22,y
3856                     ; 731         ptcb->OSTCBExtPtr    = pext;                       /* Store pointer to TCB extension           */
3858                     ;***** ldd OFST+11,s ***** M2
3859                     ;***** ldy OFST-2,s ***** L1
3860                     ;***** std 2,y ***** M2
3861  043f 18028d42      	movw	OFST+11,s,2,y
3862                     ; 732         ptcb->OSTCBStkSize   = stk_size;                   /* Store stack size                         */
3864                     ;***** ldd OFST+9,s ***** M2
3865                     ;***** ldy OFST-2,s ***** L1
3866                     ;***** std 8,y ***** M2
3867  0443 18028b48      	movw	OFST+9,s,8,y
3868                     ;***** clra  ***** C0
3869                     ;***** clrb  ***** C0
3870  0447 6c46          	std	6,y
3871                     ; 733         ptcb->OSTCBStkBottom = pbos;                       /* Store pointer to bottom of stack         */
3873                     ;***** ldd OFST+5,s ***** M2
3874                     ;***** ldy OFST-2,s ***** L1
3875                     ;***** std 4,y ***** M2
3876  0449 18028744      	movw	OFST+5,s,4,y
3877                     ; 734         ptcb->OSTCBOpt       = opt;                        /* Store task options                       */
3879                     ;***** ldd OFST+13,s ***** M2
3880                     ;***** ldy OFST-2,s ***** L1
3881                     ;***** std 10,y ***** M2
3882  044d 18028f4a      	movw	OFST+13,s,10,y
3883                     ; 735         ptcb->OSTCBId        = id;                         /* Store task ID                            */
3885                     ;***** ldd OFST+7,s ***** M2
3886                     ;***** ldy OFST-2,s ***** L1
3887                     ;***** std 12,y ***** M2
3888  0451 1802894c      	movw	OFST+7,s,12,y
3889                     ; 745         ptcb->OSTCBDelReq    = OS_NO_ERR;
3891                     ;***** ldy OFST-2,s ***** L1
3892                     ;***** clr 30,y ***** C0
3893                     ;***** clra  ***** C0
3894  0455 6ae81e        	staa	30,y
3895                     ; 748         ptcb->OSTCBY         = prio >> 3;                  /* Pre-compute X, Y, BitX and BitY          */
3897  0458 e682          	ldab	OFST+0,s
3898  045a 54            	lsrb	
3899  045b 54            	lsrb	
3900  045c 54            	lsrb	
3901                     ;***** ldy OFST-2,s ***** L1
3902  045d 6be81b        	stab	27,y
3903                     ; 749         ptcb->OSTCBBitY      = OSMapTbl[ptcb->OSTCBY];
3905                     ;***** ldy OFST-2,s ***** L1
3906                     ;***** ldab 27,y ***** L1
3907                     ;***** clra  ***** C0
3908  0460 b746          	tfr	d,y
3909  0462 e6ea0000      	ldab	_OSMapTbl,y
3910  0466 ed80          	ldy	OFST-2,s
3911  0468 6be81d        	stab	29,y
3912                     ; 750         ptcb->OSTCBX         = prio & 0x07;
3914  046b e682          	ldab	OFST+0,s
3915  046d c407          	andb	#7
3916                     ;***** ldy OFST-2,s ***** L1
3917  046f 6be81a        	stab	26,y
3918                     ; 751         ptcb->OSTCBBitX      = OSMapTbl[ptcb->OSTCBX];
3920                     ;***** ldy OFST-2,s ***** L1
3921                     ;***** ldab 26,y ***** L1
3922                     ;***** clra  ***** C0
3923  0472 b746          	tfr	d,y
3924  0474 e6ea0000      	ldab	_OSMapTbl,y
3925  0478 ed80          	ldy	OFST-2,s
3926  047a 6be81c        	stab	28,y
3927                     ; 754         ptcb->OSTCBEventPtr  = (OS_EVENT *)0;              /* Task is not pending on an event          */
3929                     ;***** clra  ***** C0
3930  047d c7            	clrb	
3931                     ;***** ldy OFST-2,s ***** L1
3932  047e 6ce812        	std	18,y
3933                     ; 758         ptcb->OSTCBMsg       = (void *)0;                  /* No message received                      */
3935                     ;***** clra  ***** C0
3936                     ;***** clrb  ***** C0
3937                     ;***** ldy OFST-2,s ***** L1
3938  0481 6ce814        	std	20,y
3939                     ; 761         OS_ENTER_CRITICAL();
3941  0484 1410          	sei	
3942                     ; 762         OSTCBPrioTbl[prio]   = ptcb;
3944  0486 e682          	ldab	OFST+0,s
3945                     ;***** clra  ***** C0
3946  0488 59            	lsld	
3947  0489 b746          	tfr	d,y
3948  048b ec80          	ldd	OFST-2,s
3949  048d 6cea0a24      	std	_OSTCBPrioTbl,y
3950                     ; 763         ptcb->OSTCBNext      = OSTCBList;                  /* Link into TCB chain                      */
3952                     ;***** ldd _OSTCBList ***** M2
3953                     ;***** ldy OFST-2,s ***** L6
3954  0491 b746          	tfr	d,y
3955                     ;***** std 14,y ***** M2
3956  0493 18014e0aa4    	movw	_OSTCBList,14,y
3957                     ; 764         ptcb->OSTCBPrev      = (OS_TCB *)0;
3959  0498 87            	clra	
3960  0499 c7            	clrb	
3961                     ;***** ldy OFST-2,s ***** L1
3962  049a 6ce810        	std	16,y
3963                     ; 765         if (OSTCBList != (OS_TCB *)0) {
3965  049d fd0aa4        	ldy	_OSTCBList
3966                     ;***** sty -2,s ***** C2
3967  04a0 2705          	beq	L3241
3968                     ; 766             OSTCBList->OSTCBPrev = ptcb;
3970  04a2 ec80          	ldd	OFST-2,s
3971                     ;***** ldy _OSTCBList ***** L1
3972  04a4 6ce810        	std	16,y
3973  04a7               L3241:
3974                     ; 768         OSTCBList               = ptcb;
3976  04a7 ed80          	ldy	OFST-2,s
3977  04a9 7d0aa4        	sty	_OSTCBList
3978                     ; 769         OSRdyGrp               |= ptcb->OSTCBBitY;         /* Make task ready to run                   */
3980                     ;***** ldy OFST-2,s ***** L1
3981  04ac e6e81d        	ldab	29,y
3982  04af fa0ab6        	orab	_OSRdyGrp
3983  04b2 7b0ab6        	stab	_OSRdyGrp
3984                     ; 770         OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
3986                     ;***** ldy OFST-2,s ***** L1
3987  04b5 e6e81b        	ldab	27,y
3988  04b8 87            	clra	
3989  04b9 b746          	tfr	d,y
3990  04bb ee80          	ldx	OFST-2,s
3991  04bd e6e01c        	ldab	28,x
3992  04c0 eaea0aae      	orab	_OSRdyTbl,y
3993  04c4 6bea0aae      	stab

⌨️ 快捷键说明

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