📄 test_func.lis
字号:
00D6 .dbline 80
00D6 ; {
00D6 .dbline 81
00D6 ; for(k=1;k;k++)
00D6 AA24 clr R10
00D8 A394 inc R10
00DA 01C0 rjmp L37
00DC L34:
00DC .dbline 82
00DC L35:
00DC .dbline 81
00DC A394 inc R10
00DE L37:
00DE .dbline 81
00DE AA20 tst R10
00E0 E9F7 brne L34
00E2 .dbline 83
00E2 L31:
00E2 .dbline 79
00E2 6395 inc R22
00E4 L33:
00E4 .dbline 79
00E4 6623 tst R22
00E6 B9F7 brne L30
00E8 .dbline 84
00E8 L27:
00E8 .dbline 77
00E8 4395 inc R20
00EA L29:
00EA .dbline 77
00EA 242E mov R2,R20
00EC 3324 clr R3
00EE 2016 cp R2,R16
00F0 3106 cpc R3,R17
00F2 7CF3 brlt L26
00F4 .dbline -2
00F4 .dbline 85
00F4 ; ;
00F4 ; }
00F4 ; }
00F4 ; }
00F4 L25:
00F4 00D0 rcall pop_gset3
00F6 .dbline 0 ; func end
00F6 0895 ret
00F8 .dbsym r i 20 c
00F8 .dbsym r j 22 c
00F8 .dbsym r k 10 c
00F8 .dbsym r loop 16 I
00F8 .dbend
00F8 .dbfunc e Delay_error _Delay_error fV
00F8 ; loop -> R20,R21
.even
00F8 _Delay_error::
00F8 00D0 rcall push_gset1
00FA 402F mov R20,R16
00FC 512F mov R21,R17
00FE .dbline -1
00FE .dbline 88
00FE ;
00FE ; void Delay_error(int loop)
00FE ; { Delay_Real(loop);}
00FE .dbline 88
00FE 042F mov R16,R20
0100 152F mov R17,R21
0102 E4DF rcall _Delay_Real
0104 .dbline -2
0104 .dbline 88
0104 L38:
0104 00D0 rcall pop_gset1
0106 .dbline 0 ; func end
0106 0895 ret
0108 .dbsym r loop 20 I
0108 .dbend
0108 .dbfunc e ProgramRest _ProgramRest fV
0108 ; i -> R20,R21
0108 ; times -> R22,R23
.even
0108 _ProgramRest::
0108 00D0 rcall push_gset2
010A 602F mov R22,R16
010C 712F mov R23,R17
010E .dbline -1
010E .dbline 92
010E ; /*when reset,called
010E ; flash PORTA,PORTB,PORTC,PORTD */
010E ; void ProgramRest(int times)
010E ; {
010E .dbline 94
010E ; int i;
010E ; for(i=0;i<times;i++)
010E 4427 clr R20
0110 5527 clr R21
0112 17C0 rjmp L43
0114 L40:
0114 .dbline 95
0114 .dbline 96
0114 8FEF ldi R24,255
0116 8ABB out 0x1a,R24
0118 .dbline 97
0118 87BB out 0x17,R24
011A .dbline 98
011A 84BB out 0x14,R24
011C .dbline 99
011C 81BB out 0x11,R24
011E .dbline 100
011E 2224 clr R2
0120 2BBA out 0x1b,R2
0122 .dbline 101
0122 28BA out 0x18,R2
0124 .dbline 102
0124 25BA out 0x15,R2
0126 .dbline 103
0126 22BA out 0x12,R2
0128 .dbline 104
0128 0AE0 ldi R16,10
012A 10E0 ldi R17,0
012C CFDF rcall _Delay_Real
012E .dbline 105
012E 8FEF ldi R24,255
0130 8BBB out 0x1b,R24
0132 .dbline 106
0132 88BB out 0x18,R24
0134 .dbline 107
0134 85BB out 0x15,R24
0136 .dbline 108
0136 82BB out 0x12,R24
0138 .dbline 109
0138 0AE0 ldi R16,10
013A 10E0 ldi R17,0
013C C7DF rcall _Delay_Real
013E .dbline 110
013E L41:
013E .dbline 94
013E 4F5F subi R20,255 ; offset = 1
0140 5F4F sbci R21,255
0142 L43:
0142 .dbline 94
0142 4617 cp R20,R22
0144 5707 cpc R21,R23
0146 34F3 brlt L40
0148 .dbline -2
0148 .dbline 111
0148 ; {
0148 ; DDRA = 0xff;
0148 ; DDRB = 0xff;
0148 ; DDRC = 0xff;
0148 ; DDRD = 0xff;
0148 ; PORTA=0;
0148 ; PORTB=0;
0148 ; PORTC=0;
0148 ; PORTD=0;
0148 ; Delay_Real(DELAY_COUNT_WHEN_RESET);
0148 ; PORTA=0xff;
0148 ; PORTB=0xff;
0148 ; PORTC=0xff;
0148 ; PORTD=0xff;
0148 ; Delay_Real(DELAY_COUNT_WHEN_RESET);
0148 ; }
0148 ; }
0148 L39:
0148 00D0 rcall pop_gset2
014A .dbline 0 ; func end
014A 0895 ret
014C .dbsym r i 20 I
014C .dbsym r times 22 I
014C .dbend
014C .dbfunc e ProgramError _ProgramError fV
.even
014C _ProgramError::
014C .dbline -1
014C .dbline 115
014C ;
014C ; /*when error,dead loop*/
014C ; void ProgramError()
014C ; {
014C 03C0 rjmp L46
014E L45:
014E .dbline 117
014E 01E0 ldi R16,1
0150 10E0 ldi R17,0
0152 02D0 rcall _ProgramError_Times
0154 L46:
0154 .dbline 116
0154 FCCF rjmp L45
0156 X1:
0156 .dbline -2
0156 .dbline 118
0156 ; while(1)
0156 ; ProgramError_Times(1);
0156 ; }
0156 L44:
0156 .dbline 0 ; func end
0156 0895 ret
0158 .dbend
0158 .dbfunc e ProgramError_Times _ProgramError_Times fV
0158 ; i -> R20,R21
0158 ; times -> R22,R23
.even
0158 _ProgramError_Times::
0158 00D0 rcall push_gset2
015A 602F mov R22,R16
015C 712F mov R23,R17
015E .dbline -1
015E .dbline 123
015E ;
015E ; /*when reset,called*/
015E ; /*flash PORTA,PORTB*/
015E ; void ProgramError_Times(int times)
015E ; {
015E .dbline 125
015E ; int i;
015E ; OS_ENTER_CRITICAL();
015E 0A93 st -y,r16
0160 0FB7 in r16,0x3f
0162 F894 cli
0164 0F93 push r16
0166 0991 ld r16,y+
0168 .dbline 125
0168 .dbline 126
0168 ; for(i=0;i<times;i++)
0168 4427 clr R20
016A 5527 clr R21
016C 13C0 rjmp L52
016E L49:
016E .dbline 127
016E .dbline 128
016E 8FEF ldi R24,255
0170 8ABB out 0x1a,R24
0172 .dbline 129
0172 87BB out 0x17,R24
0174 .dbline 130
0174 2224 clr R2
0176 2BBA out 0x1b,R2
0178 .dbline 131
0178 28BA out 0x18,R2
017A .dbline 132
017A 0AE0 ldi R16,10
017C 10E0 ldi R17,0
017E BCDF rcall _Delay_error
0180 .dbline 133
0180 8FEF ldi R24,255
0182 8ABB out 0x1a,R24
0184 .dbline 134
0184 87BB out 0x17,R24
0186 .dbline 135
0186 8BBB out 0x1b,R24
0188 .dbline 136
0188 88BB out 0x18,R24
018A .dbline 137
018A 0AE0 ldi R16,10
018C 10E0 ldi R17,0
018E B4DF rcall _Delay_error
0190 .dbline 138
0190 L50:
0190 .dbline 126
0190 4F5F subi R20,255 ; offset = 1
0192 5F4F sbci R21,255
0194 L52:
0194 .dbline 126
0194 4617 cp R20,R22
0196 5707 cpc R21,R23
0198 54F3 brlt L49
019A .dbline 139
019A ; {
019A ; DDRA = 0xff;
019A ; DDRB = 0xff;
019A ; PORTA=0;
019A ; PORTB=0;
019A ; Delay_error(DELAY_COUNT);
019A ; DDRA = 0xff;
019A ; DDRB = 0xff;
019A ; PORTA=0xff;
019A ; PORTB=0xff;
019A ; Delay_error(DELAY_COUNT);
019A ; }
019A ; OS_EXIT_CRITICAL();
019A 0A93 st -y,r16
019C 0F91 pop r16
019E 0FBF out 0x3F,r16
01A0 0991 ld r16,y+
01A2 .dbline 139
01A2 .dbline -2
01A2 .dbline 140
01A2 ; }
01A2 L48:
01A2 00D0 rcall pop_gset2
01A4 .dbline 0 ; func end
01A4 0895 ret
01A6 .dbsym r i 20 I
01A6 .dbsym r times 22 I
01A6 .dbend
01A6 .dbfunc e OSTaskSwHook _OSTaskSwHook fV
.even
01A6 _OSTaskSwHook::
01A6 .dbline -1
01A6 .dbline 161
01A6 ;
01A6 ; /*
01A6 ; ********************************************************************************
01A6 ; * TASK SWITCH HOOK
01A6 ; *
01A6 ; * Description:
01A6 ; * This function is called when a task switch is performed. This allows you to
01A6 ; * perform other operations during a context switch.
01A6 ; *
01A6 ; * Arguments: none
01A6 ; *
01A6 ; * Note(s):
01A6 ; * 1) Interrupts are disabled during this call.
01A6 ; * 2) It is assumed that the global pointer 'OSTCBHighRdy' points to the TCB
01A6 ; * of the task that will be 'switched in' (i.e. the highest priority task)
01A6 ; * and, 'OSTCBCur' points to the task being switched out (i.e. the
01A6 ; * preempted task).
01A6 ; ********************************************************************************
01A6 ; */
01A6 ; void OSTaskSwHook (void)
01A6 ; {
01A6 .dbline -2
01A6 .dbline 162
01A6 ; }
01A6 L53:
01A6 .dbline 0 ; func end
01A6 0895 ret
01A8 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -