?? test.lss
字號:
636: 92 2f mov r25, r18
638: 90 95 com r25
63a: 82 81 ldd r24, Z+2 ; 0x02
63c: 89 23 and r24, r25
63e: 82 83 std Z+2, r24 ; 0x02
640: 22 2a or r2, r18
642: 0f 90 pop r0
644: 0f be out 0x3f, r0 ; 63
646: 11 24 eor r1, r1
648: 09 c0 rjmp .+18 ; 0x65c
64a: fc 01 movw r30, r24
64c: ee 0f add r30, r30
64e: ff 1f adc r31, r31
650: e8 0f add r30, r24
652: f9 1f adc r31, r25
654: ee 58 subi r30, 0x8E ; 142
656: fd 4f sbci r31, 0xFD ; 253
658: 81 e0 ldi r24, 0x01 ; 1
65a: 81 83 std Z+1, r24 ; 0x01
65c: df 91 pop r29
65e: cf 91 pop r28
660: 08 95 ret
00000662 <OSTaskSemPost>:
662: a8 df rcall .-176 ; 0x5b4
664: dd de rcall .-582 ; 0x420
666: 08 95 ret
00000668 <OSSemClean>:
668: 99 27 eor r25, r25
66a: fc 01 movw r30, r24
66c: ee 0f add r30, r30
66e: ff 1f adc r31, r31
670: e8 0f add r30, r24
672: f9 1f adc r31, r25
674: ee 58 subi r30, 0x8E ; 142
676: fd 4f sbci r31, 0xFD ; 253
678: 11 82 std Z+1, r1 ; 0x01
67a: 08 95 ret
0000067c <TCN0Init>:
67c: 13 be out 0x33, r1 ; 51
67e: 83 b7 in r24, 0x33 ; 51
680: 85 60 ori r24, 0x05 ; 5
682: 83 bf out 0x33, r24 ; 51
684: 89 b7 in r24, 0x39 ; 57
686: 81 60 ori r24, 0x01 ; 1
688: 89 bf out 0x39, r24 ; 57
68a: 87 eb ldi r24, 0xB7 ; 183
68c: 82 bf out 0x32, r24 ; 50
68e: 08 95 ret
00000690 <OSIntEnter>:
}
/************************************************************************************************************************
函數名稱: OSIntEnter
函數原型: void OSIntEnter(void)
函數功能: 進入中斷時調用此函數
入口參數: 無
出口參數: 無
有關說明:
創建時間: 2007年3月7日
修改時間:
************************************************************************************************************************/
void OSIntEnter(void)
{
OS_ENTER_CRITICAL();
690: 0f b6 in r0, 0x3f ; 63
692: 0f 92 push r0
694: 11 24 eor r1, r1
696: f8 94 cli
if(OSIntNesting<255)
698: 8f ef ldi r24, 0xFF ; 255
69a: 48 12 cpse r4, r24
{
OSIntNesting++; /*中斷嵌套加1 */
69c: 43 94 inc r4
}
OS_EXIT_CRITICAL();
69e: 0f 90 pop r0
6a0: 0f be out 0x3f, r0 ; 63
6a2: 11 24 eor r1, r1
6a4: 08 95 ret
000006a6 <OSIntExit>:
}
/************************************************************************************************************************
函數名稱: OSIntExit
函數原型: void OSIntExit(void)
函數功能: 從中斷中退出時調用此函數,如果中斷讓更高優先級的任務就緒就進行任務調度
入口參數: 無
出口參數: 無
有關說明: OSIntEnter()和OSIntExit()要成對出現使用
創建時間: 2007年3月7日
修改時間:
************************************************************************************************************************/
void OSIntExit(void)
{
OS_ENTER_CRITICAL();
6a6: 0f b6 in r0, 0x3f ; 63
6a8: 0f 92 push r0
6aa: 11 24 eor r1, r1
6ac: f8 94 cli
if(OSIntNesting>0)
6ae: 41 10 cpse r4, r1
{
OSIntNesting--; /*中斷嵌套減1 */
6b0: 4a 94 dec r4
}
if(OSIntNesting == 0)
6b2: 44 20 and r4, r4
6b4: 41 f4 brne .+16 ; 0x6c6
{
OSFindPrioHighRdy(); /*找出就緒表中優先級最高的任務*/
6b6: a1 de rcall .-702 ; 0x3fa
if(OSPrioHighRdy != OSPrioCur)
6b8: 53 14 cp r5, r3
6ba: 29 f0 breq .+10 ; 0x6c6
{
OS_EXIT_CRITICAL();
6bc: 0f 90 pop r0
6be: 0f be out 0x3f, r0 ; 63
6c0: 11 24 eor r1, r1
IntSwitch(); /*進行任務調度 */
6c2: 8f de rcall .-738 ; 0x3e2
return;
6c4: 08 95 ret
}
}
OS_EXIT_CRITICAL();
6c6: 0f 90 pop r0
6c8: 0f be out 0x3f, r0 ; 63
6ca: 11 24 eor r1, r1
6cc: 08 95 ret
6ce: 08 95 ret
000006d0 <__vector_9>:
}
/************************************************************************************************************************
函數名稱: SIGNAL(SIG_OVERFLOW0)
函數原型: SIGNAL(SIG_OVERFLOW0)
函數功能: 定時器0溢出中斷處理
入口參數: 無
出口參數: 無
有關說明: 用來為需要延時的任務進行任務延時
創建時間: 2007年3月3日
修改時間:
************************************************************************************************************************/
SIGNAL(SIG_OVERFLOW0)
{
6d0: 1f 92 push r1
6d2: 0f 92 push r0
6d4: 0f b6 in r0, 0x3f ; 63
6d6: 0f 92 push r0
6d8: 11 24 eor r1, r1
6da: 2f 93 push r18
6dc: 3f 93 push r19
6de: 4f 93 push r20
6e0: 5f 93 push r21
6e2: 6f 93 push r22
6e4: 7f 93 push r23
6e6: 8f 93 push r24
6e8: 9f 93 push r25
6ea: af 93 push r26
6ec: bf 93 push r27
6ee: ef 93 push r30
6f0: ff 93 push r31
OSIntEnter();
6f2: ce df rcall .-100 ; 0x690
6f4: 61 e0 ldi r22, 0x01 ; 1
6f6: 70 e0 ldi r23, 0x00 ; 0
6f8: e5 e6 ldi r30, 0x65 ; 101
6fa: f0 e0 ldi r31, 0x00 ; 0
6fc: 20 e0 ldi r18, 0x00 ; 0
6fe: 30 e0 ldi r19, 0x00 ; 0
700: 43 e0 ldi r20, 0x03 ; 3
char usage;
Uint_8bit i;//uh,ul;
for(i=0;i < OS_TASKS;i++) /*刷新各任務時鐘 */
{
if(TCB[i].OSWaitTick && (TCB[i].OSWaitTick != 0xffff))
702: 82 81 ldd r24, Z+2 ; 0x02
704: 93 81 ldd r25, Z+3 ; 0x03
706: 00 97 sbiw r24, 0x00 ; 0
708: c9 f0 breq .+50 ; 0x73c
70a: 5f ef ldi r21, 0xFF ; 255
70c: 8f 3f cpi r24, 0xFF ; 255
70e: 95 07 cpc r25, r21
710: a9 f0 breq .+42 ; 0x73c
{
TCB[i].OSWaitTick--;
712: 01 97 sbiw r24, 0x01 ; 1
714: 82 83 std Z+2, r24 ; 0x02
716: 93 83 std Z+3, r25 ; 0x03
if(TCB[i].OSWaitTick == 0) /*當任務時鐘到時,必須是由定時器減時的才行*/
718: 89 2b or r24, r25
71a: 81 f4 brne .+32 ; 0x73c
{
OSRdyTbl |= (0x01<<i); /*使任務可以重新運行 */
71c: cb 01 movw r24, r22
71e: 02 2e mov r0, r18
720: 02 c0 rjmp .+4 ; 0x726
722: 88 0f add r24, r24
724: 99 1f adc r25, r25
726: 0a 94 dec r0
728: e2 f7 brpl .-8 ; 0x722
72a: 28 2a or r2, r24
OSIntSchedReq(); /*中斷中要求切換任務 */
72c: 0f b6 in r0, 0x3f ; 63
72e: 0f 92 push r0
730: 11 24 eor r1, r1
732: f8 94 cli
734: 02 60 ori r16, 0x02 ; 2
736: 0f 90 pop r0
738: 0f be out 0x3f, r0 ; 63
73a: 11 24 eor r1, r1
73c: 41 50 subi r20, 0x01 ; 1
73e: 2f 5f subi r18, 0xFF ; 255
740: 3f 4f sbci r19, 0xFF ; 255
742: 35 96 adiw r30, 0x05 ; 5
744: 47 ff sbrs r20, 7
746: dd cf rjmp .-70 ; 0x702
}
}
}
TCNT0=184;
748: 88 eb ldi r24, 0xB8 ; 184
74a: 82 bf out 0x32, r24 ; 50
if(timeint++>=200)
74c: 80 91 64 00 lds r24, 0x0064
750: 98 2f mov r25, r24
752: 8f 5f subi r24, 0xFF ; 255
754: 80 93 64 00 sts 0x0064, r24
758: 98 3c cpi r25, 0xC8 ; 200
75a: 90 f0 brcs .+36 ; 0x780
{ usage=100-ostimes;
75c: 90 91 60 00 lds r25, 0x0060
760: 84 e6 ldi r24, 0x64 ; 100
762: 89 1b sub r24, r25
timeint=0;
764: 10 92 64 00 sts 0x0064, r1
display_1str(0,0,usage);
768: 48 2f mov r20, r24
76a: 60 e0 ldi r22, 0x00 ; 0
76c: 86 2f mov r24, r22
76e: 67 dd rcall .-1330 ; 0x23e
ostimes=0;
770: 10 92 61 00 sts 0x0061, r1
774: 10 92 60 00 sts 0x0060, r1
OSIdleCtr=0;
778: 10 92 63 00 sts 0x0063, r1
77c: 10 92 62 00 sts 0x0062, r1
}
OSIntExit();
780: 92 df rcall .-220 ; 0x6a6
782: ff 91 pop r31
784: ef 91 pop r30
786: bf 91 pop r27
788: af 91 pop r26
78a: 9f 91 pop r25
78c: 8f 91 pop r24
78e: 7f 91 pop r23
790: 6f 91 pop r22
792: 5f 91 pop r21
794: 4f 91 pop r20
796: 3f 91 pop r19
798: 2f 91 pop r18
79a: 0f 90 pop r0
79c: 0f be out 0x3f, r0 ; 63
79e: 0f 90 pop r0
7a0: 1f 90 pop r1
7a2: 18 95 reti
000007a4 <IdleTask>:
}
/************************************************************************************************************************
函數名稱: void IdleTask(void)
函數原型: void IdleTask(void)
函數功能: 空閑任務,當其他任務沒有就緒的時候運行
入口參數: 無
出口參數: 無
有關說明: 系統開始運行的時候是從運行空閑任務開始的。該任務不能刪除
創建時間: 2007年3月3日
修改時間:
************************************************************************************************************************/
void IdleTask(void)
{
OSSched();
7a4: 3d de rcall .-902 ; 0x420
while(1)
{
OS_ENTER_CRITICAL();
7a6: 0f b6 in r0, 0x3f ; 63
7a8: 0f 92 push r0
7aa: 11 24 eor r1, r1
7ac: f8 94 cli
OSIdleCtr++;
7ae: 80 91 62 00 lds r24, 0x0062
7b2: 90 91 63 00 lds r25, 0x0063
7b6: 01 96 adiw r24, 0x01 ; 1
7b8: 90 93 63 00 sts 0x0063, r25
7bc: 80 93 62 00 sts 0x0062, r24
if(OSIdleCtr>1280)
7c0: 81 50 subi r24, 0x01 ; 1
7c2: 95 40 sbci r25, 0x05 ; 5
7c4: 68 f0 brcs .+26 ; 0x7e0
{ostimes++;
7c6: 80 91 60 00 lds r24, 0x0060
7ca: 90 91 61 00 lds r25, 0x0061
7ce: 01 96 adiw r24, 0x01 ; 1
7d0: 90 93 61 00 sts 0x0061, r25
7d4: 80 93 60 00 sts 0x0060, r24
OSIdleCtr=0;}
7d8: 10 92 63 00 sts 0x0063, r1
7dc: 10 92 62 00 sts 0x0062, r1
OS_EXIT_CRITICAL();
7e0: 0f 90 pop r0
7e2: 0f be out 0x3f, r0 ; 63
7e4: 11 24 eor r1, r1
7e6: de cf rjmp .-68 ; 0x7a4
000007e8 <OSInit>:
OSSched();
}
}
/************************************************************************************************************************
函數名稱: OInit
函數原型: void OInit (void)
函數功能: 初始化任務時鐘和一些系統全局變量,建立空閑任務
入口參數: 無
出口參數: 無
有關說明:
創建時間: 2007年3月5日
修改時間:
************************************************************************************************************************/
void OSInit (void)
{
OSRdyTbl=0;
7e8: 22 24 eor r2, r2
OSIntNesting=0;
7ea: 42 2c mov r4, r2
ostimes=0;
7ec: 10 92 61 00 sts 0x0061, r1
7f0: 10 92 60 00 sts 0x0060, r1
DDRC|=0x38;
7f4: 84 b3 in r24, 0x14 ; 20
7f6: 88 63 ori r24, 0x38 ; 56
7f8: 84 bb out 0x14, r24 ; 20
LCD_Init();
7fa: e7 dc rcall .-1586 ; 0x1ca
settxt();
7fc: 6e dd rcall .-1316 ; 0x2da
TCN0Init();
7fe: 3e df rcall .-388 ; 0x67c
OSTaskCreate(IdleTask,&Stack[Total_Stack_Size-1],OS_TASKS);
800: 44 e0 ldi r20, 0x04 ; 4
802: 61 e7 ldi r22, 0x71 ; 113
804: 72 e0 ldi r23, 0x02 ; 2
806: 82 ed ldi r24, 0xD2 ; 210
808: 93 e0 ldi r25, 0x03 ; 3
80a: 6a dd rcall .-1324 ; 0x2e0
80c: 08 95 ret
0000080e <__udivmodqi4>:
80e: 99 1b sub r25, r25
810: 79 e0 ldi r23, 0x09 ; 9
812: 04 c0 rjmp .+8 ; 0x81c
00000814 <__udivmodqi4_loop>:
814: 99 1f adc r25, r25
816: 96 17 cp r25, r22
818: 08 f0
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -