os_core.ls1
来自「在51单片机上移植成功的UCOS-II操作系统源代码,包括源代码及相关注释」· LS1 代码 · 共 1,120 行 · 第 1/5 页
LS1
1,120 行
603 ; *
604 ; * Note : This function is INTERNAL to uC/OS-II and your application should not call
it.
605 ; *****************************************************************************************
****************
606 ; */
607 ; #if (OS_Q_EN && (OS_MAX_QS >= 2)) || OS_MBOX_EN || OS_SEM_EN
A51 MACRO ASSEMBLER OS_CORE 09/09/2007 21:12:24 PAGE 11
608 ; void OSEventTO (OS_EVENT *pevent) reentrant
609 ; {
610 ; if ((pevent->OSEventTbl[OSTCBCur->OSTCBY] &= ~OSTCBCur->OSTCBBitX) == 0) {
611 ; pevent->OSEventGrp &= ~OSTCBCur->OSTCBBitY;
612 ; }
613 ; OSTCBCur->OSTCBStat = OS_STAT_RDY; /* Set status to ready
*/
614 ; OSTCBCur->OSTCBEventPtr = (OS_EVENT *)0; /* No longer waiting for event
*/
615 ; }
616 ; #endif
617 ; /*$PAGE*/
618 ; /*
619 ; *****************************************************************************************
****************
620 ; * INITIALIZE EVENT CONTROL BLOCK'S WAIT LIST
621 ; *
622 ; * Description: This function is called by other uC/OS-II services to initialize the event
wait list.
623 ; *
624 ; * Arguments : pevent is a pointer to the event control block allocated to the event.
625 ; *
626 ; * Returns : none
627 ; *
628 ; * Note : This function is INTERNAL to uC/OS-II and your application should not call
it.
629 ; *****************************************************************************************
****************
630 ; */
631 ; #if (OS_Q_EN && (OS_MAX_QS >= 2)) || OS_MBOX_EN || OS_SEM_EN
632 ; void OSEventWaitListInit (OS_EVENT *pevent) reentrant
633 ; {
634 ; INT8U i;
635 ;
636 ;
637 ; pevent->OSEventGrp = 0x00; /* No task waiting on event
*/
638 ; for (i = 0; i < OS_EVENT_TBL_SIZE; i++) {
639 ; pevent->OSEventTbl[i] = 0x00;
640 ; }
641 ; }
642 ; #endif
643 ; /*$PAGE*/
644 ; /*
645 ; *****************************************************************************************
****************
646 ; * INITIALIZATION
647 ; *
648 ; * Description: This function is used to initialize the internals of uC/OS-II and MUST be
called prior to
649 ; * creating any uC/OS-II object and, prior to calling OSStart().
650 ; *
651 ; * Arguments : none
652 ; *
653 ; * Returns : none
654 ; *****************************************************************************************
****************
655 ; */
656 ;
657 ; void OSInit (void) reentrant
658
---- 659 RSEG ?PR?_?OSInit?OS_CORE
0000 660 _?OSInit:
661 USING 0
662 ; SOURCE LINE # 225
0000 90FFFE 663 MOV DPTR,#0FFFEH
A51 MACRO ASSEMBLER OS_CORE 09/09/2007 21:12:24 PAGE 12
0003 120000 F 664 LCALL ?C?ADDXBP
665 ; {
666 ; INT16U i;
667 ;
668 ;
669 ; OSTime = 0L; /* Clear the 32-bit system clo
ck */
670 ; SOURCE LINE # 230
0006 900000 F 671 MOV DPTR,#OSTime
0009 120000 F 672 LCALL ?C?LSTKXDATA
000C 00 673 DB 00H
000D 00 674 DB 00H
000E 00 675 DB 00H
000F 00 676 DB 00H
677 ; OSIntNesting = 0; /* Clear the interrupt nesting
counter */
678 ; SOURCE LINE # 231
0010 E4 679 CLR A
0011 900000 F 680 MOV DPTR,#OSIntNesting
0014 F0 681 MOVX @DPTR,A
682 ; OSLockNesting = 0; /* Clear the scheduling lock c
ounter */
683 ; SOURCE LINE # 232
0015 900000 F 684 MOV DPTR,#OSLockNesting
0018 F0 685 MOVX @DPTR,A
686 ; #if OS_TASK_CREATE_EN || OS_TASK_CREATE_EXT_EN || OS_TASK_DEL_EN
687 ; OSTaskCtr = 0; /* Clear the number of tasks
*/
688 ; SOURCE LINE # 234
0019 900000 F 689 MOV DPTR,#OSTaskCtr
001C F0 690 MOVX @DPTR,A
691 ; #endif
692 ; OSRunning = FALSE; /* Indicate that multitasking
not started */
693 ; SOURCE LINE # 236
001D 7800 F 694 MOV R0,#LOW (OSRunning)
001F F6 695 MOV @R0,A
696 ; OSIdleCtr = 0L; /* Clear the 32-bit idle count
er */
697 ; SOURCE LINE # 237
0020 900000 F 698 MOV DPTR,#OSIdleCtr
0023 120000 F 699 LCALL ?C?LSTKXDATA
0026 00 700 DB 00H
0027 00 701 DB 00H
0028 00 702 DB 00H
0029 00 703 DB 00H
704 ; #if OS_TASK_STAT_EN && OS_TASK_CREATE_EXT_EN
705 ; OSIdleCtrRun = 0L;
706 ; OSIdleCtrMax = 0L;
707 ; OSStatRdy = FALSE; /* Statistic task is not ready
*/
708 ; #endif
709 ; OSCtxSwCtr = 0; /* Clear the context switch co
unter */
710 ; SOURCE LINE # 243
002A 900000 F 711 MOV DPTR,#OSCtxSwCtr
002D 120000 F 712 LCALL ?C?LSTKXDATA
0030 00 713 DB 00H
0031 00 714 DB 00H
0032 00 715 DB 00H
0033 00 716 DB 00H
717 ; OSRdyGrp = 0; /* Clear the ready list
*/
718 ; SOURCE LINE # 244
0034 E4 719 CLR A
0035 900000 F 720 MOV DPTR,#OSRdyGrp
A51 MACRO ASSEMBLER OS_CORE 09/09/2007 21:12:24 PAGE 13
0038 F0 721 MOVX @DPTR,A
722 ; for (i = 0; i < OS_RDY_TBL_SIZE; i++) {
723 ; SOURCE LINE # 245
0039 850083 F 724 MOV DPH,?C_XBP
003C 850082 F 725 MOV DPL,?C_XBP+01H
003F F0 726 MOVX @DPTR,A
0040 A3 727 INC DPTR
0041 F0 728 MOVX @DPTR,A
0042 729 ?C0001:
0042 850083 F 730 MOV DPH,?C_XBP
0045 850082 F 731 MOV DPL,?C_XBP+01H
0048 E0 732 MOVX A,@DPTR
0049 FE 733 MOV R6,A
004A A3 734 INC DPTR
004B E0 735 MOVX A,@DPTR
004C FF 736 MOV R7,A
004D C3 737 CLR C
004E 9404 738 SUBB A,#04H
0050 EE 739 MOV A,R6
0051 9400 740 SUBB A,#00H
0053 501A 741 JNC ?C0002
742 ; OSRdyTbl[i] = 0;
743 ; SOURCE LINE # 246
0055 7400 F 744 MOV A,#LOW (OSRdyTbl)
0057 2F 745 ADD A,R7
0058 F582 746 MOV DPL,A
005A E4 747 CLR A
005B 3400 F 748 ADDC A,#HIGH (OSRdyTbl)
005D F583 749 MOV DPH,A
005F E4 750 CLR A
0060 F0 751 MOVX @DPTR,A
752 ; }
753 ; SOURCE LINE # 247
0061 850083 F 754 MOV DPH,?C_XBP
0064 850082 F 755 MOV DPL,?C_XBP+01H
0067 75F001 756 MOV B,#01H
006A 120000 F 757 LCALL ?C?IILDX
006D 80D3 758 SJMP ?C0001
006F 759 ?C0002:
760 ;
761 ; OSPrioCur = 0;
762 ; SOURCE LINE # 249
006F E4 763 CLR A
0070 7800 F 764 MOV R0,#LOW (OSPrioCur)
0072 F6 765 MOV @R0,A
766 ; OSPrioHighRdy = 0;
767 ; SOURCE LINE # 250
0073 08 768 INC R0
0074 F6 769 MOV @R0,A
770 ; OSTCBHighRdy = (OS_TCB *)0; /* TCB Initialization
*/
771 ; SOURCE LINE # 251
0075 7800 F 772 MOV R0,#LOW (OSTCBHighRdy)
0077 F6 773 MOV @R0,A
0078 08 774 INC R0
0079 F6 775 MOV @R0,A
007A 08 776 INC R0
007B F6 777 MOV @R0,A
778 ; OSTCBCur = (OS_TCB *)0;
779 ; SOURCE LINE # 252
007C 7800 F 780 MOV R0,#LOW (OSTCBCur)
007E F6 781 MOV @R0,A
007F 08 782 INC R0
0080 F6 783 MOV @R0,A
0081 08 784 INC R0
0082 F6 785 MOV @R0,A
A51 MACRO ASSEMBLER OS_CORE 09/09/2007 21:12:24 PAGE 14
786 ; OSTCBList = (OS_TCB *)0;
787 ; SOURCE LINE # 253
0083 F9 788 MOV R1,A
0084 900000 F 789 MOV DPTR,#OSTCBList
0087 C9 790 XCH A,R1
0088 F0 791 MOVX @DPTR,A
0089 A3 792 INC DPTR
008A F0 793 MOVX @DPTR,A
008B A3 794 INC DPTR
008C E9 795 MOV A,R1
008D F0 796 MOVX @DPTR,A
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?