Advertisement
Guest User

Arduino digitalWrite overhead

a guest
Mar 3rd, 2013
1,148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.62 KB | None | 0 0
  1. Native example:
  2. void setup()
  3. {
  4.     PORTB |= (1<<5);
  5. }
  6.  
  7. Resultant code:
  8. 00000102 <setup>:
  9.  102:   2d 9a           sbi     0x05, 5 ; 5
  10.  
  11. Arduino example:
  12. void setup()
  13. {
  14.     digitalWrite(13, HIGH);
  15. }
  16.  
  17. Resultant code:
  18. 00000102 <setup>:
  19.  102:   8d e0           ldi     r24, 0x0D       ; 13
  20.  104:   61 e0           ldi     r22, 0x01       ; 1
  21.  106:   0e 94 86 00     call    0x10c   ; 0x10c <digitalWrite>
  22.  10a:   08 95           ret
  23.  
  24. 0000010c <digitalWrite>:
  25.  10c:   48 2f           mov     r20, r24
  26.  10e:   50 e0           ldi     r21, 0x00       ; 0
  27.  110:   ca 01           movw    r24, r20
  28.  112:   82 55           subi    r24, 0x52       ; 82
  29.  114:   9f 4f           sbci    r25, 0xFF       ; 255
  30.  116:   fc 01           movw    r30, r24
  31.  118:   24 91           lpm     r18, Z+
  32.  11a:   ca 01           movw    r24, r20
  33.  11c:   86 56           subi    r24, 0x66       ; 102
  34.  11e:   9f 4f           sbci    r25, 0xFF       ; 255
  35.  120:   fc 01           movw    r30, r24
  36.  122:   94 91           lpm     r25, Z+
  37.  124:   4a 57           subi    r20, 0x7A       ; 122
  38.  126:   5f 4f           sbci    r21, 0xFF       ; 255
  39.  128:   fa 01           movw    r30, r20
  40.  12a:   34 91           lpm     r19, Z+
  41.  12c:   33 23           and     r19, r19
  42.  12e:   09 f4           brne    .+2             ; 0x132 <digitalWrite+0x26>
  43.  130:   40 c0           rjmp    .+128           ; 0x1b2 <digitalWrite+0xa6>
  44.  132:   22 23           and     r18, r18
  45.  134:   51 f1           breq    .+84            ; 0x18a <digitalWrite+0x7e>
  46.  136:   23 30           cpi     r18, 0x03       ; 3
  47.  138:   71 f0           breq    .+28            ; 0x156 <digitalWrite+0x4a>
  48.  13a:   24 30           cpi     r18, 0x04       ; 4
  49.  13c:   28 f4           brcc    .+10            ; 0x148 <digitalWrite+0x3c>
  50.  13e:   21 30           cpi     r18, 0x01       ; 1
  51.  140:   a1 f0           breq    .+40            ; 0x16a <digitalWrite+0x5e>
  52.  142:   22 30           cpi     r18, 0x02       ; 2
  53.  144:   11 f5           brne    .+68            ; 0x18a <digitalWrite+0x7e>
  54.  146:   14 c0           rjmp    .+40            ; 0x170 <digitalWrite+0x64>
  55.  148:   26 30           cpi     r18, 0x06       ; 6
  56.  14a:   b1 f0           breq    .+44            ; 0x178 <digitalWrite+0x6c>
  57.  14c:   27 30           cpi     r18, 0x07       ; 7
  58.  14e:   c1 f0           breq    .+48            ; 0x180 <digitalWrite+0x74>
  59.  150:   24 30           cpi     r18, 0x04       ; 4
  60.  152:   d9 f4           brne    .+54            ; 0x18a <digitalWrite+0x7e>
  61.  154:   04 c0           rjmp    .+8             ; 0x15e <digitalWrite+0x52>
  62.  156:   80 91 80 00     lds     r24, 0x0080
  63.  15a:   8f 77           andi    r24, 0x7F       ; 127
  64.  15c:   03 c0           rjmp    .+6             ; 0x164 <digitalWrite+0x58>
  65.  15e:   80 91 80 00     lds     r24, 0x0080
  66.  162:   8f 7d           andi    r24, 0xDF       ; 223
  67.  164:   80 93 80 00     sts     0x0080, r24
  68.  168:   10 c0           rjmp    .+32            ; 0x18a <digitalWrite+0x7e>
  69.  16a:   84 b5           in      r24, 0x24       ; 36
  70.  16c:   8f 77           andi    r24, 0x7F       ; 127
  71.  16e:   02 c0           rjmp    .+4             ; 0x174 <digitalWrite+0x68>
  72.  170:   84 b5           in      r24, 0x24       ; 36
  73.  172:   8f 7d           andi    r24, 0xDF       ; 223
  74.  174:   84 bd           out     0x24, r24       ; 36
  75.  176:   09 c0           rjmp    .+18            ; 0x18a <digitalWrite+0x7e>
  76.  178:   80 91 b0 00     lds     r24, 0x00B0
  77.  17c:   8f 77           andi    r24, 0x7F       ; 127
  78.  17e:   03 c0           rjmp    .+6             ; 0x186 <digitalWrite+0x7a>
  79.  180:   80 91 b0 00     lds     r24, 0x00B0
  80.  184:   8f 7d           andi    r24, 0xDF       ; 223
  81.  186:   80 93 b0 00     sts     0x00B0, r24
  82.  18a:   e3 2f           mov     r30, r19
  83.  18c:   f0 e0           ldi     r31, 0x00       ; 0
  84.  18e:   ee 0f           add     r30, r30
  85.  190:   ff 1f           adc     r31, r31
  86.  192:   ee 58           subi    r30, 0x8E       ; 142
  87.  194:   ff 4f           sbci    r31, 0xFF       ; 255
  88.  196:   a5 91           lpm     r26, Z+
  89.  198:   b4 91           lpm     r27, Z+
  90.  19a:   2f b7           in      r18, 0x3f       ; 63
  91.  19c:   f8 94           cli
  92.  19e:   66 23           and     r22, r22
  93.  1a0:   21 f4           brne    .+8             ; 0x1aa <digitalWrite+0x9e>
  94.  1a2:   8c 91           ld      r24, X
  95.  1a4:   90 95           com     r25
  96.  1a6:   89 23           and     r24, r25
  97.  1a8:   02 c0           rjmp    .+4             ; 0x1ae <digitalWrite+0xa2>
  98.  1aa:   8c 91           ld      r24, X
  99.  1ac:   89 2b           or      r24, r25
  100.  1ae:   8c 93           st      X, r24
  101.  1b0:   2f bf           out     0x3f, r18       ; 63
  102.  1b2:   08 95           ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement