1
0
mirror of synced 2024-12-22 04:30:08 +01:00

Forgotten commit.

This commit is contained in:
Mika Tuupola 2011-10-12 00:03:48 +03:00
parent e93a06d9ae
commit b0032dc282
15 changed files with 4813 additions and 0 deletions

View File

@ -0,0 +1,62 @@
main.o: main.c \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/stdlib.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/include/stddef.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/io.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/sfr_defs.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/inttypes.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/include/stdint.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/stdint.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/iom328p.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/portpins.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/common.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/version.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/fuse.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/lock.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/stdio.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/include/stdarg.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/util/delay.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/util/delay_basic.h \
main.h uart.h timer.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/interrupt.h
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/stdlib.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/include/stddef.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/io.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/sfr_defs.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/inttypes.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/include/stdint.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/stdint.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/iom328p.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/portpins.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/common.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/version.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/fuse.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/lock.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/stdio.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/include/stdarg.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/util/delay.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/util/delay_basic.h:
main.h:
uart.h:
timer.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/interrupt.h:

View File

@ -0,0 +1,39 @@
timer.o: timer.c timer.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/io.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/sfr_defs.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/inttypes.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/include/stdint.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/stdint.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/iom328p.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/portpins.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/common.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/version.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/fuse.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/lock.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/interrupt.h
timer.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/io.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/sfr_defs.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/inttypes.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/include/stdint.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/stdint.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/iom328p.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/portpins.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/common.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/version.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/fuse.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/lock.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/interrupt.h:

View File

@ -0,0 +1,49 @@
uart_async.o: uart_async.c \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/io.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/sfr_defs.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/inttypes.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/include/stdint.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/stdint.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/iom328p.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/portpins.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/common.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/version.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/fuse.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/lock.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/interrupt.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/stdio.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/include/stdarg.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/include/stddef.h \
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/util/setbaud.h
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/io.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/sfr_defs.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/inttypes.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/include/stdint.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/stdint.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/iom328p.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/portpins.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/common.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/version.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/fuse.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/lock.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/avr/interrupt.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/stdio.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/include/stdarg.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/include/stddef.h:
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/util/setbaud.h:

1
button_debounce/main.eep Normal file
View File

@ -0,0 +1 @@
:00000001FF

BIN
button_debounce/main.elf Executable file

Binary file not shown.

238
button_debounce/main.hex Normal file
View File

@ -0,0 +1,238 @@
:100000000C9434000C9451000C9451000C94510049
:100010000C9451000C9451000C9451000C9451001C
:100020000C9451000C9451000C9451000C9451000C
:100030000C9451000C9451000C947B020C945100D0
:100040000C9451000C9451000C94D7000C9417019F
:100050000C9451000C9451000C9451000C945100DC
:100060000C9451000C94510011241FBECFEFD8E026
:10007000DEBFCDBF11E0A0E0B1E0EAE7FEE002C0E4
:1000800005900D92A035B107D9F713E0A0E5B1E0D6
:1000900001C01D92A63AB107E1F70E945B030C94E0
:1000A0003B070C940000CF93DF9300D0CDB7DEB7B1
:1000B0009A838983898190E002C0959587956A9596
:1000C000E2F781700F900F90DF91CF910895FC01BE
:1000D000208181E090E002C0880F991F6A95E2F7C5
:1000E000442321F48095822380830895282B208344
:1000F00008951092510310925003109253031092DE
:100100005203109295031092940310929703109249
:1001100096031092C50087E68093C40086E0809322
:10012000C20088E18093C100789408951F93182F2E
:100130008A3019F48DE00E9496002091520330918C
:100140005303C901019660E071E00E9448044091A8
:100150005003509151038417950781F0F901EE0F78
:10016000FF1FE05BFE4F1083118290935303809337
:1001700052038091C10080628093C10080E090E0D2
:100180001F9108958091940390919503019660E2E8
:1001900070E00E9448049093950380939403FC01BF
:1001A000EE0FFF1FEC5AFC4F8081918108951F9242
:1001B0000F920FB60F9211242F933F934F935F939B
:1001C0006F937F938F939F93AF93BF93EF93FF931F
:1001D0002091960330919703C901019660E270E087
:1001E0000E94480440919403509195038417950709
:1001F00069F04091C600F901EE0FFF1FEC5AFC4F69
:10020000408311829093970380939603FF91EF911F
:10021000BF91AF919F918F917F916F915F914F911E
:100220003F912F910F900FBE0F901F9018951F9226
:100230000F920FB60F9211242F933F935F936F93FA
:100240007F938F939F93AF93BF93EF93FF9380918F
:10025000500390915103019660E071E00E944804C0
:1002600020915203309153038217930769F0FC01E8
:10027000EE0FFF1FE05BFE4F20812093C60090939E
:1002800051038093500305C08091C1008F7D8093FE
:10029000C100FF91EF91BF91AF919F918F917F919D
:1002A0006F915F913F912F910F900FBE0F901F9014
:1002B000189514BC85B5846085BD8EE387BD82E04A
:1002C00080936E00109298031092990310929A03F3
:1002D00010929B0310929C0310929D0310929E0318
:1002E00010929F0378948FEF84B90895209198031A
:1002F0003091990340919A0350919B0360919C0324
:1003000070919D0380919E0390919F0308952F9279
:100310003F924F925F926F927F928F929F92AF9295
:10032000BF92CF92DF92EF92FF920F931F93CF93E2
:10033000DF930F92CDB7DEB780909803709099034A
:1003400060909A0350909B0340909C0330909D03D3
:1003500020909E0380919F038983282D372D462D61
:10036000552D642D732D822D998102E00E94E102AA
:10037000F22E132FE42ED52EC62EB72EA82E992E90
:1003800005E00E94E102B22FBF19F1E02B1708F03F
:10039000F0E0232F211BE1E0321708F0E0E0022F0C
:1003A0000F1B31E0201708F030E0E32B342F3E190B
:1003B00021E0431708F020E0F32EFE1A41E03F153C
:1003C00008F040E0242B452F4D1931E0541708F078
:1003D00030E0142F121B21E0411708F020E0322BEF
:1003E000462F4C1921E0641708F020E0A42FA31B2E
:1003F00031E04A1708F030E0232B472F4B1931E04A
:10040000741708F030E0E42FE21B21E04E1708F0EB
:1004100020E0322B482F4A1921E0841708F020E011
:10042000F42FF31B81E04F1708F080E0282B991977
:10043000921B2B2F280D31E02B1708F030E0700EA7
:1004400041E0701608F040E0370D81E0371508F004
:1004500080E0482B6F0C51E06F1408F050E0460D1F
:1004600081E0461508F080E0582B510E61E05116EE
:1004700008F060E0550D81E0551508F080E0682B2C
:100480004A0E71E04A1608F070E0640D81E06415D0
:1004900008F080E0782B3E0E81E03E1608F080E008
:1004A000730DE1E0731508F0E0E08E2B2F0EE1E014
:1004B0002F1608F0E0E0820DF1E0821508F0F0E080
:1004C000EF2BA9819A0F9E0F03E00E94E1020F908B
:1004D000DF91CF911F910F91FF90EF90DF90CF9020
:1004E000BF90AF909F908F907F906F905F904F9054
:1004F0003F902F9008951F920F920FB60F921124E4
:100500002F933F934F935F936F937F938F939F931B
:10051000AF93EF93FF9316BC4091980330919903EA
:1005200020919A0390919B0380919C03F0919D03ED
:10053000E0919E03A0919F03642F6F5F51E06417C9
:1005400008F050E0530F41E0531708F040E0420F2D
:1005500031E0421708F030E0390F21E0391708F098
:1005600020E0280F91E0281708F090E09F0F81E02D
:100570009F1708F080E08E0F71E08E1708F070E092
:100580007A0F609398035093990340939A033093A2
:100590009B0320939C0390939D0380939E037093F1
:1005A0009F03FF91EF91AF919F918F917F916F91F9
:1005B0005F914F913F912F910F900FBE0F901F9021
:1005C0001895CF92DF92EF92FF920F93CF93DF9324
:1005D000CDB7DEB760970FB6F894DEBF0FBECDBFC4
:1005E000002309F45AC029873A874B875C876D87B7
:1005F0007E878F87988B80E2801B49855A856B8523
:100600007C851816B4F019821A821B821C829927E5
:1006100087FD9095909581959F4F04C0440F551F7D
:10062000661F771F8A95D2F74D835E836F83788725
:100630002CC06A017B01002E04C0CC0CDD1CEE1C1A
:10064000FF1C0A94D2F7C982DA82EB82FC826A012B
:100650007B0104C0F694E794D794C7948A95D2F7A7
:10066000D701C6014D855E856F85788904C0440F2A
:10067000551F661F771F0A95D2F7842B952BA62B43
:10068000B72B8D839E83AF83B88729813A814B81B5
:100690005C816D817E818F81988560960FB6F8941C
:1006A000DEBF0FBECDBFDF91CF910F91FF90EF90D6
:1006B000DF90CF900895CF93DF9300D0CDB7DEB712
:1006C00052985A9A259A0E9459010E94790082E410
:1006D00091E09093A3038093A20384E391E090932D
:1006E000A1038093A003772400E020E040E0442EA3
:1006F00041E0542E5BE1252E51E0352E01C0212F23
:1007000089B189831A82898190E09595879595951D
:100710008795182F1170121759F10E94760149011F
:100720005A016B017C018DB79EB70C970FB6F894F8
:100730009EBF0FBE8DBFEDB7FEB73196ADB7BEB74A
:1007400012965C924E921197128313828482958244
:10075000A682B782C086D186E286F3860E946F04A5
:100760008DB79EB70C960FB6F8949EBF0FBE8DBF87
:100770000E947601E22FE819F1E02E1708F0F0E070
:10078000A32FA91921E03A1708F020E03A2F3F1BC8
:10079000F1E0A31708F0F0E02F2BA42FAA19F1E045
:1007A0004A1708F0F0E04A2F421B21E0A41708F096
:1007B00020E0F22BA52FAB1921E05A1708F020E01A
:1007C0005A2F5F1BF1E0A51708F0F0E02F2BA62FA2
:1007D000AC19F1E06A1708F0F0E06A2F621B21E023
:1007E000A61708F020E0F22B272F2D19A1E0721791
:1007F00008F0A0E0722F7F1BF1E0271708F0F0E06F
:10080000AF2BF82FFE1921E08F1708F020E08F2F73
:100810008A1BA1E0F81708F0A0E02A2B9F19921775
:1008200071F4882361F4772351F4662341F455234E
:1008300031F4442321F4332311F4EB3008F0012F79
:10084000071509F45CCFADB7BEB71C970FB6F89487
:10085000BEBF0FBEADBFEDB7FEB7319612963C924C
:100860002E9211970283138284829582A682B78288
:10087000C086D186E286F3860E946F048DB79EB74C
:100880000C960FB6F8949EBF0FBE8DBF702E37CF5B
:1008900097FB092E07260AD077FD04D00CD006D08E
:1008A00000201AF4709561957F4F0895F6F79095A2
:1008B00081959F4F0895AA1BBB1B51E107C0AA1F3A
:1008C000BB1FA617B70710F0A61BB70B881F991FF1
:1008D0005A95A9F780959095BC01CD010895A0E0A7
:1008E000B0E0E5E7F4E00C941407FE013596619161
:1008F00071918091A2039091A303AF010E9484049F
:100900002096E2E00C943007ADE0B0E0EAE8F4E0D5
:100910000C9404073C017D876C875A01FC01178207
:100920001682838181FFCAC13FE3C32E2E01089442
:10093000411C511CF3019381EC85FD8593FD85914C
:1009400093FF8191FD87EC87882309F4B3C1853239
:1009500041F493FD859193FF8191FD87EC8785326A
:1009600029F490E0B3010E947A06E4CFEE24DD245E
:1009700010E01032B0F48B3269F08C3228F48032FF
:1009800051F0833271F40BC08D3239F0803349F469
:1009900011602CC01260146029C0186027C010615B
:1009A00025C017FD2EC0282F20532A3098F416FF9B
:1009B00008C08E2D880FE82EEE0CEE0CE80EE20E2D
:1009C00015C08D2D880FD82EDD0CDD0CD80ED20E63
:1009D00010620CC08E3221F416FD6CC1106406C08A
:1009E0008C3611F4106802C0883659F4EC85FD8508
:1009F00093FD859193FF8191FD87EC87882309F012
:100A0000B8CF982F9554933018F09052933030F41B
:100A100024E030E0A20EB31EC9820FC0833631F04D
:100A2000833781F0833509F05AC022C0F5018081F7
:100A3000898322E030E0A20EB31E21E0E22EF12CE9
:100A4000420114C092E0292E312C2A0C3B1CF501E6
:100A50008080918016FF03C06E2D70E002C06FEFA2
:100A60007FEFC4010E946F067C0151011F7715C002
:100A700082E0282E312C2A0C3B1CF50180809180CD
:100A800016FF03C06E2D70E002C06FEF7FEFC40150
:100A90000E9464067C011068510113FD1CC006C051
:100AA00080E290E0B3010E947A06DA948D2D90E006
:100AB000E816F906A8F30FC0F40117FD859117FF9A
:100AC00081914F0190E0B3010E947A06D110DA942F
:100AD0000894E108F108E114F10471F7E8C08436E4
:100AE00011F0893659F5F50117FF07C08081918112
:100AF000A281B38124E030E009C060817181CB0123
:100B0000AA2797FDA095BA2F22E030E0A20EB31ECF
:100B1000012F0F76B7FF08C0B095A09590958195ED
:100B20009F4FAF4FBF4F0068BC01CD01A2012AE02B
:100B300030E00E94A606F82EF4183FC0853721F455
:100B40001F7E2AE030E020C0197F8F36A9F0803761
:100B500020F4883509F0AEC00BC0803721F088370B
:100B600009F0A8C001C0106114FF09C0146007C0DB
:100B700014FF08C0166006C028E030E005C020E180
:100B800030E002C020E132E0F50117FF07C06081CC
:100B900071818281938144E050E006C0608171815F
:100BA00080E090E042E050E0A40EB51EA2010E9459
:100BB000A606F82EF418012F0F7706FF09C00E7F46
:100BC000FE1430F404FF06C002FD04C00F7E02C014
:100BD0001F2D01C01E2D802F90E004FF0CC0FE01D0
:100BE000EF0DF11D2081203311F4097E09C002FFB1
:100BF00006C01E5F05C086789070009709F01F5FE1
:100C0000802E992403FD12C000FF0DC0EF2C1D158E
:100C100050F4ED0CE11A1D2D06C080E290E0B30106
:100C20000E947A061F5F1D15C0F304C01D1510F445
:100C3000D11A01C0DD2484FE0FC080E390E0B3012F
:100C40000E947A0682FE1FC081FE03C088E590E004
:100C500010C088E790E00DC0C401867890700097BE
:100C600091F081FC02C080E201C08BE207FD8DE2C1
:100C700090E0B3010E947A0606C080E390E0B301E1
:100C80000E947A06EA94FE14C0F3FA94F201EF0D82
:100C9000F11D808190E0B3010E947A06FF20A9F740
:100CA00006C080E290E0B3010E947A06DA94DD206B
:100CB000C1F740CEF3018681978102C08FEF9FEF8D
:100CC0002D96E2E10C942007FC01059061507040E4
:100CD0000110D8F7809590958E0F9F1F0895FC0105
:100CE0006150704001900110D8F7809590958E0F5B
:100CF0009F1F08950F931F93CF93DF938C01EB01F8
:100D00008B8181FF1BC082FF0DC02E813F818C81B2
:100D10009D812817390764F4E881F9810193F983EB
:100D2000E88306C0E885F985802F0995009731F49E
:100D30008E819F8101969F838E8302C00FEF1FEFEC
:100D4000C801DF91CF911F910F910895FA01AA2751
:100D5000283051F1203181F1E8946F936E7F6E5FFE
:100D60007F4F8F4F9F4FAF4FB1E03ED0B4E03CD0AC
:100D7000670F781F891F9A1FA11D680F791F8A1F8F
:100D8000911DA11D6A0F711D811D911DA11D20D0F6
:100D900009F468943F912AE0269F11243019305DB0
:100DA0003193DEF6CF010895462F4770405D4193A1
:100DB000B3E00FD0C9F7F6CF462F4F70405D4A33EE
:100DC00018F0495D31FD4052419302D0A9F7EACFB6
:100DD000B4E0A6959795879577956795BA95C9F7E5
:100DE00000976105710508959B01AC010A2E0694D8
:100DF0005795479537952795BA95C9F7620F731F91
:100E0000841F951FA01D08952F923F924F925F92CD
:100E10006F927F928F929F92AF92BF92CF92DF920A
:100E2000EF92FF920F931F93CF93DF93CDB7DEB76F
:100E3000CA1BDB0B0FB6F894DEBF0FBECDBF099403
:100E40002A88398848885F846E847D848C849B845A
:100E5000AA84B984C884DF80EE80FD800C811B8168
:100E6000AA81B981CE0FD11D0FB6F894DEBF0FBE97
:0A0E7000CDBFED010895F894FFCF07
:100E7A002D2052656164696E6720746F67676C65BF
:100E8A006420256420282564290A002B20537461D4
:100E9A00746520746F67676C656420256420282553
:100EAA0064290A0000000001000000000000C200DE
:100EBA000000000000020000000096000000000090
:00000001FF

2051
button_debounce/main.lss Normal file

File diff suppressed because it is too large Load Diff

552
button_debounce/main.lst Normal file
View File

@ -0,0 +1,552 @@
1 .file "main.c"
2 __SREG__ = 0x3f
3 __SP_H__ = 0x3e
4 __SP_L__ = 0x3d
5 __tmp_reg__ = 0
6 __zero_reg__ = 1
7 .global __do_copy_data
8 .global __do_clear_bss
9 .text
10 .Ltext0:
11 .global digital_read
13 digital_read:
14 .LFB6:
15 .file 1 "main.c"
1:main.c **** /*
2:main.c **** * Button with debouncing. Based on the Arduino example but without
3:main.c **** * Arduino libraries.
4:main.c **** *
5:main.c **** * http://www.arduino.cc/en/Tutorial/Debounce
6:main.c **** *
7:main.c **** * To compile and upload run: make clean; make; make program;
8:main.c **** *
9:main.c **** * Copyright 2011 Mika Tuupola
10:main.c **** *
11:main.c **** * Licensed under the MIT license:
12:main.c **** * http://www.opensource.org/licenses/mit-license.php
13:main.c **** *
14:main.c **** */
15:main.c ****
16:main.c ****
17:main.c **** #ifndef F_CPU
18:main.c **** #define F_CPU 16000000UL
19:main.c **** #endif
20:main.c ****
21:main.c **** #include <stdlib.h>
22:main.c **** #include <avr/io.h>
23:main.c **** #include <stdio.h>
24:main.c **** #include <util/delay.h>
25:main.c **** #include <stdint.h>
26:main.c **** #include <avr/sfr_defs.h>
27:main.c ****
28:main.c **** #include "main.h"
29:main.c **** #include "uart.h"
30:main.c **** #include "timer.h"
31:main.c ****
32:main.c **** void init(void) {
33:main.c ****
34:main.c **** /* Make PORTD2 (Arduino digital 2) input by clearing bit in DDR */
35:main.c **** DDRD &= ~(_BV(PORTD2));
36:main.c ****
37:main.c **** /* In input mode, when pull-up is enabled, default state of pin becomes 1. So even if */
38:main.c **** /* you dont connect anything to pin and if you try to read it, it will read as 1. Now, */
39:main.c **** /* when you externally drive that pin to zero(i.e. connect to ground / or pull-down), */
40:main.c **** /* only then it will be read as 0. */
41:main.c ****
42:main.c **** /* Enable pullups by setting bits in PORT. Default state is now high. */
43:main.c **** PORTD |= (_BV(PORTD2));
44:main.c ****
45:main.c **** /* Make PORTB5 (Arduino digital 13) an output by setting bit in DDR. */
46:main.c **** DDRB |= _BV(PORTB5);
47:main.c ****
48:main.c **** }
49:main.c ****
50:main.c **** uint8_t digital_read(int input_register, int pin) {
16 .loc 1 50 0
17 .LVL0:
18 0000 CF93 push r28
19 .LCFI0:
20 0002 DF93 push r29
21 .LCFI1:
22 0004 00D0 rcall .
23 .LCFI2:
24 0006 CDB7 in r28,__SP_L__
25 0008 DEB7 in r29,__SP_H__
26 .LCFI3:
27 /* prologue: function */
28 /* frame size = 2 */
29 /* stack size = 4 */
30 .L__stack_usage = 4
31 000a 9A83 std Y+2,r25
32 000c 8983 std Y+1,r24
51:main.c **** return bit_is_set(input_register, pin) != 0 ? 1 : 0;
33 .loc 1 51 0
34 000e 8981 ldd r24,Y+1
35 .LVL1:
36 0010 90E0 ldi r25,lo8(0)
37 0012 00C0 rjmp 2f
38 0014 9595 1: asr r25
39 0016 8795 ror r24
40 0018 6A95 2: dec r22
41 001a 02F4 brpl 1b
52:main.c **** }
42 .loc 1 52 0
43 001c 8170 andi r24,lo8(1)
44 /* epilogue start */
45 001e 0F90 pop __tmp_reg__
46 0020 0F90 pop __tmp_reg__
47 0022 DF91 pop r29
48 0024 CF91 pop r28
49 0026 0895 ret
50 .LFE6:
52 .global digital_write
54 digital_write:
55 .LFB7:
53:main.c ****
54:main.c **** /* You could use cbi ie &= ~ or sbi ie |= but this makes code more readable. */
55:main.c **** void digital_write(volatile uint8_t *data_port, uint8_t pin, uint8_t value) {
56 .loc 1 55 0
57 .LVL2:
58 /* prologue: function */
59 /* frame size = 0 */
60 /* stack size = 0 */
61 .L__stack_usage = 0
62 0028 FC01 movw r30,r24
56:main.c **** if (0 == value) {
57:main.c **** *data_port &= ~(_BV(pin));
63 .loc 1 57 0
64 002a 2081 ld r18,Z
65 002c 81E0 ldi r24,lo8(1)
66 002e 90E0 ldi r25,hi8(1)
67 .LVL3:
68 0030 00C0 rjmp 2f
69 0032 880F 1: lsl r24
70 0034 991F rol r25
71 0036 6A95 2: dec r22
72 0038 02F4 brpl 1b
56:main.c **** if (0 == value) {
73 .loc 1 56 0
74 003a 4423 tst r20
75 003c 01F4 brne .L3
76 .loc 1 57 0
77 003e 8095 com r24
78 0040 8223 and r24,r18
79 0042 8083 st Z,r24
80 0044 0895 ret
81 .L3:
58:main.c **** } else {
59:main.c **** *data_port |= _BV(pin);
82 .loc 1 59 0
83 0046 282B or r18,r24
84 0048 2083 st Z,r18
85 004a 0895 ret
86 .LFE7:
88 .data
89 .LC0:
90 0000 2D20 5265 .string "- Reading toggled %d (%d)\n"
90 6164 696E
90 6720 746F
90 6767 6C65
90 6420 2564
91 .LC1:
92 001b 2B20 5374 .string "+ State toggled %d (%d)\n"
92 6174 6520
92 746F 6767
92 6C65 6420
92 2564 2028
93 .section .text.startup,"ax",@progbits
94 .global main
96 main:
97 .LFB8:
60:main.c **** }
61:main.c **** }
62:main.c ****
63:main.c **** int main(void) {
98 .loc 1 63 0
99 0000 CF93 push r28
100 .LCFI4:
101 0002 DF93 push r29
102 .LCFI5:
103 0004 00D0 rcall .
104 .LCFI6:
105 0006 CDB7 in r28,__SP_L__
106 0008 DEB7 in r29,__SP_H__
107 .LCFI7:
108 /* prologue: function */
109 /* frame size = 2 */
110 /* stack size = 4 */
111 .L__stack_usage = 4
112 .LBB6:
113 .LBB7:
35:main.c **** DDRD &= ~(_BV(PORTD2));
114 .loc 1 35 0
115 000a 5298 cbi 42-0x20,2
43:main.c **** PORTD |= (_BV(PORTD2));
116 .loc 1 43 0
117 000c 5A9A sbi 43-0x20,2
46:main.c **** DDRB |= _BV(PORTB5);
118 .loc 1 46 0
119 000e 259A sbi 36-0x20,5
120 .LBE7:
121 .LBE6:
64:main.c ****
65:main.c **** init();
66:main.c **** timer_init();
122 .loc 1 66 0
123 0010 0E94 0000 call timer_init
67:main.c **** uart_init();
124 .loc 1 67 0
125 0014 0E94 0000 call uart_init
68:main.c **** stdout = &uart_output;
126 .loc 1 68 0
127 0018 80E0 ldi r24,lo8(uart_output)
128 001a 90E0 ldi r25,hi8(uart_output)
129 001c 9093 0000 sts __iob+2+1,r25
130 0020 8093 0000 sts __iob+2,r24
69:main.c **** stdin = &uart_input;
131 .loc 1 69 0
132 0024 80E0 ldi r24,lo8(uart_input)
133 0026 90E0 ldi r25,hi8(uart_input)
134 0028 9093 0000 sts __iob+1,r25
135 002c 8093 0000 sts __iob,r24
136 .LVL4:
70:main.c ****
71:main.c **** uint8_t current_reading;
72:main.c **** uint8_t previous_reading = 0;
73:main.c **** uint8_t current_state = 0;
74:main.c **** uint8_t previous_state = 0;
137 .loc 1 74 0
138 0030 7724 clr r7
73:main.c **** uint8_t current_state = 0;
139 .loc 1 73 0
140 0032 00E0 ldi r16,lo8(0)
72:main.c **** uint8_t previous_reading = 0;
141 .loc 1 72 0
142 0034 20E0 ldi r18,lo8(0)
75:main.c ****
76:main.c **** uint64_t last_toggle_time;
77:main.c ****
78:main.c **** while (1) {
79:main.c ****
80:main.c **** current_reading = digital_read(PIND, PIND2);
81:main.c **** if (current_reading != previous_reading) {
82:main.c **** /* Note the time in millis of last change of button state. */
83:main.c **** last_toggle_time = timer_millis();
84:main.c **** printf("- Reading toggled %d (%d)\n", current_reading, last_toggle_time);
143 .loc 1 84 0
144 0036 40E0 ldi r20,lo8(.LC0)
145 0038 442E mov r4,r20
146 003a 40E0 ldi r20,hi8(.LC0)
147 003c 542E mov r5,r20
85:main.c **** }
86:main.c ****
87:main.c **** /* If there has been more than 10 millis since last toggling */
88:main.c **** /* of button state, assume it is real and not bouncing noise. */
89:main.c **** if ((timer_millis() - last_toggle_time) > 10) {
90:main.c **** current_state = current_reading;
91:main.c **** }
92:main.c ****
93:main.c **** /* Just for debugging purposes. */
94:main.c **** if (current_state != previous_state) {
95:main.c **** printf("+ State toggled %d (%d)\n", current_state, last_toggle_time);
148 .loc 1 95 0
149 003e 50E0 ldi r21,lo8(.LC1)
150 0040 252E mov r2,r21
151 0042 50E0 ldi r21,hi8(.LC1)
152 0044 352E mov r3,r21
153 0046 00C0 rjmp .L6
154 .LVL5:
155 .L23:
51:main.c **** return bit_is_set(input_register, pin) != 0 ? 1 : 0;
156 .loc 1 51 0
157 0048 212F mov r18,r17
158 .LVL6:
159 .L6:
80:main.c **** current_reading = digital_read(PIND, PIND2);
160 .loc 1 80 0
161 004a 89B1 in r24,41-0x20
162 004c 8983 std Y+1,r24
163 004e 1A82 std Y+2,__zero_reg__
164 .LVL7:
165 .LBB8:
166 .LBB9:
51:main.c **** return bit_is_set(input_register, pin) != 0 ? 1 : 0;
167 .loc 1 51 0
168 0050 8981 ldd r24,Y+1
169 0052 90E0 ldi r25,lo8(0)
170 0054 9595 asr r25
171 0056 8795 ror r24
172 0058 9595 asr r25
173 005a 8795 ror r24
174 005c 182F mov r17,r24
175 005e 1170 andi r17,lo8(1)
176 .LBE9:
177 .LBE8:
81:main.c **** if (current_reading != previous_reading) {
178 .loc 1 81 0
179 0060 1217 cp r17,r18
180 0062 01F0 breq .L7
83:main.c **** last_toggle_time = timer_millis();
181 .loc 1 83 0
182 0064 0E94 0000 call timer_millis
183 .LVL8:
184 0068 4901 movw r8,r18
185 .LVL9:
186 006a 5A01 movw r10,r20
187 006c 6B01 movw r12,r22
188 006e 7C01 movw r14,r24
189 .LVL10:
84:main.c **** printf("- Reading toggled %d (%d)\n", current_reading, last_toggle_time);
190 .loc 1 84 0
191 0070 8DB7 in r24,__SP_L__
192 0072 9EB7 in r25,__SP_H__
193 0074 0C97 sbiw r24,12
194 0076 0FB6 in __tmp_reg__,__SREG__
195 0078 F894 cli
196 007a 9EBF out __SP_H__,r25
197 007c 0FBE out __SREG__,__tmp_reg__
198 007e 8DBF out __SP_L__,r24
199 0080 EDB7 in r30,__SP_L__
200 0082 FEB7 in r31,__SP_H__
201 0084 3196 adiw r30,1
202 0086 ADB7 in r26,__SP_L__
203 0088 BEB7 in r27,__SP_H__
204 008a 1296 adiw r26,1+1
205 008c 5C92 st X,r5
206 008e 4E92 st -X,r4
207 0090 1197 sbiw r26,1
208 0092 1283 std Z+2,r17
209 0094 1382 std Z+3,__zero_reg__
210 0096 8482 std Z+4,r8
211 0098 9582 std Z+5,r9
212 009a A682 std Z+6,r10
213 009c B782 std Z+7,r11
214 009e C086 std Z+8,r12
215 00a0 D186 std Z+9,r13
216 00a2 E286 std Z+10,r14
217 00a4 F386 std Z+11,r15
218 .LCFI8:
219 00a6 0E94 0000 call printf
220 00aa 8DB7 in r24,__SP_L__
221 00ac 9EB7 in r25,__SP_H__
222 00ae 0C96 adiw r24,12
223 00b0 0FB6 in __tmp_reg__,__SREG__
224 00b2 F894 cli
225 00b4 9EBF out __SP_H__,r25
226 00b6 0FBE out __SREG__,__tmp_reg__
227 00b8 8DBF out __SP_L__,r24
228 .LVL11:
229 .L7:
89:main.c **** if ((timer_millis() - last_toggle_time) > 10) {
230 .loc 1 89 0
231 .LCFI9:
232 00ba 0E94 0000 call timer_millis
233 00be E22F mov r30,r18
234 00c0 E819 sub r30,r8
235 00c2 F1E0 ldi r31,lo8(1)
236 00c4 2E17 cp r18,r30
237 00c6 00F0 brlo .L9
238 00c8 F0E0 ldi r31,lo8(0)
239 .L9:
240 00ca A32F mov r26,r19
241 00cc A919 sub r26,r9
242 00ce 21E0 ldi r18,lo8(1)
243 00d0 3A17 cp r19,r26
244 00d2 00F0 brlo .L10
245 00d4 20E0 ldi r18,lo8(0)
246 .L10:
247 00d6 3A2F mov r19,r26
248 00d8 3F1B sub r19,r31
249 00da F1E0 ldi r31,lo8(1)
250 00dc A317 cp r26,r19
251 00de 00F0 brlo .L11
252 00e0 F0E0 ldi r31,lo8(0)
253 .L11:
254 00e2 2F2B or r18,r31
255 00e4 A42F mov r26,r20
256 00e6 AA19 sub r26,r10
257 00e8 F1E0 ldi r31,lo8(1)
258 00ea 4A17 cp r20,r26
259 00ec 00F0 brlo .L12
260 00ee F0E0 ldi r31,lo8(0)
261 .L12:
262 00f0 4A2F mov r20,r26
263 00f2 421B sub r20,r18
264 00f4 21E0 ldi r18,lo8(1)
265 00f6 A417 cp r26,r20
266 00f8 00F0 brlo .L13
267 00fa 20E0 ldi r18,lo8(0)
268 .L13:
269 00fc F22B or r31,r18
270 00fe A52F mov r26,r21
271 0100 AB19 sub r26,r11
272 0102 21E0 ldi r18,lo8(1)
273 0104 5A17 cp r21,r26
274 0106 00F0 brlo .L14
275 0108 20E0 ldi r18,lo8(0)
276 .L14:
277 010a 5A2F mov r21,r26
278 010c 5F1B sub r21,r31
279 010e F1E0 ldi r31,lo8(1)
280 0110 A517 cp r26,r21
281 0112 00F0 brlo .L15
282 0114 F0E0 ldi r31,lo8(0)
283 .L15:
284 0116 2F2B or r18,r31
285 0118 A62F mov r26,r22
286 011a AC19 sub r26,r12
287 011c F1E0 ldi r31,lo8(1)
288 011e 6A17 cp r22,r26
289 0120 00F0 brlo .L16
290 0122 F0E0 ldi r31,lo8(0)
291 .L16:
292 0124 6A2F mov r22,r26
293 0126 621B sub r22,r18
294 0128 21E0 ldi r18,lo8(1)
295 012a A617 cp r26,r22
296 012c 00F0 brlo .L17
297 012e 20E0 ldi r18,lo8(0)
298 .L17:
299 0130 F22B or r31,r18
300 0132 272F mov r18,r23
301 0134 2D19 sub r18,r13
302 0136 A1E0 ldi r26,lo8(1)
303 0138 7217 cp r23,r18
304 013a 00F0 brlo .L18
305 013c A0E0 ldi r26,lo8(0)
306 .L18:
307 013e 722F mov r23,r18
308 0140 7F1B sub r23,r31
309 0142 F1E0 ldi r31,lo8(1)
310 0144 2717 cp r18,r23
311 0146 00F0 brlo .L19
312 0148 F0E0 ldi r31,lo8(0)
313 .L19:
314 014a AF2B or r26,r31
315 014c F82F mov r31,r24
316 014e FE19 sub r31,r14
317 0150 21E0 ldi r18,lo8(1)
318 0152 8F17 cp r24,r31
319 0154 00F0 brlo .L20
320 0156 20E0 ldi r18,lo8(0)
321 .L20:
322 0158 8F2F mov r24,r31
323 015a 8A1B sub r24,r26
324 015c A1E0 ldi r26,lo8(1)
325 015e F817 cp r31,r24
326 0160 00F0 brlo .L21
327 0162 A0E0 ldi r26,lo8(0)
328 .L21:
329 0164 2A2B or r18,r26
330 0166 9F19 sub r25,r15
331 0168 9217 cp r25,r18
332 016a 01F4 brne .L24
333 016c 8823 tst r24
334 016e 01F4 brne .L24
335 0170 7723 tst r23
336 0172 01F4 brne .L24
337 0174 6623 tst r22
338 0176 01F4 brne .L24
339 0178 5523 tst r21
340 017a 01F4 brne .L24
341 017c 4423 tst r20
342 017e 01F4 brne .L24
343 0180 3323 tst r19
344 0182 01F4 brne .L24
345 0184 EB30 cpi r30,lo8(11)
346 0186 00F0 brlo .L8
347 .L24:
51:main.c **** return bit_is_set(input_register, pin) != 0 ? 1 : 0;
348 .loc 1 51 0
349 0188 012F mov r16,r17
350 .LVL12:
351 .L8:
94:main.c **** if (current_state != previous_state) {
352 .loc 1 94 0
353 018a 0715 cp r16,r7
354 018c 01F4 brne .+2
355 018e 00C0 rjmp .L23
356 .loc 1 95 0
357 0190 ADB7 in r26,__SP_L__
358 0192 BEB7 in r27,__SP_H__
359 0194 1C97 sbiw r26,12
360 0196 0FB6 in __tmp_reg__,__SREG__
361 0198 F894 cli
362 019a BEBF out __SP_H__,r27
363 019c 0FBE out __SREG__,__tmp_reg__
364 019e ADBF out __SP_L__,r26
365 01a0 EDB7 in r30,__SP_L__
366 01a2 FEB7 in r31,__SP_H__
367 01a4 3196 adiw r30,1
368 01a6 1296 adiw r26,1+1
369 01a8 3C92 st X,r3
370 01aa 2E92 st -X,r2
371 01ac 1197 sbiw r26,1
372 01ae 0283 std Z+2,r16
373 01b0 1382 std Z+3,__zero_reg__
374 01b2 8482 std Z+4,r8
375 01b4 9582 std Z+5,r9
376 01b6 A682 std Z+6,r10
377 01b8 B782 std Z+7,r11
378 01ba C086 std Z+8,r12
379 01bc D186 std Z+9,r13
380 01be E286 std Z+10,r14
381 01c0 F386 std Z+11,r15
382 .LCFI10:
383 01c2 0E94 0000 call printf
384 .LVL13:
385 01c6 8DB7 in r24,__SP_L__
386 01c8 9EB7 in r25,__SP_H__
387 01ca 0C96 adiw r24,12
388 01cc 0FB6 in __tmp_reg__,__SREG__
389 01ce F894 cli
390 01d0 9EBF out __SP_H__,r25
391 01d2 0FBE out __SREG__,__tmp_reg__
392 01d4 8DBF out __SP_L__,r24
393 01d6 702E mov r7,r16
394 01d8 00C0 rjmp .L23
395 .LFE8:
397 .global uart_input
398 .data
401 uart_input:
402 0034 0000 00 .skip 3,0
403 0037 01 .byte 1
404 0038 0000 0000 .skip 4,0
405 003c 0000 .word 0
406 003e 0000 .word gs(uart_getchar)
407 0040 0000 .word 0
408 .global uart_output
411 uart_output:
412 0042 0000 00 .skip 3,0
413 0045 02 .byte 2
414 0046 0000 0000 .skip 4,0
415 004a 0000 .word gs(uart_putchar)
416 004c 0000 .word 0
417 004e 0000 .word 0
512 .Letext0:
513 .file 2 "/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/stdint.h"
514 .file 3 "/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/stdio.h"
515 .file 4 "uart.h"
DEFINED SYMBOLS
*ABS*:0000000000000000 main.c
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccYMcvqY.s:2 *ABS*:000000000000003f __SREG__
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccYMcvqY.s:3 *ABS*:000000000000003e __SP_H__
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccYMcvqY.s:4 *ABS*:000000000000003d __SP_L__
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccYMcvqY.s:5 *ABS*:0000000000000000 __tmp_reg__
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccYMcvqY.s:6 *ABS*:0000000000000001 __zero_reg__
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccYMcvqY.s:13 .text:0000000000000000 digital_read
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccYMcvqY.s:54 .text:0000000000000028 digital_write
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccYMcvqY.s:96 .text.startup:0000000000000000 main
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccYMcvqY.s:411 .data:0000000000000042 uart_output
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccYMcvqY.s:401 .data:0000000000000034 uart_input
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
timer_init
uart_init
__iob
timer_millis
printf
uart_getchar
uart_putchar

679
button_debounce/main.map Normal file
View File

@ -0,0 +1,679 @@
Archive member included because of file (symbol)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_divmodhi4.o)
uart_async.o (__divmodhi4)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_exit.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o (exit)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_copy_data.o)
main.o (__do_copy_data)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_clear_bss.o)
main.o (__do_clear_bss)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_ashldi3.o)
timer.o (__ashldi3)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_udivmodhi4.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_divmodhi4.o) (__udivmodhi4)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(iob.o)
main.o (__iob)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(printf.o)
main.o (printf)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(printf.o) (vfprintf)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(strnlen_P.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o) (strnlen_P)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(strnlen.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o) (strnlen)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(fputc.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o) (fputc)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(ultoa_invert.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o) (__ultoa_invert)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_prologue.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(printf.o) (__prologue_saves__)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_epilogue.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(printf.o) (__epilogue_restores__)
Allocating common symbols
Common symbol size file
__iob 0x6 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(iob.o)
Memory Configuration
Name Origin Length Attributes
text 0x0000000000000000 0x0000000000020000 xr
data 0x0000000000800060 0x000000000000ffa0 rw !x
eeprom 0x0000000000810000 0x0000000000010000 rw !x
*default* 0x0000000000000000 0xffffffffffffffff
Linker script and memory map
Address of section .data set to 0x800100
LOAD /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
LOAD main.o
LOAD uart_async.o
LOAD timer.o
LOAD /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libm.a
LOAD /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a
LOAD /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a
LOAD /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a
.hash
*(.hash)
.dynsym
*(.dynsym)
.dynstr
*(.dynstr)
.gnu.version
*(.gnu.version)
.gnu.version_d
*(.gnu.version_d)
.gnu.version_r
*(.gnu.version_r)
.rel.init
*(.rel.init)
.rela.init
*(.rela.init)
.rel.text
*(.rel.text)
*(.rel.text.*)
*(.rel.gnu.linkonce.t*)
.rela.text
*(.rela.text)
*(.rela.text.*)
*(.rela.gnu.linkonce.t*)
.rel.fini
*(.rel.fini)
.rela.fini
*(.rela.fini)
.rel.rodata
*(.rel.rodata)
*(.rel.rodata.*)
*(.rel.gnu.linkonce.r*)
.rela.rodata
*(.rela.rodata)
*(.rela.rodata.*)
*(.rela.gnu.linkonce.r*)
.rel.data
*(.rel.data)
*(.rel.data.*)
*(.rel.gnu.linkonce.d*)
.rela.data
*(.rela.data)
*(.rela.data.*)
*(.rela.gnu.linkonce.d*)
.rel.ctors
*(.rel.ctors)
.rela.ctors
*(.rela.ctors)
.rel.dtors
*(.rel.dtors)
.rela.dtors
*(.rela.dtors)
.rel.got
*(.rel.got)
.rela.got
*(.rela.got)
.rel.bss
*(.rel.bss)
.rela.bss
*(.rela.bss)
.rel.plt
*(.rel.plt)
.rela.plt
*(.rela.plt)
.text 0x0000000000000000 0xe7a
*(.vectors)
.vectors 0x0000000000000000 0x68 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
0x0000000000000000 __vectors
0x0000000000000000 __vector_default
*(.vectors)
*(.progmem.gcc*)
*(.progmem*)
0x0000000000000068 . = ALIGN (0x2)
0x0000000000000068 __trampolines_start = .
*(.trampolines)
.trampolines 0x0000000000000068 0x0 linker stubs
*(.trampolines*)
0x0000000000000068 __trampolines_end = .
*(.jumptables)
*(.jumptables*)
*(.lowtext)
*(.lowtext*)
0x0000000000000068 __ctors_start = .
*(.ctors)
0x0000000000000068 __ctors_end = .
0x0000000000000068 __dtors_start = .
*(.dtors)
0x0000000000000068 __dtors_end = .
SORT(*)(.ctors)
SORT(*)(.dtors)
*(.init0)
.init0 0x0000000000000068 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
0x0000000000000068 __init
*(.init0)
*(.init1)
*(.init1)
*(.init2)
.init2 0x0000000000000068 0xc /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
*(.init2)
*(.init3)
*(.init3)
*(.init4)
.init4 0x0000000000000074 0x16 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_copy_data.o)
0x0000000000000074 __do_copy_data
.init4 0x000000000000008a 0x10 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_clear_bss.o)
0x000000000000008a __do_clear_bss
*(.init4)
*(.init5)
*(.init5)
*(.init6)
*(.init6)
*(.init7)
*(.init7)
*(.init8)
*(.init8)
*(.init9)
.init9 0x000000000000009a 0x8 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
*(.init9)
*(.text)
.text 0x00000000000000a2 0x4 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
0x00000000000000a2 __vector_20
0x00000000000000a2 __vector_1
0x00000000000000a2 __vector_24
0x00000000000000a2 __vector_12
0x00000000000000a2 __bad_interrupt
0x00000000000000a2 __vector_6
0x00000000000000a2 __vector_3
0x00000000000000a2 __vector_23
0x00000000000000a2 __vector_25
0x00000000000000a2 __vector_11
0x00000000000000a2 __vector_13
0x00000000000000a2 __vector_17
0x00000000000000a2 __vector_7
0x00000000000000a2 __vector_5
0x00000000000000a2 __vector_4
0x00000000000000a2 __vector_9
0x00000000000000a2 __vector_2
0x00000000000000a2 __vector_21
0x00000000000000a2 __vector_15
0x00000000000000a2 __vector_8
0x00000000000000a2 __vector_10
0x00000000000000a2 __vector_16
0x00000000000000a2 __vector_22
.text 0x00000000000000a6 0x4c main.o
0x00000000000000a6 digital_read
0x00000000000000ce digital_write
.text 0x00000000000000f2 0x1c0 uart_async.o
0x00000000000000f2 uart_init
0x000000000000012c uart_putchar
0x0000000000000184 uart_getchar
0x00000000000001ae __vector_18
0x000000000000022e __vector_19
.text 0x00000000000002b2 0x310 timer.o
0x00000000000002b2 timer_init
0x00000000000002ec timer_millis
0x000000000000030e timer_micros
0x00000000000004f6 __vector_14
.text 0x00000000000005c2 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_divmodhi4.o)
.text 0x00000000000005c2 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_exit.o)
.text 0x00000000000005c2 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_copy_data.o)
.text 0x00000000000005c2 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_clear_bss.o)
.text 0x00000000000005c2 0xf4 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_ashldi3.o)
0x00000000000005c2 __ashldi3
.text 0x00000000000006b6 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_udivmodhi4.o)
.text 0x00000000000006b6 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(iob.o)
.text 0x00000000000006b6 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(printf.o)
.text 0x00000000000006b6 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
.text 0x00000000000006b6 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(strnlen_P.o)
.text 0x00000000000006b6 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(strnlen.o)
.text 0x00000000000006b6 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(fputc.o)
.text 0x00000000000006b6 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(ultoa_invert.o)
.text 0x00000000000006b6 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_prologue.o)
.text 0x00000000000006b6 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_epilogue.o)
0x00000000000006b6 . = ALIGN (0x2)
*(.text.*)
.text.startup 0x00000000000006b6 0x1da main.o
0x00000000000006b6 main
.text.libgcc 0x0000000000000890 0x26 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_divmodhi4.o)
0x0000000000000890 __divmodhi4
0x0000000000000890 _div
.text.libgcc 0x00000000000008b6 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_exit.o)
.text.libgcc 0x00000000000008b6 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_copy_data.o)
.text.libgcc 0x00000000000008b6 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_clear_bss.o)
.text.libgcc 0x00000000000008b6 0x28 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_udivmodhi4.o)
0x00000000000008b6 __udivmodhi4
.text.avr-libc
0x00000000000008de 0x2a /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(printf.o)
0x00000000000008de printf
.text.avr-libc
0x0000000000000908 0x3c0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
0x0000000000000908 vfprintf
.text.avr-libc
0x0000000000000cc8 0x16 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(strnlen_P.o)
0x0000000000000cc8 strnlen_P
.text.avr-libc
0x0000000000000cde 0x16 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(strnlen.o)
0x0000000000000cde strnlen
.text.avr-libc
0x0000000000000cf4 0x58 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(fputc.o)
0x0000000000000cf4 fputc
.text.avr-libc
0x0000000000000d4c 0xbc /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(ultoa_invert.o)
0x0000000000000d4c __ultoa_invert
.text.libgcc 0x0000000000000e08 0x38 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_prologue.o)
0x0000000000000e08 __prologue_saves__
.text.libgcc 0x0000000000000e40 0x36 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_epilogue.o)
0x0000000000000e40 __epilogue_restores__
0x0000000000000e76 . = ALIGN (0x2)
*(.fini9)
.fini9 0x0000000000000e76 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_exit.o)
0x0000000000000e76 exit
0x0000000000000e76 _exit
*(.fini9)
*(.fini8)
*(.fini8)
*(.fini7)
*(.fini7)
*(.fini6)
*(.fini6)
*(.fini5)
*(.fini5)
*(.fini4)
*(.fini4)
*(.fini3)
*(.fini3)
*(.fini2)
*(.fini2)
*(.fini1)
*(.fini1)
*(.fini0)
.fini0 0x0000000000000e76 0x4 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_exit.o)
*(.fini0)
0x0000000000000e7a _etext = .
.data 0x0000000000800100 0x50 load address 0x0000000000000e7a
0x0000000000800100 PROVIDE (__data_start, .)
*(.data)
.data 0x0000000000800100 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
.data 0x0000000000800100 0x50 main.o
0x0000000000800134 uart_input
0x0000000000800142 uart_output
.data 0x0000000000800150 0x0 uart_async.o
.data 0x0000000000800150 0x0 timer.o
.data 0x0000000000800150 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_divmodhi4.o)
.data 0x0000000000800150 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_exit.o)
.data 0x0000000000800150 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_copy_data.o)
.data 0x0000000000800150 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_clear_bss.o)
.data 0x0000000000800150 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_ashldi3.o)
.data 0x0000000000800150 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_udivmodhi4.o)
.data 0x0000000000800150 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(iob.o)
.data 0x0000000000800150 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(printf.o)
.data 0x0000000000800150 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
.data 0x0000000000800150 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(strnlen_P.o)
.data 0x0000000000800150 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(strnlen.o)
.data 0x0000000000800150 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(fputc.o)
.data 0x0000000000800150 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(ultoa_invert.o)
.data 0x0000000000800150 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_prologue.o)
.data 0x0000000000800150 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_epilogue.o)
*(.data*)
*(.rodata)
*(.rodata*)
*(.gnu.linkonce.d*)
0x0000000000800150 . = ALIGN (0x2)
0x0000000000800150 _edata = .
0x0000000000800150 PROVIDE (__data_end, .)
.bss 0x0000000000800150 0x256
0x0000000000800150 PROVIDE (__bss_start, .)
*(.bss)
.bss 0x0000000000800150 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
.bss 0x0000000000800150 0x0 main.o
.bss 0x0000000000800150 0x248 uart_async.o
.bss 0x0000000000800398 0x8 timer.o
.bss 0x00000000008003a0 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_divmodhi4.o)
.bss 0x00000000008003a0 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_exit.o)
.bss 0x00000000008003a0 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_copy_data.o)
.bss 0x00000000008003a0 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_clear_bss.o)
.bss 0x00000000008003a0 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_ashldi3.o)
.bss 0x00000000008003a0 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_udivmodhi4.o)
.bss 0x00000000008003a0 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(iob.o)
.bss 0x00000000008003a0 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(printf.o)
.bss 0x00000000008003a0 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
.bss 0x00000000008003a0 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(strnlen_P.o)
.bss 0x00000000008003a0 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(strnlen.o)
.bss 0x00000000008003a0 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(fputc.o)
.bss 0x00000000008003a0 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(ultoa_invert.o)
.bss 0x00000000008003a0 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_prologue.o)
.bss 0x00000000008003a0 0x0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_epilogue.o)
*(.bss*)
*(COMMON)
COMMON 0x00000000008003a0 0x6 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(iob.o)
0x00000000008003a0 __iob
0x00000000008003a6 PROVIDE (__bss_end, .)
0x0000000000000e7a __data_load_start = LOADADDR (.data)
0x0000000000000eca __data_load_end = (__data_load_start + SIZEOF (.data))
.noinit 0x00000000008003a6 0x0
0x00000000008003a6 PROVIDE (__noinit_start, .)
*(.noinit*)
0x00000000008003a6 PROVIDE (__noinit_end, .)
0x00000000008003a6 _end = .
0x00000000008003a6 PROVIDE (__heap_start, .)
.eeprom 0x0000000000810000 0x0
*(.eeprom*)
0x0000000000810000 __eeprom_end = .
.stab 0x0000000000000000 0xc84
*(.stab)
.stab 0x0000000000000000 0x6cc /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
.stab 0x00000000000006cc 0x9c /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(strnlen_P.o)
0xa8 (size before relaxing)
.stab 0x0000000000000768 0x9c /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(strnlen.o)
0xa8 (size before relaxing)
.stab 0x0000000000000804 0x480 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(ultoa_invert.o)
0x48c (size before relaxing)
.stabstr 0x0000000000000000 0x19d
*(.stabstr)
.stabstr 0x0000000000000000 0x19d /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
.stab.excl
*(.stab.excl)
.stab.exclstr
*(.stab.exclstr)
.stab.index
*(.stab.index)
.stab.indexstr
*(.stab.indexstr)
.comment
*(.comment)
.debug
*(.debug)
.line
*(.line)
.debug_srcinfo
*(.debug_srcinfo)
.debug_sfnames
*(.debug_sfnames)
.debug_aranges 0x0000000000000000 0x1c8
*(.debug_aranges)
.debug_aranges
0x0000000000000000 0x28 main.o
.debug_aranges
0x0000000000000028 0x20 uart_async.o
.debug_aranges
0x0000000000000048 0x20 timer.o
.debug_aranges
0x0000000000000068 0x20 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_divmodhi4.o)
.debug_aranges
0x0000000000000088 0x20 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_exit.o)
.debug_aranges
0x00000000000000a8 0x20 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_copy_data.o)
.debug_aranges
0x00000000000000c8 0x20 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_clear_bss.o)
.debug_aranges
0x00000000000000e8 0x20 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_ashldi3.o)
.debug_aranges
0x0000000000000108 0x20 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_udivmodhi4.o)
.debug_aranges
0x0000000000000128 0x20 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(printf.o)
.debug_aranges
0x0000000000000148 0x20 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
.debug_aranges
0x0000000000000168 0x20 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(fputc.o)
.debug_aranges
0x0000000000000188 0x20 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_prologue.o)
.debug_aranges
0x00000000000001a8 0x20 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_epilogue.o)
.debug_pubnames
*(.debug_pubnames)
.debug_info 0x0000000000000000 0x145e
*(.debug_info)
.debug_info 0x0000000000000000 0x2f2 main.o
.debug_info 0x00000000000002f2 0x2d0 uart_async.o
.debug_info 0x00000000000005c2 0xe3 timer.o
.debug_info 0x00000000000006a5 0x9f /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_divmodhi4.o)
.debug_info 0x0000000000000744 0x9f /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_exit.o)
.debug_info 0x00000000000007e3 0x9f /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_copy_data.o)
.debug_info 0x0000000000000882 0x9f /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_clear_bss.o)
.debug_info 0x0000000000000921 0x184 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_ashldi3.o)
.debug_info 0x0000000000000aa5 0x9f /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_udivmodhi4.o)
.debug_info 0x0000000000000b44 0x153 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(iob.o)
.debug_info 0x0000000000000c97 0x1ca /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(printf.o)
.debug_info 0x0000000000000e61 0x354 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
.debug_info 0x00000000000011b5 0x16b /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(fputc.o)
.debug_info 0x0000000000001320 0x9f /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_prologue.o)
.debug_info 0x00000000000013bf 0x9f /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_epilogue.o)
*(.gnu.linkonce.wi.*)
.debug_abbrev 0x0000000000000000 0x983
*(.debug_abbrev)
.debug_abbrev 0x0000000000000000 0x1e6 main.o
.debug_abbrev 0x00000000000001e6 0x15f uart_async.o
.debug_abbrev 0x0000000000000345 0x9f timer.o
.debug_abbrev 0x00000000000003e4 0x14 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_divmodhi4.o)
.debug_abbrev 0x00000000000003f8 0x14 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_exit.o)
.debug_abbrev 0x000000000000040c 0x14 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_copy_data.o)
.debug_abbrev 0x0000000000000420 0x14 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_clear_bss.o)
.debug_abbrev 0x0000000000000434 0xf0 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_ashldi3.o)
.debug_abbrev 0x0000000000000524 0x14 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_udivmodhi4.o)
.debug_abbrev 0x0000000000000538 0xc7 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(iob.o)
.debug_abbrev 0x00000000000005ff 0x11e /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(printf.o)
.debug_abbrev 0x000000000000071d 0x163 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
.debug_abbrev 0x0000000000000880 0xdb /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(fputc.o)
.debug_abbrev 0x000000000000095b 0x14 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_prologue.o)
.debug_abbrev 0x000000000000096f 0x14 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_epilogue.o)
.debug_line 0x0000000000000000 0x953
*(.debug_line)
.debug_line 0x0000000000000000 0xe5 main.o
.debug_line 0x00000000000000e5 0xc4 uart_async.o
.debug_line 0x00000000000001a9 0xa6 timer.o
.debug_line 0x000000000000024f 0x70 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_divmodhi4.o)
.debug_line 0x00000000000002bf 0x5f /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_exit.o)
.debug_line 0x000000000000031e 0x68 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_copy_data.o)
.debug_line 0x0000000000000386 0x65 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_clear_bss.o)
.debug_line 0x00000000000003eb 0x6e /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_ashldi3.o)
.debug_line 0x0000000000000459 0x71 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_udivmodhi4.o)
.debug_line 0x00000000000004ca 0x62 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(iob.o)
.debug_line 0x000000000000052c 0xbc /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(printf.o)
.debug_line 0x00000000000005e8 0x1fe /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
.debug_line 0x00000000000007e6 0x7c /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(fputc.o)
.debug_line 0x0000000000000862 0x79 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_prologue.o)
.debug_line 0x00000000000008db 0x78 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_epilogue.o)
.debug_frame 0x0000000000000000 0x35c
*(.debug_frame)
.debug_frame 0x0000000000000000 0x70 main.o
.debug_frame 0x0000000000000070 0xf8 uart_async.o
.debug_frame 0x0000000000000168 0xf8 timer.o
.debug_frame 0x0000000000000260 0x4c /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_ashldi3.o)
.debug_frame 0x00000000000002ac 0x2c /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(printf.o)
.debug_frame 0x00000000000002d8 0x4c /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
.debug_frame 0x0000000000000324 0x38 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(fputc.o)
.debug_str 0x0000000000000000 0x421
*(.debug_str)
.debug_str 0x0000000000000000 0x15a main.o
0x198 (size before relaxing)
.debug_str 0x000000000000015a 0x95 uart_async.o
0x16b (size before relaxing)
.debug_str 0x00000000000001ef 0x3a timer.o
0xfc (size before relaxing)
.debug_str 0x0000000000000229 0xc3 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_ashldi3.o)
0x148 (size before relaxing)
.debug_str 0x00000000000002ec 0x60 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(iob.o)
0x104 (size before relaxing)
.debug_str 0x000000000000034c 0x3e /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(printf.o)
0x137 (size before relaxing)
.debug_str 0x000000000000038a 0x75 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
0x189 (size before relaxing)
.debug_str 0x00000000000003ff 0x22 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(fputc.o)
0x10d (size before relaxing)
.debug_loc 0x0000000000000000 0xcc7
*(.debug_loc)
.debug_loc 0x0000000000000000 0x1b0 main.o
.debug_loc 0x00000000000001b0 0x277 uart_async.o
.debug_loc 0x0000000000000427 0x1d6 timer.o
.debug_loc 0x00000000000005fd 0xf4 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_ashldi3.o)
.debug_loc 0x00000000000006f1 0x21 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(printf.o)
.debug_loc 0x0000000000000712 0x51c /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
.debug_loc 0x0000000000000c2e 0x99 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(fputc.o)
.debug_macinfo
*(.debug_macinfo)
OUTPUT(main.elf elf32-avr)
LOAD linker stubs
.debug_ranges 0x0000000000000000 0x48
.debug_ranges 0x0000000000000000 0x18 main.o
.debug_ranges 0x0000000000000018 0x10 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(printf.o)
.debug_ranges 0x0000000000000028 0x10 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
.debug_ranges 0x0000000000000038 0x10 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(fputc.o)
Cross Reference Table
Symbol File
__ashldi3 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_ashldi3.o)
timer.o
__bad_interrupt /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__bss_end /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_clear_bss.o)
__bss_start /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_clear_bss.o)
__data_end /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_copy_data.o)
__data_load_start /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_copy_data.o)
__data_start /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_copy_data.o)
__divmodhi4 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_divmodhi4.o)
uart_async.o
__do_clear_bss /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_clear_bss.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(fputc.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(printf.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(iob.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_ashldi3.o)
timer.o
uart_async.o
main.o
__do_copy_data /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_copy_data.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(fputc.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(printf.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(iob.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_ashldi3.o)
timer.o
uart_async.o
main.o
__epilogue_restores__ /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_epilogue.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(printf.o)
__heap_end /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__init /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__iob /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(printf.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(iob.o)
main.o
__prologue_saves__ /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_prologue.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(printf.o)
__stack /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__udivmodhi4 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_udivmodhi4.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_divmodhi4.o)
__ultoa_invert /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(ultoa_invert.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
__vector_1 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_10 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_11 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_12 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_13 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_14 timer.o
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_15 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_16 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_17 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_18 uart_async.o
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_19 uart_async.o
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_2 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_20 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_21 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_22 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_23 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_24 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_25 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_3 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_4 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_5 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_6 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_7 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_8 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_9 /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vector_default /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
__vectors /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
_div /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_divmodhi4.o)
_exit /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_exit.o)
digital_read main.o
digital_write main.o
exit /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/avr5/libgcc.a(_exit.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
fputc /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(fputc.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
main main.o
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/crtm328p.o
printf /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(printf.o)
main.o
strnlen /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(strnlen.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
strnlen_P /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(strnlen_P.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
timer_init timer.o
main.o
timer_micros timer.o
timer_millis timer.o
main.o
uart_getchar uart_async.o
main.o
uart_init uart_async.o
main.o
uart_input main.o
uart_output main.o
uart_putchar uart_async.o
main.o
vfprintf /usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(vfprintf_std.o)
/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/lib/avr5/libc.a(printf.o)

BIN
button_debounce/main.o Normal file

Binary file not shown.

126
button_debounce/main.sym Normal file
View File

@ -0,0 +1,126 @@
00000000 W __heap_end
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 a __tmp_reg__
00000000 W __vector_default
00000000 T __vectors
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
00000001 a __zero_reg__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003d a __SP_L__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003e a __SP_H__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
0000003f a __SREG__
00000068 T __ctors_end
00000068 T __ctors_start
00000068 T __dtors_end
00000068 T __dtors_start
00000068 W __init
00000068 T __trampolines_end
00000068 T __trampolines_start
00000074 T __do_copy_data
0000008a T __do_clear_bss
00000092 t .do_clear_bss_loop
00000094 t .do_clear_bss_start
000000a2 T __bad_interrupt
000000a2 W __vector_1
000000a2 W __vector_10
000000a2 W __vector_11
000000a2 W __vector_12
000000a2 W __vector_13
000000a2 W __vector_15
000000a2 W __vector_16
000000a2 W __vector_17
000000a2 W __vector_2
000000a2 W __vector_20
000000a2 W __vector_21
000000a2 W __vector_22
000000a2 W __vector_23
000000a2 W __vector_24
000000a2 W __vector_25
000000a2 W __vector_3
000000a2 W __vector_4
000000a2 W __vector_5
000000a2 W __vector_6
000000a2 W __vector_7
000000a2 W __vector_8
000000a2 W __vector_9
000000a6 T digital_read
000000ce T digital_write
000000f2 T uart_init
0000012c T uart_putchar
00000184 T uart_getchar
000001ae T __vector_18
0000022e T __vector_19
000002b2 T timer_init
000002ec T timer_millis
0000030e T timer_micros
000004f6 T __vector_14
000005c2 T __ashldi3
000006b6 T main
00000890 T __divmodhi4
00000890 T _div
000008a4 t __divmodhi4_neg2
000008aa t __divmodhi4_exit
000008ac t __divmodhi4_neg1
000008b6 T __udivmodhi4
000008be t __udivmodhi4_loop
000008cc t __udivmodhi4_ep
000008de T printf
000008ff W __stack
00000908 T vfprintf
00000cc8 T strnlen_P
00000cde T strnlen
00000cf4 T fputc
00000d4c T __ultoa_invert
00000e08 T __prologue_saves__
00000e40 T __epilogue_restores__
00000e76 T _exit
00000e76 W exit
00000e78 t __stop_program
00000e7a A __data_load_start
00000e7a T _etext
00000eca A __data_load_end
00800100 D __data_start
00800134 D uart_input
00800142 D uart_output
00800150 B __bss_start
00800150 D __data_end
00800150 D _edata
00800150 b tx_buffer
00800354 b rx_buffer
00800398 b _timer_millis
008003a0 B __iob
008003a6 B __bss_end
008003a6 N _end
00810000 N __eeprom_end

567
button_debounce/timer.lst Normal file
View File

@ -0,0 +1,567 @@
1 .file "timer.c"
2 __SREG__ = 0x3f
3 __SP_H__ = 0x3e
4 __SP_L__ = 0x3d
5 __tmp_reg__ = 0
6 __zero_reg__ = 1
7 .global __do_copy_data
8 .global __do_clear_bss
9 .text
10 .Ltext0:
11 .global timer_init
13 timer_init:
14 .LFB0:
15 .file 1 "timer.c"
1:timer.c **** /*
2:timer.c **** * Low resolution implementation of timer using a 8 bit clock with prescaler,
3:timer.c **** * etc. Clicks approximately every millisecond. Microseconds are not available,
4:timer.c **** * and any queries to the function will just return milliseconds * 1000.
5:timer.c **** * You can use this file when you don't need high resolution timing, and don't care
6:timer.c **** * about slight clock drift, inaccuracy, etc. For timing most human-related activities,
7:timer.c **** * though, it should be more than sufficient.
8:timer.c **** */
9:timer.c **** #include "timer.h"
10:timer.c ****
11:timer.c **** static volatile uint64_t _timer_millis;
12:timer.c ****
13:timer.c **** /*
14:timer.c **** * Initializes the timer, and resets the timer count to 0. Sets up the ISRs
15:timer.c **** * linked with timer0.
16:timer.c **** */
17:timer.c **** void timer_init(){
16 .loc 1 17 0
17 /* prologue: function */
18 /* frame size = 0 */
19 /* stack size = 0 */
20 .L__stack_usage = 0
18:timer.c **** //Set up the timer to run at F_CPU / 256, in normal mode (we reset TCNT0 in the ISR)
19:timer.c **** TCCR0A = 0x0;
21 .loc 1 19 0
22 0000 14BC out 68-0x20,__zero_reg__
20:timer.c **** TCCR0B |= _BV(CS02);
23 .loc 1 20 0
24 0002 85B5 in r24,69-0x20
25 0004 8460 ori r24,lo8(4)
26 0006 85BD out 69-0x20,r24
21:timer.c ****
22:timer.c **** //Set compare value to be F_CPU / 1000 -- fire interrupt every millisecond
23:timer.c **** OCR0A = F_CPU / 256 / 1000;
27 .loc 1 23 0
28 0008 8EE3 ldi r24,lo8(62)
29 000a 87BD out 71-0x20,r24
24:timer.c ****
25:timer.c **** //Enable compare interrupt
26:timer.c **** TIMSK0 = _BV(OCIE0A);
30 .loc 1 26 0
31 000c 82E0 ldi r24,lo8(2)
32 000e 8093 6E00 sts 110,r24
27:timer.c ****
28:timer.c **** //Reset count variables
29:timer.c **** _timer_millis = 0;
33 .loc 1 29 0
34 0012 1092 0000 sts _timer_millis,__zero_reg__
35 0016 1092 0000 sts _timer_millis+1,__zero_reg__
36 001a 1092 0000 sts _timer_millis+2,__zero_reg__
37 001e 1092 0000 sts _timer_millis+3,__zero_reg__
38 0022 1092 0000 sts _timer_millis+4,__zero_reg__
39 0026 1092 0000 sts _timer_millis+5,__zero_reg__
40 002a 1092 0000 sts _timer_millis+6,__zero_reg__
41 002e 1092 0000 sts _timer_millis+7,__zero_reg__
30:timer.c ****
31:timer.c **** //Enable interrupts if the NO_INTERRUPT_ENABLE define is not set. If it is, you need to call sei(
32:timer.c **** #ifndef NO_INTERRUPT_ENABLE
33:timer.c **** sei();
42 .loc 1 33 0
43 /* #APP */
44 ; 33 "timer.c" 1
45 0032 7894 sei
46 ; 0 "" 2
34:timer.c **** #endif
35:timer.c ****
36:timer.c **** DDRB = 0xFF;
47 .loc 1 36 0
48 /* #NOAPP */
49 0034 8FEF ldi r24,lo8(-1)
50 0036 84B9 out 36-0x20,r24
51 /* epilogue start */
37:timer.c **** }
52 .loc 1 37 0
53 0038 0895 ret
54 .LFE0:
56 .global timer_millis
58 timer_millis:
59 .LFB1:
38:timer.c ****
39:timer.c **** /*
40:timer.c **** * Returns the number of milliseconds which have elapsed since the
41:timer.c **** * last time timer_init() was called. Overflows after about 49 days.
42:timer.c **** */
43:timer.c **** uint64_t timer_millis(){
60 .loc 1 43 0
61 /* prologue: function */
62 /* frame size = 0 */
63 /* stack size = 0 */
64 .L__stack_usage = 0
44:timer.c **** return _timer_millis;
65 .loc 1 44 0
66 003a 2091 0000 lds r18,_timer_millis
67 003e 3091 0000 lds r19,_timer_millis+1
68 0042 4091 0000 lds r20,_timer_millis+2
69 0046 5091 0000 lds r21,_timer_millis+3
70 004a 6091 0000 lds r22,_timer_millis+4
71 004e 7091 0000 lds r23,_timer_millis+5
72 0052 8091 0000 lds r24,_timer_millis+6
73 0056 9091 0000 lds r25,_timer_millis+7
74 /* epilogue start */
45:timer.c **** }
75 .loc 1 45 0
76 005a 0895 ret
77 .LFE1:
79 .global timer_micros
81 timer_micros:
82 .LFB2:
46:timer.c ****
47:timer.c **** /*
48:timer.c **** * Returns the number of microseconds which have elapsed since the
49:timer.c **** * last time timer_init() was called. Overflows after about 71 minutes.
50:timer.c **** */
51:timer.c **** uint64_t timer_micros(){
83 .loc 1 51 0
84 005c 2F92 push r2
85 .LCFI0:
86 005e 3F92 push r3
87 .LCFI1:
88 0060 4F92 push r4
89 .LCFI2:
90 0062 5F92 push r5
91 .LCFI3:
92 0064 6F92 push r6
93 .LCFI4:
94 0066 7F92 push r7
95 .LCFI5:
96 0068 8F92 push r8
97 .LCFI6:
98 006a 9F92 push r9
99 .LCFI7:
100 006c AF92 push r10
101 .LCFI8:
102 006e BF92 push r11
103 .LCFI9:
104 0070 CF92 push r12
105 .LCFI10:
106 0072 DF92 push r13
107 .LCFI11:
108 0074 EF92 push r14
109 .LCFI12:
110 0076 FF92 push r15
111 .LCFI13:
112 0078 0F93 push r16
113 .LCFI14:
114 007a 1F93 push r17
115 .LCFI15:
116 007c CF93 push r28
117 .LCFI16:
118 007e DF93 push r29
119 .LCFI17:
120 0080 0F92 push __tmp_reg__
121 .LCFI18:
122 0082 CDB7 in r28,__SP_L__
123 0084 DEB7 in r29,__SP_H__
124 .LCFI19:
125 /* prologue: function */
126 /* frame size = 1 */
127 /* stack size = 19 */
128 .L__stack_usage = 19
52:timer.c **** return (_timer_millis * 1000);
129 .loc 1 52 0
130 0086 8090 0000 lds r8,_timer_millis
131 008a 7090 0000 lds r7,_timer_millis+1
132 008e 6090 0000 lds r6,_timer_millis+2
133 0092 5090 0000 lds r5,_timer_millis+3
134 0096 4090 0000 lds r4,_timer_millis+4
135 009a 3090 0000 lds r3,_timer_millis+5
136 009e 2090 0000 lds r2,_timer_millis+6
137 00a2 8091 0000 lds r24,_timer_millis+7
138 00a6 8983 std Y+1,r24
139 00a8 282D mov r18,r8
140 00aa 372D mov r19,r7
141 00ac 462D mov r20,r6
142 00ae 552D mov r21,r5
143 00b0 642D mov r22,r4
144 00b2 732D mov r23,r3
145 00b4 822D mov r24,r2
146 00b6 9981 ldd r25,Y+1
147 00b8 02E0 ldi r16,lo8(2)
148 00ba 0E94 0000 call __ashldi3
149 00be F22E mov r15,r18
150 00c0 132F mov r17,r19
151 00c2 E42E mov r14,r20
152 00c4 D52E mov r13,r21
153 00c6 C62E mov r12,r22
154 00c8 B72E mov r11,r23
155 00ca A82E mov r10,r24
156 00cc 992E mov r9,r25
157 00ce 05E0 ldi r16,lo8(5)
158 00d0 0E94 0000 call __ashldi3
159 00d4 B22F mov r27,r18
160 00d6 BF19 sub r27,r15
161 00d8 F1E0 ldi r31,lo8(1)
162 00da 2B17 cp r18,r27
163 00dc 00F0 brlo .L4
164 00de F0E0 ldi r31,lo8(0)
165 .L4:
166 00e0 232F mov r18,r19
167 00e2 211B sub r18,r17
168 00e4 E1E0 ldi r30,lo8(1)
169 00e6 3217 cp r19,r18
170 00e8 00F0 brlo .L5
171 00ea E0E0 ldi r30,lo8(0)
172 .L5:
173 00ec 022F mov r16,r18
174 00ee 0F1B sub r16,r31
175 00f0 31E0 ldi r19,lo8(1)
176 00f2 2017 cp r18,r16
177 00f4 00F0 brlo .L6
178 00f6 30E0 ldi r19,lo8(0)
179 .L6:
180 00f8 E32B or r30,r19
181 00fa 342F mov r19,r20
182 00fc 3E19 sub r19,r14
183 00fe 21E0 ldi r18,lo8(1)
184 0100 4317 cp r20,r19
185 0102 00F0 brlo .L7
186 0104 20E0 ldi r18,lo8(0)
187 .L7:
188 0106 F32E mov r15,r19
189 0108 FE1A sub r15,r30
190 010a 41E0 ldi r20,lo8(1)
191 010c 3F15 cp r19,r15
192 010e 00F0 brlo .L8
193 0110 40E0 ldi r20,lo8(0)
194 .L8:
195 0112 242B or r18,r20
196 0114 452F mov r20,r21
197 0116 4D19 sub r20,r13
198 0118 31E0 ldi r19,lo8(1)
199 011a 5417 cp r21,r20
200 011c 00F0 brlo .L9
201 011e 30E0 ldi r19,lo8(0)
202 .L9:
203 0120 142F mov r17,r20
204 0122 121B sub r17,r18
205 0124 21E0 ldi r18,lo8(1)
206 0126 4117 cp r20,r17
207 0128 00F0 brlo .L10
208 012a 20E0 ldi r18,lo8(0)
209 .L10:
210 012c 322B or r19,r18
211 012e 462F mov r20,r22
212 0130 4C19 sub r20,r12
213 0132 21E0 ldi r18,lo8(1)
214 0134 6417 cp r22,r20
215 0136 00F0 brlo .L11
216 0138 20E0 ldi r18,lo8(0)
217 .L11:
218 013a A42F mov r26,r20
219 013c A31B sub r26,r19
220 013e 31E0 ldi r19,lo8(1)
221 0140 4A17 cp r20,r26
222 0142 00F0 brlo .L12
223 0144 30E0 ldi r19,lo8(0)
224 .L12:
225 0146 232B or r18,r19
226 0148 472F mov r20,r23
227 014a 4B19 sub r20,r11
228 014c 31E0 ldi r19,lo8(1)
229 014e 7417 cp r23,r20
230 0150 00F0 brlo .L13
231 0152 30E0 ldi r19,lo8(0)
232 .L13:
233 0154 E42F mov r30,r20
234 0156 E21B sub r30,r18
235 0158 21E0 ldi r18,lo8(1)
236 015a 4E17 cp r20,r30
237 015c 00F0 brlo .L14
238 015e 20E0 ldi r18,lo8(0)
239 .L14:
240 0160 322B or r19,r18
241 0162 482F mov r20,r24
242 0164 4A19 sub r20,r10
243 0166 21E0 ldi r18,lo8(1)
244 0168 8417 cp r24,r20
245 016a 00F0 brlo .L15
246 016c 20E0 ldi r18,lo8(0)
247 .L15:
248 016e F42F mov r31,r20
249 0170 F31B sub r31,r19
250 0172 81E0 ldi r24,lo8(1)
251 0174 4F17 cp r20,r31
252 0176 00F0 brlo .L16
253 0178 80E0 ldi r24,lo8(0)
254 .L16:
255 017a 282B or r18,r24
256 017c 9919 sub r25,r9
257 017e 921B sub r25,r18
258 0180 2B2F mov r18,r27
259 0182 280D add r18,r8
260 0184 31E0 ldi r19,lo8(1)
261 0186 2B17 cp r18,r27
262 0188 00F0 brlo .L17
263 018a 30E0 ldi r19,lo8(0)
264 .L17:
265 018c 700E add r7,r16
266 018e 41E0 ldi r20,lo8(1)
267 0190 7016 cp r7,r16
268 0192 00F0 brlo .L18
269 0194 40E0 ldi r20,lo8(0)
270 .L18:
271 0196 370D add r19,r7
272 0198 81E0 ldi r24,lo8(1)
273 019a 3715 cp r19,r7
274 019c 00F0 brlo .L19
275 019e 80E0 ldi r24,lo8(0)
276 .L19:
277 01a0 482B or r20,r24
278 01a2 6F0C add r6,r15
279 01a4 51E0 ldi r21,lo8(1)
280 01a6 6F14 cp r6,r15
281 01a8 00F0 brlo .L20
282 01aa 50E0 ldi r21,lo8(0)
283 .L20:
284 01ac 460D add r20,r6
285 01ae 81E0 ldi r24,lo8(1)
286 01b0 4615 cp r20,r6
287 01b2 00F0 brlo .L21
288 01b4 80E0 ldi r24,lo8(0)
289 .L21:
290 01b6 582B or r21,r24
291 01b8 510E add r5,r17
292 01ba 61E0 ldi r22,lo8(1)
293 01bc 5116 cp r5,r17
294 01be 00F0 brlo .L22
295 01c0 60E0 ldi r22,lo8(0)
296 .L22:
297 01c2 550D add r21,r5
298 01c4 81E0 ldi r24,lo8(1)
299 01c6 5515 cp r21,r5
300 01c8 00F0 brlo .L23
301 01ca 80E0 ldi r24,lo8(0)
302 .L23:
303 01cc 682B or r22,r24
304 01ce 4A0E add r4,r26
305 01d0 71E0 ldi r23,lo8(1)
306 01d2 4A16 cp r4,r26
307 01d4 00F0 brlo .L24
308 01d6 70E0 ldi r23,lo8(0)
309 .L24:
310 01d8 640D add r22,r4
311 01da 81E0 ldi r24,lo8(1)
312 01dc 6415 cp r22,r4
313 01de 00F0 brlo .L25
314 01e0 80E0 ldi r24,lo8(0)
315 .L25:
316 01e2 782B or r23,r24
317 01e4 3E0E add r3,r30
318 01e6 81E0 ldi r24,lo8(1)
319 01e8 3E16 cp r3,r30
320 01ea 00F0 brlo .L26
321 01ec 80E0 ldi r24,lo8(0)
322 .L26:
323 01ee 730D add r23,r3
324 01f0 E1E0 ldi r30,lo8(1)
325 01f2 7315 cp r23,r3
326 01f4 00F0 brlo .L27
327 01f6 E0E0 ldi r30,lo8(0)
328 .L27:
329 01f8 8E2B or r24,r30
330 01fa 2F0E add r2,r31
331 01fc E1E0 ldi r30,lo8(1)
332 01fe 2F16 cp r2,r31
333 0200 00F0 brlo .L28
334 0202 E0E0 ldi r30,lo8(0)
335 .L28:
336 0204 820D add r24,r2
337 0206 F1E0 ldi r31,lo8(1)
338 0208 8215 cp r24,r2
339 020a 00F0 brlo .L29
340 020c F0E0 ldi r31,lo8(0)
341 .L29:
342 020e EF2B or r30,r31
343 0210 A981 ldd r26,Y+1
344 0212 9A0F add r25,r26
345 0214 9E0F add r25,r30
346 0216 03E0 ldi r16,lo8(3)
347 0218 0E94 0000 call __ashldi3
348 /* epilogue start */
53:timer.c **** }
349 .loc 1 53 0
350 021c 0F90 pop __tmp_reg__
351 021e DF91 pop r29
352 0220 CF91 pop r28
353 0222 1F91 pop r17
354 0224 0F91 pop r16
355 0226 FF90 pop r15
356 0228 EF90 pop r14
357 022a DF90 pop r13
358 022c CF90 pop r12
359 022e BF90 pop r11
360 0230 AF90 pop r10
361 0232 9F90 pop r9
362 0234 8F90 pop r8
363 0236 7F90 pop r7
364 0238 6F90 pop r6
365 023a 5F90 pop r5
366 023c 4F90 pop r4
367 023e 3F90 pop r3
368 0240 2F90 pop r2
369 0242 0895 ret
370 .LFE2:
372 .global __vector_14
374 __vector_14:
375 .LFB3:
54:timer.c ****
55:timer.c ****
56:timer.c **** /*
57:timer.c **** * The ISR for timer0 overflow. Increment the _timer_count here, and do the calculcations
58:timer.c **** * to increment _timer_millis as needed.
59:timer.c **** */
60:timer.c **** ISR(TIMER0_COMPA_vect){
376 .loc 1 60 0
377 0244 1F92 push r1
378 .LCFI20:
379 0246 0F92 push r0
380 .LCFI21:
381 0248 0FB6 in r0,__SREG__
382 024a 0F92 push r0
383 024c 1124 clr __zero_reg__
384 024e 2F93 push r18
385 .LCFI22:
386 0250 3F93 push r19
387 .LCFI23:
388 0252 4F93 push r20
389 .LCFI24:
390 0254 5F93 push r21
391 .LCFI25:
392 0256 6F93 push r22
393 .LCFI26:
394 0258 7F93 push r23
395 .LCFI27:
396 025a 8F93 push r24
397 .LCFI28:
398 025c 9F93 push r25
399 .LCFI29:
400 025e AF93 push r26
401 .LCFI30:
402 0260 EF93 push r30
403 .LCFI31:
404 0262 FF93 push r31
405 .LCFI32:
406 /* prologue: Signal */
407 /* frame size = 0 */
408 /* stack size = 14 */
409 .L__stack_usage = 14
61:timer.c **** TCNT0 = 0;
410 .loc 1 61 0
411 0264 16BC out 70-0x20,__zero_reg__
62:timer.c **** _timer_millis++;
412 .loc 1 62 0
413 0266 4091 0000 lds r20,_timer_millis
414 026a 3091 0000 lds r19,_timer_millis+1
415 026e 2091 0000 lds r18,_timer_millis+2
416 0272 9091 0000 lds r25,_timer_millis+3
417 0276 8091 0000 lds r24,_timer_millis+4
418 027a F091 0000 lds r31,_timer_millis+5
419 027e E091 0000 lds r30,_timer_millis+6
420 0282 A091 0000 lds r26,_timer_millis+7
421 0286 642F mov r22,r20
422 0288 6F5F subi r22,lo8(-(1))
423 028a 51E0 ldi r21,lo8(1)
424 028c 6417 cp r22,r20
425 028e 00F0 brlo .L31
426 0290 50E0 ldi r21,lo8(0)
427 .L31:
428 0292 530F add r21,r19
429 0294 41E0 ldi r20,lo8(1)
430 0296 5317 cp r21,r19
431 0298 00F0 brlo .L33
432 029a 40E0 ldi r20,lo8(0)
433 .L33:
434 029c 420F add r20,r18
435 029e 31E0 ldi r19,lo8(1)
436 02a0 4217 cp r20,r18
437 02a2 00F0 brlo .L35
438 02a4 30E0 ldi r19,lo8(0)
439 .L35:
440 02a6 390F add r19,r25
441 02a8 21E0 ldi r18,lo8(1)
442 02aa 3917 cp r19,r25
443 02ac 00F0 brlo .L37
444 02ae 20E0 ldi r18,lo8(0)
445 .L37:
446 02b0 280F add r18,r24
447 02b2 91E0 ldi r25,lo8(1)
448 02b4 2817 cp r18,r24
449 02b6 00F0 brlo .L39
450 02b8 90E0 ldi r25,lo8(0)
451 .L39:
452 02ba 9F0F add r25,r31
453 02bc 81E0 ldi r24,lo8(1)
454 02be 9F17 cp r25,r31
455 02c0 00F0 brlo .L41
456 02c2 80E0 ldi r24,lo8(0)
457 .L41:
458 02c4 8E0F add r24,r30
459 02c6 71E0 ldi r23,lo8(1)
460 02c8 8E17 cp r24,r30
461 02ca 00F0 brlo .L43
462 02cc 70E0 ldi r23,lo8(0)
463 .L43:
464 02ce 7A0F add r23,r26
465 02d0 6093 0000 sts _timer_millis,r22
466 02d4 5093 0000 sts _timer_millis+1,r21
467 02d8 4093 0000 sts _timer_millis+2,r20
468 02dc 3093 0000 sts _timer_millis+3,r19
469 02e0 2093 0000 sts _timer_millis+4,r18
470 02e4 9093 0000 sts _timer_millis+5,r25
471 02e8 8093 0000 sts _timer_millis+6,r24
472 02ec 7093 0000 sts _timer_millis+7,r23
473 /* epilogue start */
63:timer.c **** }
474 .loc 1 63 0
475 02f0 FF91 pop r31
476 02f2 EF91 pop r30
477 02f4 AF91 pop r26
478 02f6 9F91 pop r25
479 02f8 8F91 pop r24
480 02fa 7F91 pop r23
481 02fc 6F91 pop r22
482 02fe 5F91 pop r21
483 0300 4F91 pop r20
484 0302 3F91 pop r19
485 0304 2F91 pop r18
486 0306 0F90 pop r0
487 0308 0FBE out __SREG__,r0
488 030a 0F90 pop r0
489 030c 1F90 pop r1
490 030e 1895 reti
491 .LFE3:
493 .lcomm _timer_millis,8
738 .Letext0:
739 .file 2 "/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/stdint.h"
DEFINED SYMBOLS
*ABS*:0000000000000000 timer.c
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccElzoTR.s:2 *ABS*:000000000000003f __SREG__
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccElzoTR.s:3 *ABS*:000000000000003e __SP_H__
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccElzoTR.s:4 *ABS*:000000000000003d __SP_L__
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccElzoTR.s:5 *ABS*:0000000000000000 __tmp_reg__
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccElzoTR.s:6 *ABS*:0000000000000001 __zero_reg__
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccElzoTR.s:13 .text:0000000000000000 timer_init
.bss:0000000000000000 _timer_millis
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccElzoTR.s:58 .text:000000000000003a timer_millis
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccElzoTR.s:81 .text:000000000000005c timer_micros
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccElzoTR.s:374 .text:0000000000000244 __vector_14
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__ashldi3

BIN
button_debounce/timer.o Normal file

Binary file not shown.

View File

@ -0,0 +1,449 @@
1 .file "uart_async.c"
2 __SREG__ = 0x3f
3 __SP_H__ = 0x3e
4 __SP_L__ = 0x3d
5 __tmp_reg__ = 0
6 __zero_reg__ = 1
7 .global __do_copy_data
8 .global __do_clear_bss
9 .text
10 .Ltext0:
11 .global uart_init
13 uart_init:
14 .LFB1:
15 .file 1 "uart_async.c"
1:uart_async.c **** /* Based on Atmel Application Note AVR 306 */
2:uart_async.c ****
3:uart_async.c **** #include <avr/io.h>
4:uart_async.c **** #include <avr/interrupt.h>
5:uart_async.c **** #include <stdio.h>
6:uart_async.c ****
7:uart_async.c **** #ifndef BAUD
8:uart_async.c **** #define BAUD 9600
9:uart_async.c **** #endif
10:uart_async.c **** #include <util/setbaud.h>
11:uart_async.c ****
12:uart_async.c **** #ifndef UART_RX_BUFFER_SIZE
13:uart_async.c **** #define UART_RX_BUFFER_SIZE 32
14:uart_async.c **** #endif
15:uart_async.c ****
16:uart_async.c **** #ifndef UART_TX_BUFFER_SIZE
17:uart_async.c **** #define UART_TX_BUFFER_SIZE 256
18:uart_async.c **** #endif
19:uart_async.c ****
20:uart_async.c **** struct tx_ring {
21:uart_async.c **** int buffer[UART_TX_BUFFER_SIZE];
22:uart_async.c **** int start;
23:uart_async.c **** int end;
24:uart_async.c **** };
25:uart_async.c ****
26:uart_async.c **** struct rx_ring {
27:uart_async.c **** int buffer[UART_RX_BUFFER_SIZE];
28:uart_async.c **** int start;
29:uart_async.c **** int end;
30:uart_async.c **** };
31:uart_async.c ****
32:uart_async.c **** static struct tx_ring tx_buffer;
33:uart_async.c **** static struct rx_ring rx_buffer;
34:uart_async.c ****
35:uart_async.c **** /* http://www.cs.mun.ca/~rod/Winter2007/4723/notes/serial/serial.html */
36:uart_async.c ****
37:uart_async.c **** void uart_init(void) {
16 .loc 1 37 0
17 /* prologue: function */
18 /* frame size = 0 */
19 /* stack size = 0 */
20 .L__stack_usage = 0
38:uart_async.c ****
39:uart_async.c **** tx_buffer.start = 0;
21 .loc 1 39 0
22 0000 1092 0000 sts tx_buffer+512+1,__zero_reg__
23 0004 1092 0000 sts tx_buffer+512,__zero_reg__
40:uart_async.c **** tx_buffer.end = 0;
24 .loc 1 40 0
25 0008 1092 0000 sts tx_buffer+514+1,__zero_reg__
26 000c 1092 0000 sts tx_buffer+514,__zero_reg__
41:uart_async.c ****
42:uart_async.c **** rx_buffer.start = 0;
27 .loc 1 42 0
28 0010 1092 0000 sts rx_buffer+64+1,__zero_reg__
29 0014 1092 0000 sts rx_buffer+64,__zero_reg__
43:uart_async.c **** rx_buffer.end = 0;
30 .loc 1 43 0
31 0018 1092 0000 sts rx_buffer+66+1,__zero_reg__
32 001c 1092 0000 sts rx_buffer+66,__zero_reg__
44:uart_async.c ****
45:uart_async.c **** UBRR0H = UBRRH_VALUE;
33 .loc 1 45 0
34 0020 1092 C500 sts 197,__zero_reg__
46:uart_async.c **** UBRR0L = UBRRL_VALUE;
35 .loc 1 46 0
36 0024 87E6 ldi r24,lo8(103)
37 0026 8093 C400 sts 196,r24
47:uart_async.c ****
48:uart_async.c **** UCSR0C = _BV(UCSZ01) | _BV(UCSZ00); /* 8-bit data */
38 .loc 1 48 0
39 002a 86E0 ldi r24,lo8(6)
40 002c 8093 C200 sts 194,r24
49:uart_async.c **** UCSR0B = _BV(RXEN0) | _BV(TXEN0); /* Enable RX and TX */
41 .loc 1 49 0
42 0030 88E1 ldi r24,lo8(24)
43 0032 8093 C100 sts 193,r24
50:uart_async.c ****
51:uart_async.c **** sei();
44 .loc 1 51 0
45 /* #APP */
46 ; 51 "uart_async.c" 1
47 0036 7894 sei
48 ; 0 "" 2
49 /* epilogue start */
52:uart_async.c **** }
50 .loc 1 52 0
51 /* #NOAPP */
52 0038 0895 ret
53 .LFE1:
55 .global uart_putchar
57 uart_putchar:
58 .LFB2:
53:uart_async.c ****
54:uart_async.c **** int uart_putchar(char c, FILE *stream) {
59 .loc 1 54 0
60 .LVL0:
61 003a 1F93 push r17
62 .LCFI0:
63 /* prologue: function */
64 /* frame size = 0 */
65 /* stack size = 1 */
66 .L__stack_usage = 1
67 003c 182F mov r17,r24
55:uart_async.c **** if (c == '\n') {
68 .loc 1 55 0
69 003e 8A30 cpi r24,lo8(10)
70 0040 01F4 brne .L3
71 .LVL1:
56:uart_async.c **** uart_putchar('\r', stream);
72 .loc 1 56 0
73 0042 8DE0 ldi r24,lo8(13)
74 0044 0E94 0000 call uart_putchar
75 .LVL2:
76 .L3:
57:uart_async.c **** }
58:uart_async.c ****
59:uart_async.c **** int write_pointer = (tx_buffer.end + 1) % UART_TX_BUFFER_SIZE;
77 .loc 1 59 0
78 0048 2091 0000 lds r18,tx_buffer+514
79 004c 3091 0000 lds r19,tx_buffer+514+1
80 0050 C901 movw r24,r18
81 0052 0196 adiw r24,1
82 0054 60E0 ldi r22,lo8(256)
83 0056 71E0 ldi r23,hi8(256)
84 0058 0E94 0000 call __divmodhi4
85 .LVL3:
60:uart_async.c ****
61:uart_async.c **** if (write_pointer != tx_buffer.start){
86 .loc 1 61 0
87 005c 4091 0000 lds r20,tx_buffer+512
88 0060 5091 0000 lds r21,tx_buffer+512+1
89 0064 8417 cp r24,r20
90 0066 9507 cpc r25,r21
91 0068 01F0 breq .L4
62:uart_async.c **** tx_buffer.buffer[tx_buffer.end] = c;
92 .loc 1 62 0
93 006a F901 movw r30,r18
94 006c EE0F lsl r30
95 006e FF1F rol r31
96 0070 E050 subi r30,lo8(-(tx_buffer))
97 0072 F040 sbci r31,hi8(-(tx_buffer))
98 0074 1083 st Z,r17
99 0076 1182 std Z+1,__zero_reg__
63:uart_async.c **** tx_buffer.end = write_pointer;
100 .loc 1 63 0
101 0078 9093 0000 sts tx_buffer+514+1,r25
102 007c 8093 0000 sts tx_buffer+514,r24
64:uart_async.c ****
65:uart_async.c **** /* Data available. Enable the transmit interrupt for serial port 0. */
66:uart_async.c **** UCSR0B |= _BV(UDRIE0);
103 .loc 1 66 0
104 0080 8091 C100 lds r24,193
105 .LVL4:
106 0084 8062 ori r24,lo8(32)
107 0086 8093 C100 sts 193,r24
108 .LVL5:
109 .L4:
67:uart_async.c **** }
68:uart_async.c ****
69:uart_async.c **** return 0;
70:uart_async.c **** }
110 .loc 1 70 0
111 008a 80E0 ldi r24,lo8(0)
112 008c 90E0 ldi r25,hi8(0)
113 /* epilogue start */
114 008e 1F91 pop r17
115 .LVL6:
116 0090 0895 ret
117 .LFE2:
119 .global uart_getchar
121 uart_getchar:
122 .LFB3:
71:uart_async.c ****
72:uart_async.c **** int uart_getchar(FILE *stream) {
123 .loc 1 72 0
124 .LVL7:
125 /* prologue: function */
126 /* frame size = 0 */
127 /* stack size = 0 */
128 .L__stack_usage = 0
73:uart_async.c **** int read_pointer = (rx_buffer.start + 1) % UART_RX_BUFFER_SIZE;
129 .loc 1 73 0
130 0092 8091 0000 lds r24,rx_buffer+64
131 0096 9091 0000 lds r25,rx_buffer+64+1
132 .LVL8:
133 009a 0196 adiw r24,1
134 009c 60E2 ldi r22,lo8(32)
135 009e 70E0 ldi r23,hi8(32)
136 00a0 0E94 0000 call __divmodhi4
137 .LVL9:
74:uart_async.c ****
75:uart_async.c **** rx_buffer.start = read_pointer;
138 .loc 1 75 0
139 00a4 9093 0000 sts rx_buffer+64+1,r25
140 00a8 8093 0000 sts rx_buffer+64,r24
76:uart_async.c **** return rx_buffer.buffer[read_pointer];
141 .loc 1 76 0
142 00ac FC01 movw r30,r24
143 00ae EE0F lsl r30
144 00b0 FF1F rol r31
145 00b2 E050 subi r30,lo8(-(rx_buffer))
146 00b4 F040 sbci r31,hi8(-(rx_buffer))
77:uart_async.c **** }
147 .loc 1 77 0
148 00b6 8081 ld r24,Z
149 .LVL10:
150 00b8 9181 ldd r25,Z+1
151 /* epilogue start */
152 00ba 0895 ret
153 .LFE3:
155 .global __vector_18
157 __vector_18:
158 .LFB4:
78:uart_async.c ****
79:uart_async.c **** ISR(USART_RX_vect) {
159 .loc 1 79 0
160 00bc 1F92 push r1
161 .LCFI1:
162 00be 0F92 push r0
163 .LCFI2:
164 00c0 0FB6 in r0,__SREG__
165 00c2 0F92 push r0
166 00c4 1124 clr __zero_reg__
167 00c6 2F93 push r18
168 .LCFI3:
169 00c8 3F93 push r19
170 .LCFI4:
171 00ca 4F93 push r20
172 .LCFI5:
173 00cc 5F93 push r21
174 .LCFI6:
175 00ce 6F93 push r22
176 .LCFI7:
177 00d0 7F93 push r23
178 .LCFI8:
179 00d2 8F93 push r24
180 .LCFI9:
181 00d4 9F93 push r25
182 .LCFI10:
183 00d6 AF93 push r26
184 .LCFI11:
185 00d8 BF93 push r27
186 .LCFI12:
187 00da EF93 push r30
188 .LCFI13:
189 00dc FF93 push r31
190 .LCFI14:
191 /* prologue: Signal */
192 /* frame size = 0 */
193 /* stack size = 15 */
194 .L__stack_usage = 15
80:uart_async.c **** int write_pointer = (rx_buffer.end + 1) % UART_RX_BUFFER_SIZE;
195 .loc 1 80 0
196 00de 2091 0000 lds r18,rx_buffer+66
197 00e2 3091 0000 lds r19,rx_buffer+66+1
198 00e6 C901 movw r24,r18
199 00e8 0196 adiw r24,1
200 00ea 60E2 ldi r22,lo8(32)
201 00ec 70E0 ldi r23,hi8(32)
202 00ee 0E94 0000 call __divmodhi4
203 .LVL11:
81:uart_async.c ****
82:uart_async.c **** /* Add next byte to ringbuffer if it has space available. */
83:uart_async.c **** if (write_pointer != rx_buffer.start){
204 .loc 1 83 0
205 00f2 4091 0000 lds r20,rx_buffer+64
206 00f6 5091 0000 lds r21,rx_buffer+64+1
207 00fa 8417 cp r24,r20
208 00fc 9507 cpc r25,r21
209 00fe 01F0 breq .L6
84:uart_async.c **** rx_buffer.buffer[rx_buffer.end] = UDR0;
210 .loc 1 84 0
211 0100 4091 C600 lds r20,198
212 0104 F901 movw r30,r18
213 0106 EE0F lsl r30
214 0108 FF1F rol r31
215 010a E050 subi r30,lo8(-(rx_buffer))
216 010c F040 sbci r31,hi8(-(rx_buffer))
217 010e 4083 st Z,r20
218 0110 1182 std Z+1,__zero_reg__
85:uart_async.c **** rx_buffer.end = write_pointer;
219 .loc 1 85 0
220 0112 9093 0000 sts rx_buffer+66+1,r25
221 0116 8093 0000 sts rx_buffer+66,r24
222 .L6:
223 /* epilogue start */
86:uart_async.c **** }
87:uart_async.c **** }
224 .loc 1 87 0
225 011a FF91 pop r31
226 011c EF91 pop r30
227 011e BF91 pop r27
228 0120 AF91 pop r26
229 0122 9F91 pop r25
230 0124 8F91 pop r24
231 .LVL12:
232 0126 7F91 pop r23
233 0128 6F91 pop r22
234 012a 5F91 pop r21
235 012c 4F91 pop r20
236 012e 3F91 pop r19
237 0130 2F91 pop r18
238 0132 0F90 pop r0
239 0134 0FBE out __SREG__,r0
240 0136 0F90 pop r0
241 0138 1F90 pop r1
242 013a 1895 reti
243 .LFE4:
245 .global __vector_19
247 __vector_19:
248 .LFB5:
88:uart_async.c ****
89:uart_async.c **** ISR(USART_UDRE_vect){
249 .loc 1 89 0
250 013c 1F92 push r1
251 .LCFI15:
252 013e 0F92 push r0
253 .LCFI16:
254 0140 0FB6 in r0,__SREG__
255 0142 0F92 push r0
256 0144 1124 clr __zero_reg__
257 0146 2F93 push r18
258 .LCFI17:
259 0148 3F93 push r19
260 .LCFI18:
261 014a 5F93 push r21
262 .LCFI19:
263 014c 6F93 push r22
264 .LCFI20:
265 014e 7F93 push r23
266 .LCFI21:
267 0150 8F93 push r24
268 .LCFI22:
269 0152 9F93 push r25
270 .LCFI23:
271 0154 AF93 push r26
272 .LCFI24:
273 0156 BF93 push r27
274 .LCFI25:
275 0158 EF93 push r30
276 .LCFI26:
277 015a FF93 push r31
278 .LCFI27:
279 /* prologue: Signal */
280 /* frame size = 0 */
281 /* stack size = 14 */
282 .L__stack_usage = 14
90:uart_async.c **** int read_pointer = (tx_buffer.start + 1) % UART_TX_BUFFER_SIZE;
283 .loc 1 90 0
284 015c 8091 0000 lds r24,tx_buffer+512
285 0160 9091 0000 lds r25,tx_buffer+512+1
286 0164 0196 adiw r24,1
287 0166 60E0 ldi r22,lo8(256)
288 0168 71E0 ldi r23,hi8(256)
289 016a 0E94 0000 call __divmodhi4
290 .LVL13:
91:uart_async.c ****
92:uart_async.c **** /* Transmit next byte if data available in ringbuffer. */
93:uart_async.c **** if (read_pointer != tx_buffer.end) {
291 .loc 1 93 0
292 016e 2091 0000 lds r18,tx_buffer+514
293 0172 3091 0000 lds r19,tx_buffer+514+1
294 0176 8217 cp r24,r18
295 0178 9307 cpc r25,r19
296 017a 01F0 breq .L9
94:uart_async.c **** UDR0 = tx_buffer.buffer[read_pointer];
297 .loc 1 94 0
298 017c FC01 movw r30,r24
299 017e EE0F lsl r30
300 0180 FF1F rol r31
301 0182 E050 subi r30,lo8(-(tx_buffer))
302 0184 F040 sbci r31,hi8(-(tx_buffer))
303 0186 2081 ld r18,Z
304 0188 2093 C600 sts 198,r18
95:uart_async.c **** tx_buffer.start = read_pointer;
305 .loc 1 95 0
306 018c 9093 0000 sts tx_buffer+512+1,r25
307 0190 8093 0000 sts tx_buffer+512,r24
308 0194 00C0 rjmp .L8
309 .L9:
96:uart_async.c **** } else {
97:uart_async.c **** /* Nothing to send. Disable the transmit interrupt for serial port 0. */
98:uart_async.c **** UCSR0B &= ~_BV(UDRIE0);
310 .loc 1 98 0
311 0196 8091 C100 lds r24,193
312 .LVL14:
313 019a 8F7D andi r24,lo8(-33)
314 019c 8093 C100 sts 193,r24
315 .L8:
316 /* epilogue start */
99:uart_async.c **** }
100:uart_async.c **** }
317 .loc 1 100 0
318 01a0 FF91 pop r31
319 01a2 EF91 pop r30
320 01a4 BF91 pop r27
321 01a6 AF91 pop r26
322 01a8 9F91 pop r25
323 01aa 8F91 pop r24
324 01ac 7F91 pop r23
325 01ae 6F91 pop r22
326 01b0 5F91 pop r21
327 01b2 3F91 pop r19
328 01b4 2F91 pop r18
329 01b6 0F90 pop r0
330 01b8 0FBE out __SREG__,r0
331 01ba 0F90 pop r0
332 01bc 1F90 pop r1
333 01be 1895 reti
334 .LFE5:
336 .lcomm tx_buffer,516
337 .lcomm rx_buffer,68
564 .Letext0:
565 .file 2 "/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/stdio.h"
566 .file 3 "/usr/local/Cellar/avr-gcc/4.6.1/lib/gcc/avr/4.6.1/../../../../avr/include/stdint.h"
DEFINED SYMBOLS
*ABS*:0000000000000000 uart_async.c
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccGlpivZ.s:2 *ABS*:000000000000003f __SREG__
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccGlpivZ.s:3 *ABS*:000000000000003e __SP_H__
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccGlpivZ.s:4 *ABS*:000000000000003d __SP_L__
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccGlpivZ.s:5 *ABS*:0000000000000000 __tmp_reg__
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccGlpivZ.s:6 *ABS*:0000000000000001 __zero_reg__
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccGlpivZ.s:13 .text:0000000000000000 uart_init
.bss:0000000000000000 tx_buffer
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccGlpivZ.s:336 .bss:0000000000000204 rx_buffer
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccGlpivZ.s:57 .text:000000000000003a uart_putchar
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccGlpivZ.s:121 .text:0000000000000092 uart_getchar
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccGlpivZ.s:157 .text:00000000000000bc __vector_18
/var/folders/6p/hvps1d6n58jfd6qghfhb96600000gn/T//ccGlpivZ.s:247 .text:000000000000013c __vector_19
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__divmodhi4

Binary file not shown.