1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
|
bin/Debug/ESS1995test_328p.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000534 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .bss 00000008 00800100 00800100 000005a8 2**0
ALLOC
2 .stab 00000c9c 00000000 00000000 000005a8 2**2
CONTENTS, READONLY, DEBUGGING
3 .stabstr 000018d2 00000000 00000000 00001244 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_aranges 00000040 00000000 00000000 00002b16 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_pubnames 0000016c 00000000 00000000 00002b56 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_info 000006f2 00000000 00000000 00002cc2 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_abbrev 000002e1 00000000 00000000 000033b4 2**0
CONTENTS, READONLY, DEBUGGING
8 .debug_line 00000551 00000000 00000000 00003695 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_frame 000000a0 00000000 00000000 00003be8 2**2
CONTENTS, READONLY, DEBUGGING
10 .debug_str 00000227 00000000 00000000 00003c88 2**0
CONTENTS, READONLY, DEBUGGING
11 .debug_loc 000001fa 00000000 00000000 00003eaf 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 5a 00 jmp 0xb4 ; 0xb4 <__ctors_end>
4: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
8: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
10: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
14: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
18: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
1c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
20: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
24: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
28: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
2c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
30: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
34: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
38: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
3c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
40: 0c 94 06 01 jmp 0x20c ; 0x20c <__vector_16>
44: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
48: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
4c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
50: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
54: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
58: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
5c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
60: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
64: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt>
00000068 <port_to_mode_PGM>:
68: 00 00 24 27 2a ..$'*
0000006d <port_to_output_PGM>:
6d: 00 00 25 28 2b ..%(+
00000072 <port_to_input_PGM>:
72: 00 00 23 26 29 ..#&)
00000077 <digital_pin_to_port_PGM>:
77: 04 04 04 04 04 04 04 04 02 02 02 02 02 02 03 03 ................
87: 03 03 03 03 ....
0000008b <digital_pin_to_bit_mask_PGM>:
8b: 01 02 04 08 10 20 40 80 01 02 04 08 10 20 01 02 ..... @...... ..
9b: 04 08 10 20 ...
0000009f <digital_pin_to_timer_PGM>:
9f: 00 00 00 07 00 02 01 00 00 03 04 06 00 00 00 00 ................
af: 00 00 00 00 00 .....
000000b4 <__ctors_end>:
b4: 11 24 eor r1, r1
b6: 1f be out 0x3f, r1 ; 63
b8: cf ef ldi r28, 0xFF ; 255
ba: d8 e0 ldi r29, 0x08 ; 8
bc: de bf out 0x3e, r29 ; 62
be: cd bf out 0x3d, r28 ; 61
000000c0 <__do_copy_data>:
c0: 11 e0 ldi r17, 0x01 ; 1
c2: a0 e0 ldi r26, 0x00 ; 0
c4: b1 e0 ldi r27, 0x01 ; 1
c6: e4 e3 ldi r30, 0x34 ; 52
c8: f5 e0 ldi r31, 0x05 ; 5
ca: 02 c0 rjmp .+4 ; 0xd0 <.do_copy_data_start>
000000cc <.do_copy_data_loop>:
cc: 05 90 lpm r0, Z+
ce: 0d 92 st X+, r0
000000d0 <.do_copy_data_start>:
d0: a0 30 cpi r26, 0x00 ; 0
d2: b1 07 cpc r27, r17
d4: d9 f7 brne .-10 ; 0xcc <.do_copy_data_loop>
000000d6 <__do_clear_bss>:
d6: 11 e0 ldi r17, 0x01 ; 1
d8: a0 e0 ldi r26, 0x00 ; 0
da: b1 e0 ldi r27, 0x01 ; 1
dc: 01 c0 rjmp .+2 ; 0xe0 <.do_clear_bss_start>
000000de <.do_clear_bss_loop>:
de: 1d 92 st X+, r1
000000e0 <.do_clear_bss_start>:
e0: a8 30 cpi r26, 0x08 ; 8
e2: b1 07 cpc r27, r17
e4: e1 f7 brne .-8 ; 0xde <.do_clear_bss_loop>
e6: 0e 94 a3 00 call 0x146 ; 0x146 <main>
ea: 0c 94 98 02 jmp 0x530 ; 0x530 <_exit>
000000ee <__bad_interrupt>:
ee: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
000000f2 <_Z9writeByteh>:
digitalWrite(SCLK, HIGH);
delay(10);
digitalWrite(SCLK, LOW);
delay(10);
}
void writeByte(uint8_t data){
f2: df 93 push r29
f4: cf 93 push r28
f6: 00 d0 rcall .+0 ; 0xf8 <_Z9writeByteh+0x6>
f8: cd b7 in r28, 0x3d ; 61
fa: de b7 in r29, 0x3e ; 62
fc: 8a 83 std Y+2, r24 ; 0x02
pinMode(SDATA,OUTPUT);
fe: 84 e0 ldi r24, 0x04 ; 4
100: 61 e0 ldi r22, 0x01 ; 1
102: 0e 94 e3 01 call 0x3c6 ; 0x3c6 <pinMode>
for (uint8_t bit=0;bit<8;bit++) {
106: 19 82 std Y+1, r1 ; 0x01
108: 16 c0 rjmp .+44 ; 0x136 <_Z9writeByteh+0x44>
digitalWrite(SDATA,(data>>bit)&0b01);
10a: 8a 81 ldd r24, Y+2 ; 0x02
10c: 28 2f mov r18, r24
10e: 30 e0 ldi r19, 0x00 ; 0
110: 89 81 ldd r24, Y+1 ; 0x01
112: 88 2f mov r24, r24
114: 90 e0 ldi r25, 0x00 ; 0
116: a9 01 movw r20, r18
118: 02 c0 rjmp .+4 ; 0x11e <_Z9writeByteh+0x2c>
11a: 55 95 asr r21
11c: 47 95 ror r20
11e: 8a 95 dec r24
120: e2 f7 brpl .-8 ; 0x11a <_Z9writeByteh+0x28>
122: ca 01 movw r24, r20
124: 98 2f mov r25, r24
126: 91 70 andi r25, 0x01 ; 1
128: 84 e0 ldi r24, 0x04 ; 4
12a: 69 2f mov r22, r25
12c: 0e 94 01 02 call 0x402 ; 0x402 <digitalWrite>
digitalWrite(SCLK, LOW);
delay(10);
}
void writeByte(uint8_t data){
pinMode(SDATA,OUTPUT);
for (uint8_t bit=0;bit<8;bit++) {
130: 89 81 ldd r24, Y+1 ; 0x01
132: 8f 5f subi r24, 0xFF ; 255
134: 89 83 std Y+1, r24 ; 0x01
136: 89 81 ldd r24, Y+1 ; 0x01
138: 88 30 cpi r24, 0x08 ; 8
13a: 38 f3 brcs .-50 ; 0x10a <_Z9writeByteh+0x18>
digitalWrite(SDATA,(data>>bit)&0b01);
}
}
13c: 0f 90 pop r0
13e: 0f 90 pop r0
140: cf 91 pop r28
142: df 91 pop r29
144: 08 95 ret
00000146 <main>:
int main(){
146: df 93 push r29
148: cf 93 push r28
14a: 00 d0 rcall .+0 ; 0x14c <main+0x6>
14c: cd b7 in r28, 0x3d ; 61
14e: de b7 in r29, 0x3e ; 62
pinMode(DATA_NEW,INPUT);
150: 82 e0 ldi r24, 0x02 ; 2
152: 60 e0 ldi r22, 0x00 ; 0
154: 0e 94 e3 01 call 0x3c6 ; 0x3c6 <pinMode>
pinMode(SCLK,OUTPUT);
158: 83 e0 ldi r24, 0x03 ; 3
15a: 61 e0 ldi r22, 0x01 ; 1
15c: 0e 94 e3 01 call 0x3c6 ; 0x3c6 <pinMode>
pinMode(OUTPUT1, OUTPUT);
160: 8c e0 ldi r24, 0x0C ; 12
162: 61 e0 ldi r22, 0x01 ; 1
164: 0e 94 e3 01 call 0x3c6 ; 0x3c6 <pinMode>
pinMode(OUTPUT2, OUTPUT);
168: 8d e0 ldi r24, 0x0D ; 13
16a: 61 e0 ldi r22, 0x01 ; 1
16c: 0e 94 e3 01 call 0x3c6 ; 0x3c6 <pinMode>
init(); //-- init Arduino library - delay, PWM setup messes with timers, millis(), micros() etc don't work without it
170: 0e 94 a9 01 call 0x352 ; 0x352 <init>
while(1) {
if (digitalRead(DATA_NEW)==HIGH){ //DMM is ready to receive data
174: 82 e0 ldi r24, 0x02 ; 2
176: 0e 94 4c 02 call 0x498 ; 0x498 <digitalRead>
17a: 1a 82 std Y+2, r1 ; 0x02
17c: 81 30 cpi r24, 0x01 ; 1
17e: 91 05 cpc r25, r1
180: 11 f4 brne .+4 ; 0x186 <main+0x40>
182: 81 e0 ldi r24, 0x01 ; 1
184: 8a 83 std Y+2, r24 ; 0x02
186: 8a 81 ldd r24, Y+2 ; 0x02
188: 88 23 and r24, r24
18a: b1 f0 breq .+44 ; 0x1b8 <main+0x72>
digitalWrite(OUTPUT1,HIGH);
18c: 8c e0 ldi r24, 0x0C ; 12
18e: 61 e0 ldi r22, 0x01 ; 1
190: 0e 94 01 02 call 0x402 ; 0x402 <digitalWrite>
writeByte(WRITE_ID);
194: 88 ec ldi r24, 0xC8 ; 200
196: 0e 94 79 00 call 0xf2 ; 0xf2 <_Z9writeByteh>
if (digitalRead(DATA_NEW)==LOW){ //ACK
19a: 82 e0 ldi r24, 0x02 ; 2
19c: 0e 94 4c 02 call 0x498 ; 0x498 <digitalRead>
1a0: 19 82 std Y+1, r1 ; 0x01
1a2: 00 97 sbiw r24, 0x00 ; 0
1a4: 11 f4 brne .+4 ; 0x1aa <main+0x64>
1a6: 81 e0 ldi r24, 0x01 ; 1
1a8: 89 83 std Y+1, r24 ; 0x01
1aa: 89 81 ldd r24, Y+1 ; 0x01
1ac: 88 23 and r24, r24
1ae: 21 f0 breq .+8 ; 0x1b8 <main+0x72>
digitalWrite(OUTPUT2,HIGH);
1b0: 8d e0 ldi r24, 0x0D ; 13
1b2: 61 e0 ldi r22, 0x01 ; 1
1b4: 0e 94 01 02 call 0x402 ; 0x402 <digitalWrite>
}
}
delay(500);
1b8: 64 ef ldi r22, 0xF4 ; 244
1ba: 71 e0 ldi r23, 0x01 ; 1
1bc: 80 e0 ldi r24, 0x00 ; 0
1be: 90 e0 ldi r25, 0x00 ; 0
1c0: 0e 94 71 01 call 0x2e2 ; 0x2e2 <delay>
digitalWrite(OUTPUT1,LOW);
1c4: 8c e0 ldi r24, 0x0C ; 12
1c6: 60 e0 ldi r22, 0x00 ; 0
1c8: 0e 94 01 02 call 0x402 ; 0x402 <digitalWrite>
digitalWrite(OUTPUT1,LOW);
1cc: 8c e0 ldi r24, 0x0C ; 12
1ce: 60 e0 ldi r22, 0x00 ; 0
1d0: 0e 94 01 02 call 0x402 ; 0x402 <digitalWrite>
1d4: cf cf rjmp .-98 ; 0x174 <main+0x2e>
000001d6 <_Z9SCLKcyclev>:
#define OUTPUT2 13
#define WRITE_ID 0b11001000
#define READ_ID 0b11001001
void SCLKcycle() {
1d6: df 93 push r29
1d8: cf 93 push r28
1da: cd b7 in r28, 0x3d ; 61
1dc: de b7 in r29, 0x3e ; 62
digitalWrite(SCLK, HIGH);
1de: 83 e0 ldi r24, 0x03 ; 3
1e0: 61 e0 ldi r22, 0x01 ; 1
1e2: 0e 94 01 02 call 0x402 ; 0x402 <digitalWrite>
delay(10);
1e6: 6a e0 ldi r22, 0x0A ; 10
1e8: 70 e0 ldi r23, 0x00 ; 0
1ea: 80 e0 ldi r24, 0x00 ; 0
1ec: 90 e0 ldi r25, 0x00 ; 0
1ee: 0e 94 71 01 call 0x2e2 ; 0x2e2 <delay>
digitalWrite(SCLK, LOW);
1f2: 83 e0 ldi r24, 0x03 ; 3
1f4: 60 e0 ldi r22, 0x00 ; 0
1f6: 0e 94 01 02 call 0x402 ; 0x402 <digitalWrite>
delay(10);
1fa: 6a e0 ldi r22, 0x0A ; 10
1fc: 70 e0 ldi r23, 0x00 ; 0
1fe: 80 e0 ldi r24, 0x00 ; 0
200: 90 e0 ldi r25, 0x00 ; 0
202: 0e 94 71 01 call 0x2e2 ; 0x2e2 <delay>
}
206: cf 91 pop r28
208: df 91 pop r29
20a: 08 95 ret
0000020c <__vector_16>:
20c: 1f 92 push r1
20e: 0f 92 push r0
210: 0f b6 in r0, 0x3f ; 63
212: 0f 92 push r0
214: 11 24 eor r1, r1
216: 2f 93 push r18
218: 8f 93 push r24
21a: 9f 93 push r25
21c: af 93 push r26
21e: bf 93 push r27
220: 80 91 00 01 lds r24, 0x0100
224: 90 91 01 01 lds r25, 0x0101
228: a0 91 02 01 lds r26, 0x0102
22c: b0 91 03 01 lds r27, 0x0103
230: 80 50 subi r24, 0x00 ; 0
232: 90 4c sbci r25, 0xC0 ; 192
234: af 4f sbci r26, 0xFF ; 255
236: bf 4f sbci r27, 0xFF ; 255
238: 80 93 00 01 sts 0x0100, r24
23c: 90 93 01 01 sts 0x0101, r25
240: a0 93 02 01 sts 0x0102, r26
244: b0 93 03 01 sts 0x0103, r27
248: 27 c0 rjmp .+78 ; 0x298 <__vector_16+0x8c>
24a: 80 91 00 01 lds r24, 0x0100
24e: 90 91 01 01 lds r25, 0x0101
252: a0 91 02 01 lds r26, 0x0102
256: b0 91 03 01 lds r27, 0x0103
25a: 80 58 subi r24, 0x80 ; 128
25c: 9e 43 sbci r25, 0x3E ; 62
25e: a0 40 sbci r26, 0x00 ; 0
260: b0 40 sbci r27, 0x00 ; 0
262: 80 93 00 01 sts 0x0100, r24
266: 90 93 01 01 sts 0x0101, r25
26a: a0 93 02 01 sts 0x0102, r26
26e: b0 93 03 01 sts 0x0103, r27
272: 80 91 04 01 lds r24, 0x0104
276: 90 91 05 01 lds r25, 0x0105
27a: a0 91 06 01 lds r26, 0x0106
27e: b0 91 07 01 lds r27, 0x0107
282: 01 96 adiw r24, 0x01 ; 1
284: a1 1d adc r26, r1
286: b1 1d adc r27, r1
288: 80 93 04 01 sts 0x0104, r24
28c: 90 93 05 01 sts 0x0105, r25
290: a0 93 06 01 sts 0x0106, r26
294: b0 93 07 01 sts 0x0107, r27
298: 80 91 00 01 lds r24, 0x0100
29c: 90 91 01 01 lds r25, 0x0101
2a0: a0 91 02 01 lds r26, 0x0102
2a4: b0 91 03 01 lds r27, 0x0103
2a8: 81 58 subi r24, 0x81 ; 129
2aa: 9e 43 sbci r25, 0x3E ; 62
2ac: a0 40 sbci r26, 0x00 ; 0
2ae: b0 40 sbci r27, 0x00 ; 0
2b0: 60 f6 brcc .-104 ; 0x24a <__vector_16+0x3e>
2b2: bf 91 pop r27
2b4: af 91 pop r26
2b6: 9f 91 pop r25
2b8: 8f 91 pop r24
2ba: 2f 91 pop r18
2bc: 0f 90 pop r0
2be: 0f be out 0x3f, r0 ; 63
2c0: 0f 90 pop r0
2c2: 1f 90 pop r1
2c4: 18 95 reti
000002c6 <millis>:
2c6: 8f b7 in r24, 0x3f ; 63
2c8: f8 94 cli
2ca: 20 91 04 01 lds r18, 0x0104
2ce: 30 91 05 01 lds r19, 0x0105
2d2: 40 91 06 01 lds r20, 0x0106
2d6: 50 91 07 01 lds r21, 0x0107
2da: 8f bf out 0x3f, r24 ; 63
2dc: b9 01 movw r22, r18
2de: ca 01 movw r24, r20
2e0: 08 95 ret
000002e2 <delay>:
2e2: ef 92 push r14
2e4: ff 92 push r15
2e6: 0f 93 push r16
2e8: 1f 93 push r17
2ea: 7b 01 movw r14, r22
2ec: 8c 01 movw r16, r24
2ee: 8f b7 in r24, 0x3f ; 63
2f0: f8 94 cli
2f2: 40 91 04 01 lds r20, 0x0104
2f6: 50 91 05 01 lds r21, 0x0105
2fa: 60 91 06 01 lds r22, 0x0106
2fe: 70 91 07 01 lds r23, 0x0107
302: 8f bf out 0x3f, r24 ; 63
304: 2f b7 in r18, 0x3f ; 63
306: f8 94 cli
308: 80 91 04 01 lds r24, 0x0104
30c: 90 91 05 01 lds r25, 0x0105
310: a0 91 06 01 lds r26, 0x0106
314: b0 91 07 01 lds r27, 0x0107
318: 2f bf out 0x3f, r18 ; 63
31a: 84 1b sub r24, r20
31c: 95 0b sbc r25, r21
31e: a6 0b sbc r26, r22
320: b7 0b sbc r27, r23
322: 8e 15 cp r24, r14
324: 9f 05 cpc r25, r15
326: a0 07 cpc r26, r16
328: b1 07 cpc r27, r17
32a: 60 f3 brcs .-40 ; 0x304 <delay+0x22>
32c: 1f 91 pop r17
32e: 0f 91 pop r16
330: ff 90 pop r15
332: ef 90 pop r14
334: 08 95 ret
00000336 <delayMicroseconds>:
336: 01 97 sbiw r24, 0x01 ; 1
338: 59 f0 breq .+22 ; 0x350 <delayMicroseconds+0x1a>
33a: fc 01 movw r30, r24
33c: ee 0f add r30, r30
33e: ff 1f adc r31, r31
340: ee 0f add r30, r30
342: ff 1f adc r31, r31
344: 32 97 sbiw r30, 0x02 ; 2
346: 8f b7 in r24, 0x3f ; 63
348: f8 94 cli
34a: 31 97 sbiw r30, 0x01 ; 1
34c: f1 f7 brne .-4 ; 0x34a <delayMicroseconds+0x14>
34e: 8f bf out 0x3f, r24 ; 63
350: 08 95 ret
00000352 <init>:
352: 78 94 sei
354: 84 b5 in r24, 0x24 ; 36
356: 82 60 ori r24, 0x02 ; 2
358: 84 bd out 0x24, r24 ; 36
35a: 84 b5 in r24, 0x24 ; 36
35c: 81 60 ori r24, 0x01 ; 1
35e: 84 bd out 0x24, r24 ; 36
360: 85 b5 in r24, 0x25 ; 37
362: 82 60 ori r24, 0x02 ; 2
364: 85 bd out 0x25, r24 ; 37
366: 85 b5 in r24, 0x25 ; 37
368: 81 60 ori r24, 0x01 ; 1
36a: 85 bd out 0x25, r24 ; 37
36c: ee e6 ldi r30, 0x6E ; 110
36e: f0 e0 ldi r31, 0x00 ; 0
370: 80 81 ld r24, Z
372: 81 60 ori r24, 0x01 ; 1
374: 80 83 st Z, r24
376: e1 e8 ldi r30, 0x81 ; 129
378: f0 e0 ldi r31, 0x00 ; 0
37a: 80 81 ld r24, Z
37c: 82 60 ori r24, 0x02 ; 2
37e: 80 83 st Z, r24
380: 80 81 ld r24, Z
382: 81 60 ori r24, 0x01 ; 1
384: 80 83 st Z, r24
386: e0 e8 ldi r30, 0x80 ; 128
388: f0 e0 ldi r31, 0x00 ; 0
38a: 80 81 ld r24, Z
38c: 81 60 ori r24, 0x01 ; 1
38e: 80 83 st Z, r24
390: e1 eb ldi r30, 0xB1 ; 177
392: f0 e0 ldi r31, 0x00 ; 0
394: 80 81 ld r24, Z
396: 84 60 ori r24, 0x04 ; 4
398: 80 83 st Z, r24
39a: e0 eb ldi r30, 0xB0 ; 176
39c: f0 e0 ldi r31, 0x00 ; 0
39e: 80 81 ld r24, Z
3a0: 81 60 ori r24, 0x01 ; 1
3a2: 80 83 st Z, r24
3a4: ea e7 ldi r30, 0x7A ; 122
3a6: f0 e0 ldi r31, 0x00 ; 0
3a8: 80 81 ld r24, Z
3aa: 84 60 ori r24, 0x04 ; 4
3ac: 80 83 st Z, r24
3ae: 80 81 ld r24, Z
3b0: 82 60 ori r24, 0x02 ; 2
3b2: 80 83 st Z, r24
3b4: 80 81 ld r24, Z
3b6: 81 60 ori r24, 0x01 ; 1
3b8: 80 83 st Z, r24
3ba: 80 81 ld r24, Z
3bc: 80 68 ori r24, 0x80 ; 128
3be: 80 83 st Z, r24
3c0: 10 92 c1 00 sts 0x00C1, r1
3c4: 08 95 ret
000003c6 <pinMode>:
3c6: 28 2f mov r18, r24
3c8: 30 e0 ldi r19, 0x00 ; 0
3ca: c9 01 movw r24, r18
3cc: 85 57 subi r24, 0x75 ; 117
3ce: 9f 4f sbci r25, 0xFF ; 255
3d0: fc 01 movw r30, r24
3d2: 94 91 lpm r25, Z+
3d4: 29 58 subi r18, 0x89 ; 137
3d6: 3f 4f sbci r19, 0xFF ; 255
3d8: f9 01 movw r30, r18
3da: 84 91 lpm r24, Z+
3dc: 88 23 and r24, r24
3de: 81 f0 breq .+32 ; 0x400 <pinMode+0x3a>
3e0: e8 2f mov r30, r24
3e2: f0 e0 ldi r31, 0x00 ; 0
3e4: e8 59 subi r30, 0x98 ; 152
3e6: ff 4f sbci r31, 0xFF ; 255
3e8: e4 91 lpm r30, Z+
3ea: f0 e0 ldi r31, 0x00 ; 0
3ec: 66 23 and r22, r22
3ee: 29 f4 brne .+10 ; 0x3fa <pinMode+0x34>
3f0: 80 81 ld r24, Z
3f2: 90 95 com r25
3f4: 89 23 and r24, r25
3f6: 80 83 st Z, r24
3f8: 08 95 ret
3fa: 80 81 ld r24, Z
3fc: 89 2b or r24, r25
3fe: 80 83 st Z, r24
400: 08 95 ret
00000402 <digitalWrite>:
402: 48 2f mov r20, r24
404: 50 e0 ldi r21, 0x00 ; 0
406: ca 01 movw r24, r20
408: 81 56 subi r24, 0x61 ; 97
40a: 9f 4f sbci r25, 0xFF ; 255
40c: fc 01 movw r30, r24
40e: 24 91 lpm r18, Z+
410: ca 01 movw r24, r20
412: 85 57 subi r24, 0x75 ; 117
414: 9f 4f sbci r25, 0xFF ; 255
416: fc 01 movw r30, r24
418: 94 91 lpm r25, Z+
41a: 49 58 subi r20, 0x89 ; 137
41c: 5f 4f sbci r21, 0xFF ; 255
41e: fa 01 movw r30, r20
420: 34 91 lpm r19, Z+
422: 33 23 and r19, r19
424: c1 f1 breq .+112 ; 0x496 <digitalWrite+0x94>
426: 22 23 and r18, r18
428: 31 f1 breq .+76 ; 0x476 <digitalWrite+0x74>
42a: 23 30 cpi r18, 0x03 ; 3
42c: 21 f4 brne .+8 ; 0x436 <digitalWrite+0x34>
42e: 80 91 80 00 lds r24, 0x0080
432: 8f 77 andi r24, 0x7F ; 127
434: 05 c0 rjmp .+10 ; 0x440 <digitalWrite+0x3e>
436: 24 30 cpi r18, 0x04 ; 4
438: 31 f4 brne .+12 ; 0x446 <digitalWrite+0x44>
43a: 80 91 80 00 lds r24, 0x0080
43e: 8f 7d andi r24, 0xDF ; 223
440: 80 93 80 00 sts 0x0080, r24
444: 18 c0 rjmp .+48 ; 0x476 <digitalWrite+0x74>
446: 21 30 cpi r18, 0x01 ; 1
448: 19 f4 brne .+6 ; 0x450 <digitalWrite+0x4e>
44a: 84 b5 in r24, 0x24 ; 36
44c: 8f 77 andi r24, 0x7F ; 127
44e: 04 c0 rjmp .+8 ; 0x458 <digitalWrite+0x56>
450: 22 30 cpi r18, 0x02 ; 2
452: 21 f4 brne .+8 ; 0x45c <digitalWrite+0x5a>
454: 84 b5 in r24, 0x24 ; 36
456: 8f 7d andi r24, 0xDF ; 223
458: 84 bd out 0x24, r24 ; 36
45a: 0d c0 rjmp .+26 ; 0x476 <digitalWrite+0x74>
45c: 26 30 cpi r18, 0x06 ; 6
45e: 21 f4 brne .+8 ; 0x468 <digitalWrite+0x66>
460: 80 91 b0 00 lds r24, 0x00B0
464: 8f 77 andi r24, 0x7F ; 127
466: 05 c0 rjmp .+10 ; 0x472 <digitalWrite+0x70>
468: 27 30 cpi r18, 0x07 ; 7
46a: 29 f4 brne .+10 ; 0x476 <digitalWrite+0x74>
46c: 80 91 b0 00 lds r24, 0x00B0
470: 8f 7d andi r24, 0xDF ; 223
472: 80 93 b0 00 sts 0x00B0, r24
476: e3 2f mov r30, r19
478: f0 e0 ldi r31, 0x00 ; 0
47a: e3 59 subi r30, 0x93 ; 147
47c: ff 4f sbci r31, 0xFF ; 255
47e: e4 91 lpm r30, Z+
480: f0 e0 ldi r31, 0x00 ; 0
482: 66 23 and r22, r22
484: 29 f4 brne .+10 ; 0x490 <digitalWrite+0x8e>
486: 80 81 ld r24, Z
488: 90 95 com r25
48a: 89 23 and r24, r25
48c: 80 83 st Z, r24
48e: 08 95 ret
490: 80 81 ld r24, Z
492: 89 2b or r24, r25
494: 80 83 st Z, r24
496: 08 95 ret
00000498 <digitalRead>:
498: 48 2f mov r20, r24
49a: 50 e0 ldi r21, 0x00 ; 0
49c: ca 01 movw r24, r20
49e: 81 56 subi r24, 0x61 ; 97
4a0: 9f 4f sbci r25, 0xFF ; 255
4a2: fc 01 movw r30, r24
4a4: 24 91 lpm r18, Z+
4a6: ca 01 movw r24, r20
4a8: 85 57 subi r24, 0x75 ; 117
4aa: 9f 4f sbci r25, 0xFF ; 255
4ac: fc 01 movw r30, r24
4ae: 94 91 lpm r25, Z+
4b0: 49 58 subi r20, 0x89 ; 137
4b2: 5f 4f sbci r21, 0xFF ; 255
4b4: fa 01 movw r30, r20
4b6: 34 91 lpm r19, Z+
4b8: 33 23 and r19, r19
4ba: 19 f4 brne .+6 ; 0x4c2 <digitalRead+0x2a>
4bc: 20 e0 ldi r18, 0x00 ; 0
4be: 30 e0 ldi r19, 0x00 ; 0
4c0: 35 c0 rjmp .+106 ; 0x52c <digitalRead+0x94>
4c2: 22 23 and r18, r18
4c4: 31 f1 breq .+76 ; 0x512 <digitalRead+0x7a>
4c6: 23 30 cpi r18, 0x03 ; 3
4c8: 21 f4 brne .+8 ; 0x4d2 <digitalRead+0x3a>
4ca: 80 91 80 00 lds r24, 0x0080
4ce: 8f 77 andi r24, 0x7F ; 127
4d0: 05 c0 rjmp .+10 ; 0x4dc <digitalRead+0x44>
4d2: 24 30 cpi r18, 0x04 ; 4
4d4: 31 f4 brne .+12 ; 0x4e2 <digitalRead+0x4a>
4d6: 80 91 80 00 lds r24, 0x0080
4da: 8f 7d andi r24, 0xDF ; 223
4dc: 80 93 80 00 sts 0x0080, r24
4e0: 18 c0 rjmp .+48 ; 0x512 <digitalRead+0x7a>
4e2: 21 30 cpi r18, 0x01 ; 1
4e4: 19 f4 brne .+6 ; 0x4ec <digitalRead+0x54>
4e6: 84 b5 in r24, 0x24 ; 36
4e8: 8f 77 andi r24, 0x7F ; 127
4ea: 04 c0 rjmp .+8 ; 0x4f4 <digitalRead+0x5c>
4ec: 22 30 cpi r18, 0x02 ; 2
4ee: 21 f4 brne .+8 ; 0x4f8 <digitalRead+0x60>
4f0: 84 b5 in r24, 0x24 ; 36
4f2: 8f 7d andi r24, 0xDF ; 223
4f4: 84 bd out 0x24, r24 ; 36
4f6: 0d c0 rjmp .+26 ; 0x512 <digitalRead+0x7a>
4f8: 26 30 cpi r18, 0x06 ; 6
4fa: 21 f4 brne .+8 ; 0x504 <digitalRead+0x6c>
4fc: 80 91 b0 00 lds r24, 0x00B0
500: 8f 77 andi r24, 0x7F ; 127
502: 05 c0 rjmp .+10 ; 0x50e <digitalRead+0x76>
504: 27 30 cpi r18, 0x07 ; 7
506: 29 f4 brne .+10 ; 0x512 <digitalRead+0x7a>
508: 80 91 b0 00 lds r24, 0x00B0
50c: 8f 7d andi r24, 0xDF ; 223
50e: 80 93 b0 00 sts 0x00B0, r24
512: e3 2f mov r30, r19
514: f0 e0 ldi r31, 0x00 ; 0
516: ee 58 subi r30, 0x8E ; 142
518: ff 4f sbci r31, 0xFF ; 255
51a: e4 91 lpm r30, Z+
51c: f0 e0 ldi r31, 0x00 ; 0
51e: 80 81 ld r24, Z
520: 20 e0 ldi r18, 0x00 ; 0
522: 30 e0 ldi r19, 0x00 ; 0
524: 89 23 and r24, r25
526: 11 f0 breq .+4 ; 0x52c <digitalRead+0x94>
528: 21 e0 ldi r18, 0x01 ; 1
52a: 30 e0 ldi r19, 0x00 ; 0
52c: c9 01 movw r24, r18
52e: 08 95 ret
00000530 <_exit>:
530: f8 94 cli
00000532 <__stop_program>:
532: ff cf rjmp .-2 ; 0x532 <__stop_program>
|