INTERRUPT(SIG_OVERFLOW0) //INTERRUPT {   5c:    78 94           sei   5e:    1f 92           push    r1   60:    0f 92           push    r0   62:    0f b6           in    r0, 0x3f    ; 63   64:    0f 92           push    r0   66:    11 24           eor    r1, r1   68:    8f 93           push    r24 //产生周期 T=250*(8/8MHz)=256*1uS=250uS
 
          PORTC|=_BV(PC1);    //示波器测试点开   6a:    a9 9a           sbi    0x15, 1    ; 21         DDRC|=_BV(PC1);   6c:    a1 9a           sbi    0x14, 1    ; 20         __ticks = 1;     else if (__tmp > 255)         __ticks = 0;    /* i.e. 256 */     else         __ticks = (uint8_t)__tmp;   6e:    80 e5           ldi    r24, 0x50    ; 80   70:    8a 95           dec    r24   72:    f1 f7           brne    .-4          ; 0x70         _delay_us(30);
                   PORTC&=~_BV(PC1);    //示波器测试点关   74:    a9 98           cbi    0x15, 1    ; 21
          //SREG=0x80;          //开总中断         TCNT0=225;            //设初始值为1f(31),记数范围:255-30(0X82)=225   76:    81 ee           ldi    r24, 0xE1    ; 225   78:    82 bf           out    0x32, r24    ; 50   7a:    8f 91           pop    r24   7c:    0f 90           pop    r0   7e:    0f be           out    0x3f, r0    ; 63   80:    0f 90           pop    r0   82:    1f 90           pop    r1   84:    18 95           reti
  00000086 <main>:
       }
 
  int main(void) {    86:    cf e5           ldi    r28, 0x5F    ; 95   88:    d4 e0           ldi    r29, 0x04    ; 4   8a:    de bf           out    0x3e, r29    ; 62   8c:    cd bf           out    0x3d, r28    ; 61     TCNT0=225;            //设初始值为1f(31),记数范围:255-30(0X82)=225   8e:    81 ee           ldi    r24, 0xE1    ; 225   90:    82 bf           out    0x32, r24    ; 50     TCCR0|=_BV(CS01);    //预分频,CK/8,   92:    83 b7           in    r24, 0x33    ; 51   94:    82 60           ori    r24, 0x02    ; 2   96:    83 bf           out    0x33, r24    ; 51     TIMSK|=_BV(TOIE0);   98:    89 b7           in    r24, 0x39    ; 57   9a:    81 60           ori    r24, 0x01    ; 1   9c:    89 bf           out    0x39, r24    ; 57     SREG=0x80;          //开总中断       9e:    80 e8           ldi    r24, 0x80    ; 128   a0:    8f bf           out    0x3f, r24    ; 63
           while(1)     {             PORTC&=~_BV(PC1);   a2:    a9 98           cbi    0x15, 1    ; 21         DDRC|=_BV(PC1);   a4:    a1 9a           sbi    0x14, 1    ; 20   a6:    fd cf           rjmp    .-6          ; 0xa2
 
  一共14条“压栈”和“出栈”指令,pop和push都是双周期指令。
  我有空的时候用CTC模式拭一拭。
   
 |