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

📄 schedule.lis

📁 mega128平台下
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 007A 8770              andi R24,7
 007C 80930000          sts _TOSH_sched_free,R24
 0080                   .dbline 74
 0080           ;     TOSH_queue[tmp].tp = tp;
 0080 82E0              ldi R24,2
 0082 8A9D              mul R24,R10
 0084 F001              movw R30,R0
 0086 80E0              ldi R24,<_TOSH_queue
 0088 90E0              ldi R25,>_TOSH_queue
 008A E80F              add R30,R24
 008C F91F              adc R31,R25
 008E 7183              std z+1,R23
 0090 6083              std z+0,R22
 0092                   .dbline 75
 0092           ;     atomic_end(fInterruptFlags);
 0092 042F              mov R16,R20
 0094 B8DF              xcall _atomic_end
 0096                   .dbline 76
 0096           ;     return 1;
 0096 01E0              ldi R16,1
 0098 03C0              xjmp L12
 009A           L13:
 009A                   .dbline 78
 009A           ;   }
 009A           ;   else {      
 009A                   .dbline 79
 009A           ;     atomic_end(fInterruptFlags);
 009A 042F              mov R16,R20
 009C B4DF              xcall _atomic_end
 009E                   .dbline 80
 009E           ;     return 0;
 009E 0027              clr R16
 00A0                   .dbline -2
 00A0           L12:
 00A0 0E940000          xcall pop_gset3
 00A4                   .dbline 0 ; func end
 00A4 0895              ret
 00A6                   .dbsym r fInterruptFlags 20 c
 00A6                   .dbsym r tmp 10 c
 00A6                   .dbsym r tp 22 pfV
 00A6                   .dbend
 00A6                   .dbfunc e TOSH_run_next_task _TOSH_run_next_task fi
 00A6           ; fInterruptFlags -> R22
 00A6           ;           func -> R20,R21
 00A6           ;       old_full -> R10
                        .even
 00A6           _TOSH_run_next_task::
 00A6 0E940000          xcall push_gset3
 00AA                   .dbline -1
 00AA                   .dbline 93
 00AA           ;   }
 00AA           ; }
 00AA           ; 
 00AA           ; /*
 00AA           ;  * TOSH_schedule_task()
 00AA           ;  *
 00AA           ;  * Remove the task at the head of the queue and execute it, freeing
 00AA           ;  * the queue entry. Return 1 if a task was executed, 0 if the queue
 00AA           ;  * is empty.
 00AA           ;  */
 00AA           ; 
 00AA           ; unsigned int TOSH_run_next_task ()
 00AA           ; {
 00AA                   .dbline 98
 00AA           ;   uint8_t fInterruptFlags;
 00AA           ;   uint8_t old_full;
 00AA           ;   void (*func)(void);
 00AA           ;   
 00AA           ;   fInterruptFlags = atomic_start();
 00AA AADF              xcall _atomic_start
 00AC 602F              mov R22,R16
 00AE                   .dbline 99
 00AE           ;   old_full = TOSH_sched_full;
 00AE A0900100          lds R10,_TOSH_sched_full
 00B2                   .dbline 100
 00B2           ;   func = TOSH_queue[old_full].tp;
 00B2 82E0              ldi R24,2
 00B4 8A9D              mul R24,R10
 00B6 F001              movw R30,R0
 00B8 80E0              ldi R24,<_TOSH_queue
 00BA 90E0              ldi R25,>_TOSH_queue
 00BC E80F              add R30,R24
 00BE F91F              adc R31,R25
 00C0 4081              ldd R20,z+0
 00C2 5181              ldd R21,z+1
 00C4                   .dbline 101
 00C4           ;   if (func == 0x0)
 00C4 4030              cpi R20,0
 00C6 4507              cpc R20,R21
 00C8 29F4              brne L16
 00CA           X1:
 00CA                   .dbline 102
 00CA           ;   {
 00CA                   .dbline 103
 00CA           ;       atomic_end(fInterruptFlags);
 00CA 062F              mov R16,R22
 00CC 9CDF              xcall _atomic_end
 00CE                   .dbline 105
 00CE           ;        // printf("return 0\n");
 00CE           ;       return 0;
 00CE 0027              clr R16
 00D0 1127              clr R17
 00D2 17C0              xjmp L15
 00D4           L16:
 00D4                   .dbline 108
 00D4           ;   }
 00D4           ; 
 00D4           ;   TOSH_queue[old_full].tp = 0x0;
 00D4 82E0              ldi R24,2
 00D6 8A9D              mul R24,R10
 00D8 F001              movw R30,R0
 00DA 80E0              ldi R24,<_TOSH_queue
 00DC 90E0              ldi R25,>_TOSH_queue
 00DE E80F              add R30,R24
 00E0 F91F              adc R31,R25
 00E2 2224              clr R2
 00E4 3324              clr R3
 00E6 3182              std z+1,R3
 00E8 2082              std z+0,R2
 00EA                   .dbline 109
 00EA           ;   TOSH_sched_full = (old_full + 1) & TOSH_TASK_BITMASK;
 00EA 8A2D              mov R24,R10
 00EC 8F5F              subi R24,255    ; addi 1
 00EE 8770              andi R24,7
 00F0 80930100          sts _TOSH_sched_full,R24
 00F4                   .dbline 110
 00F4           ;   atomic_end(fInterruptFlags);
 00F4 062F              mov R16,R22
 00F6 87DF              xcall _atomic_end
 00F8                   .dbline 111
 00F8           ;   func();
 00F8 FA01              movw R30,R20
 00FA 0E940000          xcall xicall
 00FE                   .dbline 113
 00FE           ;   //printf("running task %d",old_full);
 00FE           ;   return 1;
 00FE 01E0              ldi R16,1
 0100 10E0              ldi R17,0
 0102                   .dbline -2
 0102           L15:
 0102 0E940000          xcall pop_gset3
 0106                   .dbline 0 ; func end
 0106 0895              ret
 0108                   .dbsym r fInterruptFlags 22 c
 0108                   .dbsym r func 20 pfV
 0108                   .dbsym r old_full 10 c
 0108                   .dbend
 0108                   .dbfunc e run_task _run_task fV
                        .even
 0108           _run_task::
 0108                   .dbline -1
 0108                   .dbline 116
 0108           ; }
 0108           ; 
 0108           ; void run_task() {
 0108           L19:
 0108                   .dbline 118
 0108           L20:
 0108                   .dbline 117
 0108           ;   while (TOSH_run_next_task()) 
 0108 CEDF              xcall _TOSH_run_next_task
 010A 0030              cpi R16,0
 010C 0107              cpc R16,R17
 010E E1F7              brne L19
 0110           X2:
 0110                   .dbline 119
 0110           ;     ;
 0110           ;   TOSH_sleep();
 0110 7DDF              xcall _TOSH_sleep
 0112                   .dbline 120
 0112           ;   TOSH_wait();
 0112 7BDF              xcall _TOSH_wait
 0114                   .dbline -2
 0114           L18:
 0114                   .dbline 0 ; func end
 0114 0895              ret
 0116                   .dbend
 0116                   .dbfunc e __nesc_enable_interrupt ___nesc_enable_interrupt fV
                        .even
 0116           ___nesc_enable_interrupt::
 0116                   .dbline -1
 0116                   .dbline 125
 0116           ; }
 0116           ; 
 0116           ; 
 0116           ; 
 0116           ; void __nesc_enable_interrupt() {
 0116                   .dbline 126
 0116           ;   SEI();
 0116 7894              sei
 0118                   .dbline -2
 0118           L22:
 0118                   .dbline 0 ; func end
 0118 0895              ret
 011A                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\document\无线传感器\main_frame\api\schedule.c
 0000           _TOSH_sched_free::
 0000                   .blkb 1
 0001                   .dbsym e TOSH_sched_free _TOSH_sched_free c
 0001           _TOSH_sched_full::
 0001                   .blkb 1
 0002                   .dbsym e TOSH_sched_full _TOSH_sched_full c
 0002           _TOSH_queue::
 0002                   .blkb 16
 0012                   .dbsym e TOSH_queue _TOSH_queue A[16:8]X

⌨️ 快捷键说明

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