ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
11 мая
26159
Хитрый Чен (15.04.2005 14:19, просмотров: 1331)
Как избежать сохраниния с стек большого числа регистров? Есть обработчик прерывания и зачем ему столько регистров в стек прятать? Хотя если не вызывать функцию Delay, то в стеке окажутся R16, R17, R30 \ 00000000 938A ST -Y,R24 \ 00000002 93FA ST -Y,R31 \ 00000004 93EA ST -Y,R30 \ 00000006 923A ST -Y,R3 \ 00000008 922A ST -Y,R2 \ 0000000A 921A ST -Y,R1 \ 0000000C 920A ST -Y,R0 \ 0000000E 937A ST -Y,R23 \ 00000010 936A ST -Y,R22 \ 00000012 935A ST -Y,R21 \ 00000014 934A ST -Y,R20 \ 00000016 933A ST -Y,R19 \ 00000018 932A ST -Y,R18 \ 0000001A 931A ST -Y,R17 \ 0000001C 930A ST -Y,R16 \ 0000001E B78F IN R24,0x3F 40 if(!(PINB & (1 << SDA2))) \ 00000020 99B0 SBIC 0x16,0x00 \ 00000022 C008 RJMP ??_PCINT0_0 41 { 42 if(!(_Bus_status & (1 << RC))) return; \ 00000024 .... LDI R30,_Bus_status \ 00000026 8100 LD R16,Z \ 00000028 FF02 SBRS R16,2 \ 0000002A C004 RJMP ??_PCINT0_0 43 _Bus_status |= (1 << ST_MY_BUS); \ 0000002C 8100 LD R16,Z \ 0000002E 6002 ORI R16,0x02 \ 00000030 8300 ST Z,R16 44 Delay(); \ 00000032 .... RCALL Delay \ ??_PCINT0_0: \ 00000034 BF8F OUT 0x3F,R24 \ 00000036 9109 LD R16,Y+ \ 00000038 9119 LD R17,Y+ \ 0000003A 9129 LD R18,Y+ \ 0000003C 9139 LD R19,Y+ \ 0000003E 9149 LD R20,Y+ \ 00000040 9159 LD R21,Y+ \ 00000042 9169 LD R22,Y+ \ 00000044 9179 LD R23,Y+ \ 00000046 9009 LD R0,Y+ \ 00000048 9019 LD R1,Y+ \ 0000004A 9029 LD R2,Y+ \ 0000004C 9039 LD R3,Y+ \ 0000004E 91E9 LD R30,Y+ \ 00000050 91F9 LD R31,Y+ \ 00000052 9189 LD R24,Y+ \ 00000054 9518 RETI