迷你RTOS第二版改进版开源——带简单通信功能,不容错过哦 - 侃单片机 - 21IC电子...

来源:百度文库 编辑:神马文学网 时间:2024/04/30 02:17:05
主题:迷你RTOS第二版改进版开源——带简单通信功能,不容错过哦 

帖子: 181

积分: 645

专家等级:

结贴率88%

迷你RTOS第二版改进版开源——带简单通信功能,不容错过哦 RTOS, 通信, 开源, 功能, 改进 本帖最后由 singleywy 于 2010-10-19 12:10 编辑

(声明一下,我写的RTOS结构紧凑,只是针对小容量的51MCU,因为内存小,空间小,采用了汇编写,大容量的MCU,当然可以用C来写)
(os_mini_short_v1.2,所需内存30B,代码空间400B

这是我写的第二版本的RTOS,与第一版本的不同,(都是基于抢占式调度,优先级高的线运行,不支持同一优先级)此版本,每个任务拥有自己独立的堆栈空间,同时中断堆栈与任务堆栈分离,这样有效的利用空间,每个任务定义的空间可以不相等,切换速度很快,直接改变SP,所以只需几十US的时间就可以保证任务切换完成,我为了满足需要,中断堆栈的大小以及任务的堆栈都可以根据需要改动,同时在任务简单通信中,可以采用宏代换类似于inline函数,以空间换取时间,或者直接调用通信函数,以时间换取空间,这几点都比RTXTINY,好,它不支持优先级调度,而我的支持,但唯一最大的缺点还是,只是汇编,不过可以改写成C的,主要是让学习汇编的读者了解一下,同时学习好的编程思想--模块化编程,个人经验不足,仍有不足之处,望大家包涵,一下为代码:

测试条件AT89C2051,RAM:128,ROM:2K,F:12MHZ

以下有该代码的测试图:
大家可以看一下,稍后,我上传附件,或者留邮箱我发送邮箱中  
  • 发短消息
  • 加为好友

singleywy 当前在线

帖子
181 
精华
积分
645 
阅读权限
20 
在线时间
67 小时 
注册时间
2010-5-23 
最后登录
2010-10-30 

帖子: 181

积分: 645

专家等级:

singleywy发表于 2010-10-18 22:05 | 只看该作者 回复 引用 评分 报告 返回版面 TOP   得分:0 2楼: 宏部分,宏为以后的修改非常方便,望学习汇编的好好学习这一方法
;*******************************Macro Assembler Start******************************************
REG_CLR MACRO DATA_START,DATA_END
      CLR A
          MOV R0,#DATA_END
          MOV R1,#(DATA_END-DATA_START)
          REPEAT_CLR:
          MOV @R0,A
          DEC R0
          DJNZ R1,REPEAT_CLR
          ENDM

TIME_INITIAL MACRO SYSTEM_TIME
      MOV TL0,#((65536-SYSTEM_TIME) MOD 256)
          MOV TH0,#((65536-SYSTEM_TIME)/ 256)
          ENDM

TIME_MODEL_SET MACRO
          MOV TMOD,#01H;
          SETB EA
          SETB ET0
          SETB TR0
          ENDM

TIME_CORRECT MACRO SYS_TIME                  ;the task time correct automaticlly                                 ;
          MOV A,#((65536-SYS_TIME+7) MOD 256) ;default worth is 5ms
          CLR TR0
          ADD A,TL0
          MOV TL0,A
          MOV A,TH0
          ADDC A,#((65536-SYS_TIME+7 )/256)
          MOV TH0,A
             SETB TR0
          ENDM
TASK_REG_INITIAL MACRO
      DEC A
          MOV SP,A                                   ;sp points to the stack of the idle task
          MOV TASK_RD_INDEX,#03FH  ;all tasks are inserted to the task_ready_squeue
          MOV TASK_CURRENT_ID,#05H;start with the task idle who have the lowest priority
          MOV TASK_POSITION,#~TASK_POSITION_ID
          MOV TASK_TIMEOUT,#TASK_TIMEOUT_SET ;
          SETB REAL_TASK                     ;indicate that there is a task running
          ENDM

TASK_STACK_INITIAL MACRO
      MOV STACK_BACK_L,#LOW(TASK_SWITCH_FUC)
          MOV STACK_BACK_H,#HIGH(TASK_SWITCH_FUC)
          MOV R0,#TASK_STACK_START
          MOV A,R0
          ADD A,#06H
          MOV TASK0_SP,A
          MOV A,R0
          MOV @R0,#LOW(TASK0)
          INC R0
          MOV @R0,#HIGH(TASK0)
          ADD A,#TASK0_FREE_SPACE
          ENDM

TASK_CREATE MACRO TASK_FREE_SPACE,ADDRESS,LOCALSP,REG_INI,REG0,REG1,REG2
      
          MOV R0,A
          ADD A,#06H
          MOV LOCALSP,A
          MOV A,R0
          MOV @R0,#LOW(ADDRESS)
          INC R0
          MOV @R0,#HIGH(ADDRESS)
          ADD A,#TASK_FREE_SPACE
IF REG_INI <>0                   
          INC R0                         ;ignore ACC
          INC R0
          MOV @R0,REG0
          INC R0
          MOV @R0,REG1
          INC R0
          MOV @R0,REG2
ENDIF
          ENDM

SEND_SIGNAL MACRO ID,FLAG,CONTROL
IF CONTROL <> 0
          SETB FLAG
          MOV A,ID&_DELAY
          JNZ END_&ID
          SETB ID&_READY
          END_&ID:
          NOP
ELSE  
      SETB FLAG
          SETB ID&_READY
ENDIF
          ENDM

GET_SIGNAL MACRO ID,FLAG,SUSPEND_SIGNAL
          JBC FLAG,DP&ID
IF SUSPEND_SIGNAL ==0
      SETB C
ENDIF
IF SUSPEND_SIGNAL <> 0
          CLR EA
          CLR REAL_TASK
          SETB TASK_SUSPEND
          ACALL TASK_SWITCH_FUC
ENDIF     
          DP&ID:
          NOP
          ENDM
            
TASK_GIVEUP MACRO
      CLR EA
          CLR REAL_TASK
          ACALL TASK_SWITCH_FUC
          ENDM
TASK_SUSPENDSET MACRO
      CLR EA
          CLR REAL_TASK
          SETB TASK_SUSPEND
          ACALL TASK_SWITCH_FUC
          ENDM
TASK_DELAYSET MACRO ID,TIME
          MOV ID&_DELAY,TIME
          SETB TASK_SUSPEND
          ENDM
  • 发短消息
  • 加为好友

singleywy 当前在线

帖子
181 
精华
积分
645 
阅读权限
20 
在线时间
67 小时 
注册时间
2010-5-23 
最后登录
2010-10-30 

帖子: 181

积分: 645

专家等级:

singleywy发表于 2010-10-18 22:08 | 只看该作者 回复 引用 评分 报告 返回版面 TOP   得分:0 3楼: 本帖最后由 singleywy 于 2010-10-19 12:05 编辑

这是变量部分,以及常量部分,学习大师的方法,采用DS命令,大家学汇编的话,以后不要再用EQU或者DATA,直接命名变量,这样修改起来很麻烦,采用DS命令修改方便同时写起来轻松:
;**********************************************************************************
DSEG AT 30H  ;30H-47H                                                  ;桑德菲杰
  TASK0_DELAY:  DS 1
  TASK1_DELAY:  DS  1
  TASK2_DELAY:  DS 1
  TASK3_DELAY: DS  1
  TASK4_DELAY: DS  1
  TASK5_DELAY: DS 1
  TASK_TIMEOUT: DS 1
  TASK_CURRENT_ID: DS 1
  TASK0_SP:   DS 1
  TASK1_SP:   DS 1
  TASK2_SP:   DS 1
  TASK3_SP:   DS 1
  TASK4_SP:   DS 1
  TASK5_SP:   DS 1
  
  
  TASK_STACK:     DS 1
  TASK_POSITION:  DS 1
  STACK_BACK_L:   DS 1
  STACK_BACK_H:   DS 1
DSEG AT 48H
  TASK_STACK_SPACE: DS 48 ;48H-77H
  INT_STACK:       DS 6         ;78H-7FH
BSEG AT 00H
  TASK0_READY: DBIT 1
  TASK1_READY: DBIT 1
  TASK2_READY: DBIT 1
  TASK3_READY: DBIT 1
  TASK4_READY: DBIT 1
  TASK5_READY: DBIT 1
  TASK_TIMEOUT_F: DBIT 1
BSEG AT 08H
  TASK_SUSPEND: DBIT 1
  W_SIGNAL:           DBIT 1
  CK_STATE:           DBIT 1
  REAL_TASK:  DBIT 1
;*******************************TASK_FLAG*****************************************************
  FL4:      DBIT 1
;********************************const var****************************************************
ON               EQU 1
OFF                          EQU 0
TASK_MAX_NUM     EQU 6
TASK_READY_NUM          EQU TASK_MAX_NUM-1
TASK_POSITION_ID EQU 20H;00100000B TASK5
TASK_RD_INDEX    EQU 20H  
TASK0_FREE_SPACE EQU 7        ;BACKADDRESS0 BACKADDRESS1 PSW  R0 R1 R2 ACC  ,5+4=9
TASK1_FREE_SPACE EQU 7
TASK2_FREE_SPACE EQU 9
TASK3_FREE_SPACE EQU 7
TASK4_FREE_SPACE EQU 9
TASK5_FREE_SPACE EQU 9
TASK_STACK_START EQU TASK_STACK_SPACE
TASK_SP_POINTER  EQU TASK0_SP
SYS_TIME         EQU 5000
TASK_TIMEOUT_SET EQU 2; set task time out
TASK0_P                  EQU 01H
TASK1_P                  EQU 02H
TASK2_P                  EQU 04H
TASK3_P                  EQU 08H
TASK4_P                  EQU 10H
TASK5_P                  EQU 20H
TASK6_P                  EQU 40H
TIMEOUT_P                  EQU 80H
TASK0_ID                  EQU 00H
TASK1_ID                  EQU 01H
TASK2_ID                  EQU 02H
TASK3_ID                  EQU 03H
TASK4_ID                  EQU 04H
TASK5_ID                  EQU 05H
TASK6_ID                  EQU 06H
;*****************************************************************************************
LED0 BIT P2.0
LED1 BIT P2.1
LED2 BIT P2.2
LED3 BIT P2.3
LED4 BIT P2.4
LED5 BIT P2.5
LED6 BIT P2.6
LED7 BIT P2.7
  • 发短消息
  • 加为好友

singleywy 当前在线

帖子
181 
精华
积分
645 
阅读权限
20 
在线时间
67 小时 
注册时间
2010-5-23 
最后登录
2010-10-30 

帖子: 181

积分: 645

专家等级:

singleywy发表于 2010-10-18 22:10 | 只看该作者 回复 引用 评分 报告 返回版面 TOP   得分:0 4楼: 初始化部分,调用的是宏代码:
;********************************MAIN_PROCESS_START****************************************
CSEG AT 0000H
    AJMP START
ORG 000BH
   AJMP TIME0
ORG 0030H
  START:
  ;*******************************SYSTEM_INITIAL******************************************
  REG_CLR 1FH,7FH;
  TASK_STACK_INITIAL;
  TASK_CREATE TASK1_FREE_SPACE,TASK1,TASK1_SP,OFF
  TASK_CREATE TASK2_FREE_SPACE,TASK2,TASK2_SP,OFF
  TASK_CREATE TASK3_FREE_SPACE,TASK3,TASK3_SP,OFF
  TASK_CREATE TASK4_FREE_SPACE,TASK4,TASK4_SP,OFF
  TASK_REG_INITIAL
  TIME_INITIAL SYS_TIME
  TIME_MODEL_SET
  ;*******************************SYSTEM_INITIAL*****************************************
  ;********************************TASK_INITIAL******************************************
  ;put task_initial
  ;***********************************************************************************
  AJMP TASK5 ;start at the lowest priority task which is idle task
  • 发短消息
  • 加为好友

singleywy 当前在线

帖子
181 
精华
积分
645 
阅读权限
20 
在线时间
67 小时 
注册时间
2010-5-23 
最后登录
2010-10-30 

帖子: 181

积分: 645

专家等级:

singleywy发表于 2010-10-18 22:11 | 只看该作者 回复 引用 评分 报告 返回版面 TOP   得分:0 5楼: 任务部分,里面加入了调试代码:
TASK0:
       CPL LED0
           TASK_DELAYSET TASK0,#200
           TASK_GIVEUP
           SJMP TASK0
  TASK1:
             CPL LED1
           TASK_DELAYSET TASK1,#100
           TASK_GIVEUP
           SJMP TASK1
  TASK2:
           CPL LED2
           MOV R7,#TASK4_ID
           MOV R5,#TASK4_P
           ACALL SEND_SIGNAL_FUC
           TASK_DELAYSET TASK2,#120
           TASK_GIVEUP
           SJMP TASK2
  TASK3:
           CPL LED3
           TASK_DELAYSET TASK3,#50
           TASK_GIVEUP       
           SJMP TASK3
  TASK4:
           CPL LED4
          
           SETB W_SIGNAL
           CLR EA
           ACALL TASK_WAIT_FUC
           JUPD:
           SJMP TASK4
  TASK5:  
           CPL LED5
          
          
           SJMP TASK5
  • 发短消息
  • 加为好友

singleywy 当前在线

帖子
181 
精华
积分
645 
阅读权限
20 
在线时间
67 小时 
注册时间
2010-5-23 
最后登录
2010-10-30 

帖子: 181

积分: 645

专家等级:

singleywy发表于 2010-10-18 22:13 | 只看该作者 回复 引用 评分 报告 返回版面 TOP   得分:0 6楼: 定时器程序,检查任务定时部分,以及是否有任务超时等:
;********************************************************************************
;        Prototype  :                TIME0
;        Description: TIME0 Interrupt Function using 0         and
;                                switch to its own stack when function start,
;                                check all the delay time of all tasks and set
;                          the flag when delay==0 or timeout ==0
;        Input Parameter:None
;        Return     :None(Back to task switch function or interrupt position of current task)
;        Create Data         :2010-10-1
;        Revision History:2010-10-11
;********************************************************************************
TIME0:
      PUSH ACC
      MOV A,#(INT_STACK-1)
          XCH A,SP
          MOV TASK_STACK,A
          PUSH PSW          
          PUSH 00H
          PUSH 01H
          PUSH 02H
          TIME_CORRECT 5000;
;----------------------          
          PUSH TASK_RD_INDEX
          
          MOV R2,#07H
          MOV R1,#TASK0_DELAY
          MOV R0,#01H
         RE_CHECK_DELAY:
          MOV A,@R1
          JZ CHECK_NEXT
          DEC @R1
          MOV A,@R1
          JNZ CHECK_NEXT
          MOV A,R0
          ORL TASK_RD_INDEX,A
         CHECK_NEXT:
          INC R1
          XCH A,R0
          RL A
          XCH A,R0
          DJNZ R2,RE_CHECK_DELAY
          
          POP ACC
;--------------------------          
          POP  02H
          POP  01H
          POP  00H
          POP  PSW
          
          XRL A,TASK_RD_INDEX
          
          JZ INT_END          
            CPL LED7;---------------------
          XCH A,TASK_STACK
          MOV SP,A
          POP ACC
          PUSH STACK_BACK_L
          PUSH STACK_BACK_H
          RETI
         INT_END:
          XCH A,TASK_STACK
          MOV SP,A
          POP ACC
          RETI
  • 发短消息
  • 加为好友

singleywy 当前在线

帖子
181 
精华
积分
645 
阅读权限
20 
在线时间
67 小时 
注册时间
2010-5-23 
最后登录
2010-10-30 

帖子: 181

积分: 645

专家等级:

singleywy发表于 2010-10-18 22:14 | 只看该作者 回复 引用 评分 报告 返回版面 TOP   得分:0 7楼: 任务切换函数,可以被中断调用,或者任务调用:
;***************************************************************************************
;        Prototype:TASK_SWITCH_FUC
;        Description:Check whether there is a task in task_ready_queue,
;                                if the task with the highest priority is in task_ready_queue,
;                                it will be inserted to task_current_id,meanwhile,the current
;                                task will be saved,and change the sp to the next task''s stack
;        Input Parameter:None
;        Return                :None(Back to current task or next task)
;        Create Data:2010-10-1
;        Revision History:2010-10-11
;***************************************************************************************
TASK_SWITCH_FUC:
         MOV TASK_TIMEOUT,#TASK_TIMEOUT_SET
          PUSH PSW
          PUSH 00H
          PUSH 01H
          PUSH 02H
          PUSH ACC
          
          ;------------------TASK_INDEX_MODULE_START----------------------
      JNB TASK_TIMEOUT_F,RD_INDEX
          CLR REAL_TASK
          CLR TASK_TIMEOUT_F
          RD_INDEX:                                                                                                 
          MOV A,TASK_RD_INDEX
          JZ TASK_SWITCH_END;-------------????
          MOV A,TASK_RD_INDEX;R3=TASK_INDEX-------R4=TASK_TEMP_ID
          MOV R2,#06H  ;number
          MOV R1,#00H  ;task_id
          MOV R0,#0FEH  ;task_id_flag cpl
          RE_CHECK:
          RRC A
          JNC NEXT_CHECK
                 MOV A,R0
                 ANL TASK_RD_INDEX,A
             SJMP TASK_INDEX_END;return R1 with ready task_id
          NEXT_CHECK:
                 XCH A,R0
                 RL A
                 XCH A,R0
                 INC R1
          DJNZ R2,RE_CHECK
          TASK_INDEX_END:
                                            
             JNB REAL_TASK,HIGH_PRIO
                         CLR C
                         MOV A,R1
                         SUBB A,TASK_CURRENT_ID
                         JC HIGH_PRIO
                               
                         LOW_PRIO:
                         MOV A,R0
                         CPL A
                         ORL TASK_RD_INDEX,A         ;recover the index flag
                         SJMP TASK_SWITCH_END
                         
                         HIGH_PRIO:                         
                         JBC TASK_SUSPEND,NEXT_JUP                 
                         MOV A,TASK_POSITION
                         CPL A
                         ORL TASK_RD_INDEX,A  ;the current task is inserted to the ready_squeue
                         NEXT_JUP:
                         MOV A,TASK_CURRENT_ID
                         MOV TASK_CURRENT_ID,R1
                         MOV TASK_POSITION,R0
                         NOP        
      
          ADD A,#TASK_SP_POINTER
          XCH A,R0
          MOV @R0,SP

          MOV A,R1
          ADD A,#TASK_SP_POINTER
          XCH A,R0
          MOV SP,@R0
TASK_SWITCH_END:
      SETB REAL_TASK          
          POP ACC
          POP 02H
          POP 01H
          POP 00H
          POP PSW
          SETB EA
          RET
  • 发短消息
  • 加为好友

singleywy 当前在线

帖子
181 
精华
积分
645 
阅读权限
20 
在线时间
67 小时 
注册时间
2010-5-23 
最后登录
2010-10-30 

帖子: 181

积分: 645

专家等级:

singleywy发表于 2010-10-18 22:15 | 只看该作者 回复 引用 评分 报告 返回版面 TOP   得分:0 8楼: 任务放弃CPU程序,参数,一等待信号,二延时等待:
;**************************************************************************************
;        Prototype                :TASK_WAIT_FUC
;        Input Parameter        :Ticks(R7),W_SIGNAL
;        Description                :If W_SIGAL==1,then the current task will suspend because of  signal
;                                          If W_SIGAL==0,then the current task will suspend because of delay time
;        Return                        :R7(FFH|No Change)
;        Create Data                :2010-10-12
;        Revision History:2010-10-13
;**************************************************************************************
        TASK_WAIT_FUC:          
           PUSH ACC

           JBC W_SIGNAL,WAIT_SIGNAL          
           MOV A,R7;(Ticks:1--255)
           JNZ NO_ERRO_0
           CPL A
           MOV R7,A
           POP ACC
           RET
         NO_ERRO_0:
           PUSH 00H
           MOV R0,#TASK0_DELAY
           XCH A,R0
           ADD A,#TASK_CURRENT_ID
           XCH A,R0
           MOV @R0,A
           POP 00H            
          WAIT_SIGNAL:
          
           POP ACC
           SETB TASK_SUSPEND
           PUSH STACK_BACK_L
           PUSH STACK_BACK_H
           RET        ;Back to TASK_SWITCH_FUC
  • 发短消息
  • 加为好友

singleywy 当前在线

帖子
181 
精华
积分
645 
阅读权限
20 
在线时间
67 小时 
注册时间
2010-5-23 
最后登录
2010-10-30 

帖子: 181

积分: 645

专家等级:

singleywy发表于 2010-10-18 22:16 | 只看该作者 回复 引用 评分 报告 返回版面 TOP   得分:0 9楼: 任务发送信息函数,支持任务是否唤起
;**************************************************************************************
;        Prototype                : SEND_SIGNAL_FUC
;        Input Parameter :R7(Task_ID),R5(Task_ready_position),CK_STATE(Check_state)
;        Description                :If CK_STATE==1,then check whether task&id_delay is zero
;        Return                        :R7(FFH:Erro|00H|Nochange)
;        Create Data                : 2010-10-12
;        Revision History: 2010-10-12
;**************************************************************************************
        SEND_SIGNAL_FUC:
          PUSH ACC
          PUSH 00H
          MOV R0,#TASK0_DELAY
          MOV A,R0
          ADD A,R7
          XCH A,R0
          MOV A,@R0
          JNB CK_STATE,STATE_ZERO
          JZ STATE_ZERO
          POP 00H
          POP ACC
          RET
         STATE_ZERO:
          MOV A,R5
          ORL TASK_RD_INDEX,A
          MOV @R0,00H
          POP 00H
          POP ACC
          RET

END
  • 发短消息
  • 加为好友

singleywy 当前在线

帖子
181 
精华
积分
645 
阅读权限
20 
在线时间
67 小时 
注册时间
2010-5-23 
最后登录
2010-10-30 

帖子: 181

积分: 645

专家等级:

singleywy发表于 2010-10-18 22:17 | 只看该作者 回复 引用 评分 报告 返回版面 TOP   得分:0 10楼: 完毕;
  • 发短消息
  • 加为好友

singleywy 当前在线

帖子
181 
精华
积分
645 
阅读权限
20 
在线时间
67 小时 
注册时间
2010-5-23 
最后登录
2010-10-30 

帖子: 181

积分: 645

专家等级:

singleywy发表于 2010-10-18 22:17 | 只看该作者 回复 引用 评分 报告 返回版面 TOP   得分:0 11楼: 等待C语言版本,大家尽情期待
  • 发短消息
  • 加为好友

c+++ 当前离线

帖子
13 
精华
积分
39 
阅读权限
10 
在线时间
4 小时 
注册时间
2010-10-12 
最后登录
2010-10-18 

帖子: 13

积分: 39

专家等级:

c+++发表于 2010-10-18 22:23 | 只看该作者 回复 引用 评分 报告 返回版面 TOP   得分:0 12楼: 顶你! 
  • 发短消息
  • 加为好友

singleywy 当前在线

帖子
181 
精华
积分
645 
阅读权限
20 
在线时间
67 小时 
注册时间
2010-5-23 
最后登录
2010-10-30 

帖子: 181

积分: 645

专家等级:

singleywy发表于 2010-10-18 22:25 | 只看该作者 回复 引用 评分 报告 返回版面 TOP   得分:0 13楼: 本帖最后由 singleywy 于 2010-10-18 22:27 编辑

测试条件RAM:128B,ROM:2K,F:12MHZ:
初始化部分,花费时间461US,运行到TASK5即空闲任务,并运行到切换部分
下载 (71.8 KB)
2010-10-18 22:25
  • 发短消息
  • 加为好友

singleywy 当前在线

帖子
181 
精华
积分
645 
阅读权限
20 
在线时间
67 小时 
注册时间
2010-5-23 
最后登录
2010-10-30 

帖子: 181

积分: 645

专家等级:

singleywy发表于 2010-10-18 22:28 | 只看该作者 回复 引用 评分 报告 返回版面 TOP   得分:0 14楼: 本帖最后由 singleywy 于 2010-10-18 22:31 编辑

由TASK5切换到TASK0,运行状态为522US,任务切换花费时间仅为
522US-461US=61US,即几十US就可以完成任务切换任务
下载 (49.37 KB)
2010-10-18 22:29
  • 发短消息
  • 加为好友

singleywy 当前在线

帖子
181 
精华
积分
645 
阅读权限
20 
在线时间
67 小时 
注册时间
2010-5-23 
最后登录
2010-10-30 

帖子: 181

积分: 645

专家等级:

singleywy发表于 2010-10-18 22:31 | 只看该作者 回复 引用 评分 报告 返回版面 TOP   得分:0 15楼:

任务运行到TASK0

下载 (57.6 KB)
2010-10-18 22:31
  • 发短消息
  • 加为好友

singleywy 当前在线

帖子
181 
精华
积分
645 
阅读权限
20 
在线时间
67 小时 
注册时间
2010-5-23 
最后登录
2010-10-30 

帖子: 181

积分: 645

专家等级:

singleywy发表于 2010-10-18 22:32 | 只看该作者 回复 引用 评分 报告 返回版面 TOP   得分:0 16楼: 为了调试让TASK0主动放弃CPU,开始任务调试了,状态为533US
下载 (65.85 KB)
2010-10-18 22:32
  • 发短消息
  • 加为好友

singleywy 当前在线

帖子
181 
精华
积分
645 
阅读权限
20 
在线时间
67 小时 
注册时间
2010-5-23 
最后登录
2010-10-30 

帖子: 181

积分: 645

专家等级:

singleywy发表于 2010-10-18 22:34 | 只看该作者 回复 引用 评分 报告 返回版面 TOP   得分:0 17楼: 本帖最后由 singleywy 于 2010-10-18 22:35 编辑

任务切换完,运行状态为600US,切换时间为600US-533US=67US,与上次的
时间相接近
下载 (60.83 KB)
2010-10-18 22:34
  • 发短消息
  • 加为好友

singleywy 当前在线

帖子
181 
精华
积分
645 
阅读权限
20 
在线时间
67 小时 
注册时间
2010-5-23 
最后登录
2010-10-30 

帖子: 181

积分: 645

专家等级:

singleywy发表于 2010-10-18 22:36 | 只看该作者 回复 引用 评分 报告 返回版面 TOP   得分:0 18楼: 运行到TASK1
下载 (57.7 KB)
2010-10-18 22:36
  • 发短消息
  • 加为好友

singleywy 当前在线

帖子
181 
精华
积分
645 
阅读权限
20 
在线时间
67 小时 
注册时间
2010-5-23 
最后登录
2010-10-30 

帖子: 181

积分: 645

专家等级:

singleywy发表于 2010-10-18 22:37 | 只看该作者 回复 引用 评分 报告 返回版面 TOP   得分:0 19楼: 一下部分不作测试了,任务切换的时间保证在几十US的时间
  • 发短消息
  • 加为好友

batsong 当前在线

帖子
216 
精华
积分
657 
阅读权限
20 
在线时间
75 小时 
注册时间
2010-3-31 
最后登录
2010-10-30 

帖子: 216

积分: 657

专家等级:

batsong发表于 2010-10-18 23:08 | 只看该作者 回复 引用 评分 报告 返回版面 TOP   得分:0 20楼: 汇编读起来太费力了,不是设计者很难懂,等待c语言版本