📄 ucos_ii.lis
字号:
0808 ; prio -> R12
0808 ; ptos -> y+16
0808 ; pdata -> R14,R15
0808 ; task -> R10,R11
.even
0808 _OSTaskCreate::
0808 0E940000 xcall push_gset5x
080C 7901 movw R14,R18
080E 5801 movw R10,R16
0810 2A97 sbiw R28,10
0812 CA88 ldd R12,y+18
0814 8FE0 ldi R24,15
0816 8C15 cp R24,R12
0818 10F4 brsh L59
081A 0AE2 ldi R16,42
081C 70C0 xjmp L58
081E L59:
081E 0A93 st -y,r16
0820 0FB7 in r16,0x3F
0822 F894 cli
0824 0F93 push r16
0826 0991 ld r16,y+
0828 82E0 ldi R24,2
082A 8C9D mul R24,R12
082C F001 movw R30,R0
082E 80E0 ldi R24,<_OSTCBPrioTbl
0830 90E0 ldi R25,>_OSTCBPrioTbl
0832 E80F add R30,R24
0834 F91F adc R31,R25
0836 2080 ldd R2,z+0
0838 3180 ldd R3,z+1
083A 2220 tst R2
083C 09F0 breq X13
083E 5AC0 xjmp L61
0840 X13:
0840 3320 tst R3
0842 09F0 breq X14
0844 57C0 xjmp L61
0846 X14:
0846 X12:
0846 82E0 ldi R24,2
0848 8C9D mul R24,R12
084A F001 movw R30,R0
084C 80E0 ldi R24,<_OSTCBPrioTbl
084E 90E0 ldi R25,>_OSTCBPrioTbl
0850 E80F add R30,R24
0852 F91F adc R31,R25
0854 81E0 ldi R24,1
0856 90E0 ldi R25,0
0858 9183 std z+1,R25
085A 8083 std z+0,R24
085C 0A93 st -y,r16
085E 0F91 pop r16
0860 0FBF out 0x3F,r16
0862 0991 ld r16,y+
0864 2224 clr R2
0866 3324 clr R3
0868 3B82 std y+3,R3
086A 2A82 std y+2,R2
086C 0888 ldd R0,y+16
086E 1988 ldd R1,y+17
0870 1982 std y+1,R1
0872 0882 std y+0,R0
0874 9701 movw R18,R14
0876 8501 movw R16,R10
0878 CCDE xcall _OSTaskStkInit
087A 5801 movw R10,R16
087C 2224 clr R2
087E 3324 clr R3
0880 3986 std y+9,R3
0882 2886 std y+8,R2
0884 3F82 std y+7,R3
0886 2E82 std y+6,R2
0888 3D82 std y+5,R3
088A 2C82 std y+4,R2
088C 3B82 std y+3,R3
088E 2A82 std y+2,R2
0890 3982 std y+1,R3
0892 2882 std y+0,R2
0894 9501 movw R18,R10
0896 0C2D mov R16,R12
0898 BDDD xcall _OSTCBInit
089A A02E mov R10,R16
089C 0023 tst R16
089E A1F4 brne L63
08A0 0A93 st -y,r16
08A2 0FB7 in r16,0x3F
08A4 F894 cli
08A6 0F93 push r16
08A8 0991 ld r16,y+
08AA 8091E500 lds R24,_OSTaskCtr
08AE 8F5F subi R24,255 ; addi 1
08B0 8093E500 sts _OSTaskCtr,R24
08B4 0A93 st -y,r16
08B6 0F91 pop r16
08B8 0FBF out 0x3F,r16
08BA 0991 ld r16,y+
08BC 2090E600 lds R2,_OSRunning
08C0 2220 tst R2
08C2 B1F0 breq L64
08C4 DEDC xcall _OSSched
08C6 14C0 xjmp L64
08C8 L63:
08C8 0A93 st -y,r16
08CA 0FB7 in r16,0x3F
08CC F894 cli
08CE 0F93 push r16
08D0 0991 ld r16,y+
08D2 82E0 ldi R24,2
08D4 8C9D mul R24,R12
08D6 F001 movw R30,R0
08D8 80E0 ldi R24,<_OSTCBPrioTbl
08DA 90E0 ldi R25,>_OSTCBPrioTbl
08DC E80F add R30,R24
08DE F91F adc R31,R25
08E0 2224 clr R2
08E2 3324 clr R3
08E4 3182 std z+1,R3
08E6 2082 std z+0,R2
08E8 0A93 st -y,r16
08EA 0F91 pop r16
08EC 0FBF out 0x3F,r16
08EE 0991 ld r16,y+
08F0 L64:
08F0 0A2D mov R16,R10
08F2 05C0 xjmp L58
08F4 L61:
08F4 0A93 st -y,r16
08F6 0F91 pop r16
08F8 0FBF out 0x3F,r16
08FA 0991 ld r16,y+
08FC 08E2 ldi R16,40
08FE L58:
08FE 2A96 adiw R28,10
0900 0E940000 xcall pop_gset5x
0904 .dbline 0 ; func end
0904 0895 ret
0906 ; ticks -> R10,R11
.even
0906 _OSTimeDly::
0906 0E940000 xcall push_gset3x
090A 5801 movw R10,R16
090C AA20 tst R10
090E 19F4 brne X15
0910 BB20 tst R11
0912 09F4 brne X16
0914 32C0 xjmp L68
0916 X16:
0916 X15:
0916 0A93 st -y,r16
0918 0FB7 in r16,0x3F
091A F894 cli
091C 0F93 push r16
091E 0991 ld r16,y+
0920 80E0 ldi R24,<_OSRdyTbl
0922 90E0 ldi R25,>_OSRdyTbl
0924 E091E300 lds R30,_OSTCBCur
0928 F091E400 lds R31,_OSTCBCur+1
092C 2384 ldd R2,z+11
092E 3324 clr R3
0930 280E add R2,R24
0932 391E adc R3,R25
0934 E091E300 lds R30,_OSTCBCur
0938 F091E400 lds R31,_OSTCBCur+1
093C 4484 ldd R4,z+12
093E 4094 com R4
0940 F101 movw R30,R2
0942 5080 ldd R5,z+0
0944 5420 and R5,R4
0946 452C mov R4,R5
0948 4082 std z+0,R4
094A 5520 tst R5
094C 59F4 brne L70
094E E091E300 lds R30,_OSTCBCur
0952 F091E400 lds R31,_OSTCBCur+1
0956 2584 ldd R2,z+13
0958 2094 com R2
095A 3090E900 lds R3,_OSRdyGrp
095E 3220 and R3,R2
0960 3092E900 sts _OSRdyGrp,R3
0964 L70:
0964 E091E300 lds R30,_OSTCBCur
0968 F091E400 lds R31,_OSTCBCur+1
096C B782 std z+7,R11
096E A682 std z+6,R10
0970 0A93 st -y,r16
0972 0F91 pop r16
0974 0FBF out 0x3F,r16
0976 0991 ld r16,y+
0978 84DC xcall _OSSched
097A L68:
097A L67:
097A 0E940000 xcall pop_gset3x
097E .dbline 0 ; func end
097E 0895 ret
0980 ; c -> R16
.even
0980 _Putchar::
0980 L73:
0980 L74:
0980 5D9B sbis 0xb,5
0982 FECF rjmp L73
0984 929A sbi 0x12,2
0986 0CB9 out 0xc,R16
0988 L76:
0988 L77:
0988 5E9B sbis 0xb,6
098A FECF rjmp L76
098C 5E9A sbi 0xb,6
098E 9298 cbi 0x12,2
0990 L72:
0990 .dbline 0 ; func end
0990 0895 ret
.even
0992 _Getchar::
0992 9298 cbi 0x12,2
0994 0000 nop
0996 L80:
0996 L81:
0996 5F9B sbis 0xb,7
0998 FECF rjmp L80
099A 0CB1 in R16,0xc
099C L79:
099C .dbline 0 ; func end
099C 0895 ret
099E ; s -> R10,R11
.even
099E _Prints::
099E 0E940000 xcall push_gset3x
09A2 5801 movw R10,R16
09A4 06C0 xjmp L85
09A6 L84:
09A6 F501 movw R30,R10
09A8 0081 ldd R16,z+0
09AA EADF xcall _Putchar
09AC C501 movw R24,R10
09AE 0196 adiw R24,1
09B0 5C01 movw R10,R24
09B2 L85:
09B2 F501 movw R30,R10
09B4 2080 ldd R2,z+0
09B6 2220 tst R2
09B8 B1F7 brne L84
09BA 0AE0 ldi R16,10
09BC E1DF xcall _Putchar
09BE 0DE0 ldi R16,13
09C0 DFDF xcall _Putchar
09C2 01E0 ldi R16,1
09C4 L83:
09C4 0E940000 xcall pop_gset3x
09C8 .dbline 0 ; func end
09C8 0895 ret
09CA ; i -> R10
09CA ; ch -> R12
.even
09CA _Puthexbyte::
09CA 0E940000 xcall push_gset4x
09CE C02E mov R12,R16
09D0 8C2D mov R24,R12
09D2 8295 swap R24
09D4 8F70 andi R24,#0x0F
09D6 A82E mov R10,R24
09D8 89E0 ldi R24,9
09DA 8A15 cp R24,R10
09DC 20F0 brlo L88
09DE 0A2D mov R16,R10
09E0 005D subi R16,208 ; addi 48
09E2 CEDF xcall _Putchar
09E4 03C0 xjmp L89
09E6 L88:
09E6 0A2D mov R16,R10
09E8 095C subi R16,201 ; addi 55
09EA CADF xcall _Putchar
09EC L89:
09EC 8C2D mov R24,R12
09EE 8F70 andi R24,15
09F0 A82E mov R10,R24
09F2 89E0 ldi R24,9
09F4 8A15 cp R24,R10
09F6 20F0 brlo L90
09F8 0A2D mov R16,R10
09FA 005D subi R16,208 ; addi 48
09FC C1DF xcall _Putchar
09FE 03C0 xjmp L91
0A00 L90:
0A00 0A2D mov R16,R10
0A02 095C subi R16,201 ; addi 55
0A04 BDDF xcall _Putchar
0A06 L91:
0A06 L87:
0A06 0E940000 xcall pop_gset4x
0A0A .dbline 0 ; func end
0A0A 0895 ret
0A0C ; s -> R10,R11
.even
0A0C _Putstr::
0A0C 0E940000 xcall push_gset3x
0A10 5801 movw R10,R16
0A12 06C0 xjmp L94
0A14 L93:
0A14 F501 movw R30,R10
0A16 0081 ldd R16,z+0
0A18 B3DF xcall _Putchar
0A1A C501 movw R24,R10
0A1C 0196 adiw R24,1
0A1E 5C01 movw R10,R24
0A20 L94:
0A20 F501 movw R30,R10
0A22 2080 ldd R2,z+0
0A24 2220 tst R2
0A26 B1F7 brne L93
0A28 L92:
0A28 0E940000 xcall pop_gset3x
0A2C .dbline 0 ; func end
0A2C 0895 ret
.even
0A2E _Uart_init::
0A2E 88E9 ldi R24,152
0A30 8AB9 out 0xa,R24
0A32 8AE1 ldi R24,26
0A34 89B9 out 0x9,R24
0A36 2224 clr R2
0A38 20BC out 0x20,R2
0A3A 86E8 ldi R24,134
0A3C 80BD out 0x20,R24
0A3E 9298 cbi 0x12,2
0A40 L96:
0A40 .dbline 0 ; func end
0A40 0895 ret
.area bss(ram, con, rel)
0000 _OSTCBTbl:
0000 .blkb 84
0054 _OSTaskIdleStk:
0054 .blkb 100
00B8 _OSIntExitY:
00B8 .blkb 1
00B9 _OSTime::
00B9 .blkb 4
00BD _OSTCBPrioTbl::
00BD .blkb 32
00DD _OSTCBList::
00DD .blkb 2
00DF _OSTCBHighRdy::
00DF .blkb 2
00E1 _OSTCBFreeList::
00E1 .blkb 2
00E3 _OSTCBCur::
00E3 .blkb 2
00E5 _OSTaskCtr::
00E5 .blkb 1
00E6 _OSRunning::
00E6 .blkb 1
00E7 _OSRdyTbl::
00E7 .blkb 2
00E9 _OSRdyGrp::
00E9 .blkb 1
00EA _OSPrioHighRdy::
00EA .blkb 1
00EB _OSPrioCur::
00EB .blkb 1
00EC _OSLockNesting::
00EC .blkb 1
00ED _OSIntNesting::
00ED .blkb 1
00EE _OSIdleCtr::
00EE .blkb 4
00F2 _OSEventTbl::
00F2 .blkb 16
0102 _OSEventFreeList::
0102 .blkb 2
0104 _OSCtxSwCtr::
0104 .blkb 4
.area func_lit
0000 E701 PL_OSTaskIdle: .word `_OSTaskIdle
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -