From 2bd45f076ea7eb429bfee54fe1de240ff4b284e6 Mon Sep 17 00:00:00 2001 From: brett Date: Tue, 23 Apr 2024 20:51:02 -0500 Subject: [PATCH] should be finished, backing up --- .vs/final_project/v14/.atsuo | Bin 0 -> 32768 bytes final_project.atsln | 22 + final_project/Debug/Makefile | 151 + final_project/Debug/clock.d | 39 + final_project/Debug/clock.o | Bin 0 -> 5312 bytes final_project/Debug/final_project.eep | 1 + final_project/Debug/final_project.elf | Bin 0 -> 27504 bytes final_project/Debug/final_project.hex | 353 ++ final_project/Debug/final_project.lss | 3015 +++++++++++++++++ final_project/Debug/final_project.map | 934 +++++ final_project/Debug/final_project.srec | 354 ++ final_project/Debug/main.d | 54 + final_project/Debug/main.o | Bin 0 -> 22272 bytes final_project/Debug/makedep.mk | 10 + final_project/Debug/serial.d | 36 + final_project/Debug/serial.o | Bin 0 -> 6596 bytes final_project/clock.c | 31 + final_project/clock.h | 17 + final_project/final_project.componentinfo.xml | 86 + final_project/final_project.cproj | 175 + final_project/main.c | 218 ++ final_project/serial.c | 39 + final_project/serial.h | 21 + rubric.pdf | Bin 0 -> 221870 bytes 24 files changed, 5556 insertions(+) create mode 100644 .vs/final_project/v14/.atsuo create mode 100644 final_project.atsln create mode 100644 final_project/Debug/Makefile create mode 100644 final_project/Debug/clock.d create mode 100644 final_project/Debug/clock.o create mode 100644 final_project/Debug/final_project.eep create mode 100644 final_project/Debug/final_project.elf create mode 100644 final_project/Debug/final_project.hex create mode 100644 final_project/Debug/final_project.lss create mode 100644 final_project/Debug/final_project.map create mode 100644 final_project/Debug/final_project.srec create mode 100644 final_project/Debug/main.d create mode 100644 final_project/Debug/main.o create mode 100644 final_project/Debug/makedep.mk create mode 100644 final_project/Debug/serial.d create mode 100644 final_project/Debug/serial.o create mode 100644 final_project/clock.c create mode 100644 final_project/clock.h create mode 100644 final_project/final_project.componentinfo.xml create mode 100644 final_project/final_project.cproj create mode 100644 final_project/main.c create mode 100644 final_project/serial.c create mode 100644 final_project/serial.h create mode 100644 rubric.pdf diff --git a/.vs/final_project/v14/.atsuo b/.vs/final_project/v14/.atsuo new file mode 100644 index 0000000000000000000000000000000000000000..e2a05f9cbceaa16e05db5568305c9307252e682c GIT binary patch literal 32768 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 literal 0 HcmV?d00001 diff --git a/final_project.atsln b/final_project.atsln new file mode 100644 index 0000000..fd4a3a6 --- /dev/null +++ b/final_project.atsln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Atmel Studio Solution File, Format Version 11.00 +VisualStudioVersion = 14.0.23107.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "final_project", "final_project\final_project.cproj", "{DCE6C7E3-EE26-4D79-826B-08594B9AD897}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|AVR = Debug|AVR + Release|AVR = Release|AVR + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Debug|AVR.ActiveCfg = Debug|AVR + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Debug|AVR.Build.0 = Debug|AVR + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Release|AVR.ActiveCfg = Release|AVR + {DCE6C7E3-EE26-4D79-826B-08594B9AD897}.Release|AVR.Build.0 = Release|AVR + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/final_project/Debug/Makefile b/final_project/Debug/Makefile new file mode 100644 index 0000000..893cd33 --- /dev/null +++ b/final_project/Debug/Makefile @@ -0,0 +1,151 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +SHELL := cmd.exe +RM := rm -rf + +USER_OBJS := + +LIBS := +PROJ := + +O_SRCS := +C_SRCS := +S_SRCS := +S_UPPER_SRCS := +OBJ_SRCS := +ASM_SRCS := +PREPROCESSING_SRCS := +OBJS := +OBJS_AS_ARGS := +C_DEPS := +C_DEPS_AS_ARGS := +EXECUTABLES := +OUTPUT_FILE_PATH := +OUTPUT_FILE_PATH_AS_ARGS := +AVR_APP_PATH :=$$$AVR_APP_PATH$$$ +QUOTE := " +ADDITIONAL_DEPENDENCIES:= +OUTPUT_FILE_DEP:= +LIB_DEP:= +LINKER_SCRIPT_DEP:= + +# Every subdirectory with source files must be described here +SUBDIRS := + + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../clock.c \ +../serial.c \ +../main.c + + +PREPROCESSING_SRCS += + + +ASM_SRCS += + + +OBJS += \ +clock.o \ +serial.o \ +main.o + +OBJS_AS_ARGS += \ +clock.o \ +serial.o \ +main.o + +C_DEPS += \ +clock.d \ +serial.d \ +main.d + +C_DEPS_AS_ARGS += \ +clock.d \ +serial.d \ +main.d + +OUTPUT_FILE_PATH +=final_project.elf + +OUTPUT_FILE_PATH_AS_ARGS +=final_project.elf + +ADDITIONAL_DEPENDENCIES:= + +OUTPUT_FILE_DEP:= ./makedep.mk + +LIB_DEP+= + +LINKER_SCRIPT_DEP+= + + +# AVR32/GNU C Compiler +./clock.o: .././clock.c + @echo Building file: $< + @echo Invoking: AVR/GNU C Compiler : 5.4.0 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\include" -O0 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega324pb -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\gcc\dev\atmega324pb" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + +./serial.o: .././serial.c + @echo Building file: $< + @echo Invoking: AVR/GNU C Compiler : 5.4.0 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\include" -O0 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega324pb -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\gcc\dev\atmega324pb" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + +./main.o: .././main.c + @echo Building file: $< + @echo Invoking: AVR/GNU C Compiler : 5.4.0 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -x c -funsigned-char -funsigned-bitfields -DDEBUG -I"C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\include" -O0 -ffunction-sections -fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega324pb -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\gcc\dev\atmega324pb" -c -std=gnu99 -MD -MP -MF "$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -MT"$(@:%.o=%.o)" -o "$@" "$<" + @echo Finished building: $< + + + + + +# AVR32/GNU Preprocessing Assembler + + + +# AVR32/GNU Assembler + + + + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +endif + +# Add inputs and outputs from these tool invocations to the build variables + +# All Target +all: $(OUTPUT_FILE_PATH) $(ADDITIONAL_DEPENDENCIES) + +$(OUTPUT_FILE_PATH): $(OBJS) $(USER_OBJS) $(OUTPUT_FILE_DEP) $(LIB_DEP) $(LINKER_SCRIPT_DEP) + @echo Building target: $@ + @echo Invoking: AVR/GNU Linker : 5.4.0 + $(QUOTE)C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-gcc.exe$(QUOTE) -o$(OUTPUT_FILE_PATH_AS_ARGS) $(OBJS_AS_ARGS) $(USER_OBJS) $(LIBS) -Wl,-Map="final_project.map" -Wl,--start-group -Wl,-lm -Wl,--end-group -Wl,--gc-sections -mmcu=atmega324pb -B "C:\Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\gcc\dev\atmega324pb" + @echo Finished building target: $@ + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O ihex -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "final_project.elf" "final_project.hex" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -j .eeprom --set-section-flags=.eeprom=alloc,load --change-section-lma .eeprom=0 --no-change-warnings -O ihex "final_project.elf" "final_project.eep" || exit 0 + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objdump.exe" -h -S "final_project.elf" > "final_project.lss" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-objcopy.exe" -O srec -R .eeprom -R .fuse -R .lock -R .signature -R .user_signatures "final_project.elf" "final_project.srec" + "C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\bin\avr-size.exe" "final_project.elf" + + + + + + + +# Other Targets +clean: + -$(RM) $(OBJS_AS_ARGS) $(EXECUTABLES) + -$(RM) $(C_DEPS_AS_ARGS) + rm -rf "final_project.elf" "final_project.a" "final_project.hex" "final_project.lss" "final_project.eep" "final_project.map" "final_project.srec" "final_project.usersignatures" + \ No newline at end of file diff --git a/final_project/Debug/clock.d b/final_project/Debug/clock.d new file mode 100644 index 0000000..288500b --- /dev/null +++ b/final_project/Debug/clock.d @@ -0,0 +1,39 @@ +clock.d clock.o: .././clock.c .././clock.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\include/avr/iom324pb.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdbool.h + +.././clock.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\include/avr/iom324pb.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdbool.h: diff --git a/final_project/Debug/clock.o b/final_project/Debug/clock.o new file mode 100644 index 0000000000000000000000000000000000000000..3406fde3cb22757f8641d111c3e0fbb745897ced GIT binary patch literal 5312 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 literal 0 HcmV?d00001 diff --git a/final_project/Debug/final_project.hex b/final_project/Debug/final_project.hex new file mode 100644 index 0000000..4e54162 --- /dev/null +++ b/final_project/Debug/final_project.hex @@ -0,0 +1,353 @@ +:100000000C9466000C9483000C9483000C94830081 +:100010000C9483000C9483000C9483000C94830054 +:100020000C9483000C9483000C9483000C94830044 +:100030000C9483000C94F5040C9483000C948300BE +:100040000C9483000C9483000C9483000C94830024 +:100050000C9483000C9483000C9483000C94830014 +:100060000C9483000C9483000C9483000C94830004 +:100070000C9483000C9483000C9483000C948300F4 +:100080000C9483000C9483000C9483000C948300E4 +:100090000C9483000C9483000C9483000C948300D4 +:1000A0000C9483000C9483000C9483000C948300C4 +:1000B0000C9483000C9483000C9483000C948300B4 +:1000C0000C9483000C9483000C94830011241FBEB5 +:1000D000CFEFD8E0DEBFCDBF11E0A0E0B1E0ECE1B2 +:1000E000F5E102C005900D92A83DB107D9F721E0D6 +:1000F000A8EDB1E001C01D92AA3DB207E1F70E9450 +:10010000A1020C948C0A0C940000CF93DF93CDB71E +:10011000DEB780E890E0FC01108281E890E028E002 +:10012000FC01208384E890E0FC0111821082000031 +:10013000DF91CF910895CF93DF93CDB7DEB784E8F9 +:1001400090E0FC011182108288E890E029E03DE314 +:10015000FC013183208386E390E0FC018081882FBD +:1001600090E082709927892B49F086E390E026E39E +:1001700030E0F90120812260FC01208381E890E0D9 +:1001800021E830E0F90120812560FC012083000096 +:10019000DF91CF910895CF93DF93CDB7DEB786E39C +:1001A00090E0FC018081882F90E082709927892B54 +:1001B00049F086E390E026E330E0F90120812260F7 +:1001C000FC0120838FE690E028E0FC012083000002 +:1001D000DF91CF910895CF93DF93CDB7DEB786E35C +:1001E00090E0FC018081882F90E08270992721E0C7 +:1001F000892B09F420E0822FDF91CF910895CF93CE +:10020000DF9300D0CDB7DEB787E690E09A8389838D +:1002100088EC90E0FC01108289EC90E028E1FC0180 +:1002200020838AEC90E026E0FC01208389819A817A +:100230008DEC90E0FC0110828CEC90E029813A81F9 +:10024000FC01208300000F900F90DF91CF91089563 +:10025000CF93DF931F92CDB7DEB789838EEC90E00A +:100260002981FC012083000088EC90E0FC01808162 +:10027000882F90E080749927892BB1F388EC90E067 +:1002800028EC30E0F90120812064FC01208300008B +:100290000F90DF91CF910895CF93DF93CDB7DEB765 +:1002A000000088EC90E0FC0180818823D4F78EEC7C +:1002B00090E0FC018081DF91CF910895CF93DF938F +:1002C00000D000D0CDB7DEB79C838B831A82198211 +:1002D0000FC089819A812B813C81820F931FFC0181 +:1002E00080810E94280189819A8101969A8389835D +:1002F00089819A812B813C81820F931FFC0180812F +:10030000882339F700000F900F900F900F90DF9126 +:10031000CF910895CF93DF93CDB7DEB78CE290E015 +:10032000FC018081882F90E080749927892B11F43B +:1003300084E006C080E290E0FC0180818095837FAC +:10034000DF91CF910895CF93DF93CDB7DEB7639759 +:100350000FB6F894DEBF0FBECDBF898B7B8B6A8B47 +:100360001A8219828989882F90E084709927892BB5 +:1003700011F080E289838989837F8A838BE290E010 +:100380002BE230E0F90130812A812327FC01208310 +:100390008EE290E02EE230E0F901308129812327BE +:1003A000FC01208320E030E040E85EE364EA70ED89 +:1003B00084EA93E40E9425064A895B8928EE33E0AB +:1003C000429FC001439F900D529F900D1124CC017C +:1003D000A0E0B0E0BC01CD010E944008DC01CB01EF +:1003E0008B839C83AD83BE8320E030E04AE755E4F5 +:1003F0006B817C818D819E810E943809DC01CB015B +:100400008F839887A987BA8720E030E040E85FE3D0 +:100410006F81788589859A850E94930788232CF4BB +:1004200081E090E09C878B873FC020E03FEF4FE763 +:1004300057E46F81788589859A850E94330918165B +:100440004CF520E030E040E251E46B817C818D810D +:100450009E810E943809DC01CB01BC01CD010E94C4 +:100460001108DC01CB019C878B870FC080E991E0EC +:100470009E878D878D859E850197F1F79E878D8755 +:100480008B859C8501979C878B878B859C85892B89 +:1004900069F714C06F81788589859A850E94110853 +:1004A000DC01CB019C878B878B859C85988B8F8704 +:1004B0008F8598890197F1F7988B8F878BE290E071 +:1004C0002BE230E0F90130812A812327FC012083CF +:1004D0008EE290E02EE230E0F9013081298123277D +:1004E000FC012083000063960FB6F894DEBF0FBEB8 +:1004F000CDBFDF91CF910895CF93DF93CDB7DEB716 +:1005000081E290E0FC01108282E290E02FEFFC019A +:1005100020838AE290E02FEFFC0120838BE290E0C1 +:100520002FEFFC0120838DE290E020E3FC0120838B +:100530008EE290E02FEFFC0120830000DF91CF914D +:1005400008958F929F92AF92BF92CF92DF92EF92D7 +:10055000FF92CF93DF93CDB7DEB7E3970FB6F89452 +:10056000DEBF0FBECDBFF8940E9485000E947C02C2 +:100570000E94FF001A82198280E191E00E945E01D0 +:1005800007C00E944C01882F90E0C0979A8389830E +:1005900089819A810497ACF789819A811816190686 +:1005A00084F716C289819A8182309105D9F083300F +:1005B000910569F1019709F03FC083E090E09E83C7 +:1005C0008D8383E090E09C838B8385E090E0988727 +:1005D0008F8383E090E09A87898785E090E09C870D +:1005E0008B872AC084E090E09E838D8382E090E038 +:1005F0009C838B8387E090E098878F8383E090E0F3 +:100600009A8789878AE090E09C878B8715C085E070 +:1006100090E09E838D8381E090E09C838B838AE0D1 +:1006200090E098878F8385E090E09A8789878FE0B4 +:1006300090E09C878B8700001E861D86188A1F8687 +:100640001A8A198A7FC189859A85092E000CAA0BFE +:10065000BB0BBC01CD010E9442086B017C012B85C4 +:100660003C8589859A85A901481B590BCA01092E29 +:10067000000CAA0BBB0BBC01CD010E9442084B0130 +:100680005C018D819E810197092E000CAA0BBB0B8A +:10069000BC01CD010E944208DC01CB019C01AD01EF +:1006A000C501B4010E949807DC01CB014C015D013A +:1006B00089899A89092E000CAA0BBB0BBC01CD01BC +:1006C0000E944208DC01CB019C01AD01C501B401CF +:1006D0000E943809DC01CB01BC01CD010E947C07DE +:1006E000DC01CB019C01AD01C701B6010E941007DE +:1006F000DC01CB01BC01CD010E940A08DC01CB0169 +:100700009B8F8A8F1C8A1B8A37C00E94190A27E098 +:1007100030E0B9010E94A5098D8B8D89833011F4D9 +:1007200087E08D8B8D89282F30E081E090E002C03A +:10073000880F991F2A95E2F78C8F8AE00E94280182 +:100740008D89805D0E9428018AE00E9428019E0117 +:10075000215D3F4F8B899C89820F931F2C8DFC015B +:1007600020838B819C81BC018C8D0E94A3018B898D +:100770009C8901969C8B8B8B2B893C898A8D9B8DC8 +:100780002817390714F28F8198859093D9018093A7 +:10079000D8010E949B00198E188EC7C086E691E092 +:1007A0000E945E010E94EB008823C1F08091D80175 +:1007B0009091D90101979093D9018093D8010E941B +:1007C000CB000E949B002DEC3CEC4CEC5DE364EA1A +:1007D00070ED82E893E40E94250606C00E948A011B +:1007E000882F90E09F8B8E8B8E899F89892B39F47F +:1007F0008091D8019091D901181619069CF280E0D9 +:1008000090E0AAE7B3E489A39AA3ABA3BCA320E03A +:1008100030E04AE755E469A17AA18BA19CA10E942E +:100820003809DC01CB018DA39EA3AFA3B8A720E0BC +:1008300030E040E85FE36DA17EA18FA198A50E9402 +:10084000930788232CF481E090E09AA789A73FC002 +:1008500020E03FEF4FE757E46DA17EA18FA198A55F +:100860000E94330918164CF520E030E040E251E4D4 +:1008700069A17AA18BA19CA10E943809DC01CB015E +:10088000BC01CD010E941108DC01CB019AA789A708 +:100890000FC080E991E09CA78BA78BA59CA5019731 +:1008A000F1F79CA78BA789A59AA501979AA789A775 +:1008B00089A59AA5892B69F714C06DA17EA18FA186 +:1008C00098A50E941108DC01CB019AA789A789A5E8 +:1008D0009AA59EA78DA78DA59EA50197F1F79EA726 +:1008E0008DA78D859E8501969E878D879E01215DB2 +:1008F0003F4F888D998D820F931FFC018081282F97 +:1009000030E08E899F892817390741F48F859889AF +:100910000196988B8F870E94310502C00E9447057F +:10092000888D998D0196998F888F288D398D8A8D24 +:100930009B8D281739070CF431CF89899A89019644 +:100940009A8B898B29893A898D819E81281739074D +:100950000CF479CE8F859889092E000CAA0BBB0B5D +:10096000BC01CD010E9442086B017C018D859E85F2 +:10097000092E000CAA0BBB0BBC01CD010E94420842 +:10098000DC01CB019C01AD01C701B6010E949807B3 +:10099000DC01CB018D8F9E8FAF8FB8A32DEC3CEC8B +:1009A0004CE45FE36D8D7E8D8F8D98A10E9433099D +:1009B000882354F089819A8101969A83898380E8FB +:1009C00091E00E945E0104C00E940506000005C07F +:1009D00089819A8103970CF4E5CD89819A810397E7 +:1009E0000CF4C8CD0E94E505C5CD1F920F92009072 +:1009F0005F000F9211242F933F934F935F936F9358 +:100A00007F938F939F93AF93BF93EF93FF93CF9376 +:100A1000DF93CDB7DEB78091D8019091D9019C01C9 +:100A2000215031093093D9012093D80118161906A5 +:100A30001CF00E942506FDCF0000DF91CF91FF91B1 +:100A4000EF91BF91AF919F918F917F916F915F9146 +:100A50004F913F912F910F9000925F000F901F9048 +:100A60001895CF93DF93CDB7DEB78DE891E00E9464 +:100A70005E012DEC3CEC4CEC5DE360E070E08CED55 +:100A800093E40E9425060000DF91CF910895CF9353 +:100A9000DF93CDB7DEB72E970FB6F894DEBF0FBE4B +:100AA000CDBF88E991E00E945E012DEC3CEC4CE466 +:100AB0005EE36CE57FEC82E893E40E94250680E02B +:100AC00090E0A8ECB1E489839A83AB83BC8320E0F7 +:100AD00030E04AE755E469817A818B819C810E94EC +:100AE0003809DC01CB018D839E83AF83B88720E07A +:100AF00030E040E85FE36D817E818F8198850E94C0 +:100B0000930788232CF481E090E09A8789873FC07F +:100B100020E03FEF4FE757E46D817E818F8198851C +:100B20000E94330918164CF520E030E040E251E411 +:100B300069817A818B819C810E943809DC01CB011B +:100B4000BC01CD010E941108DC01CB019A87898785 +:100B50000FC080E991E09C878B878B859C850197EE +:100B6000F1F79C878B8789859A8501979A87898772 +:100B700089859A85892B69F714C06D817E818F8163 +:100B800098850E941108DC01CB019A8789878985A5 +:100B90009A859E878D878D859E850197F1F79E8723 +:100BA0008D872DEC3CEC4CE45EE36CE57FEC82E859 +:100BB00093E40E94250600002E960FB6F894DEBF3F +:100BC0000FBECDBFDF91CF910895CF93DF93CDB707 +:100BD000DEB78BEA91E00E945E0120E030E040E069 +:100BE0005FE360E070E083E893E40E94250620E084 +:100BF00030E040E05FE360E070E084EC93E40E946A +:100C000025060000DF91CF910895CF93DF93CDB7F4 +:100C1000DEB780EC91E00E945E0120E030E040E031 +:100C20005FE360E070E085EA93E40E94250620E03F +:100C300030E040E05FE360E070E083E993E40E942D +:100C400025060000DF91CF910895CF93DF93CDB7B4 +:100C5000DEB76E970FB6F894DEBF0FBECDBF6F8BB9 +:100C6000788F898F9A8F2B8F3C8F4D8F5E8F2F8936 +:100C7000388D498D5A8D60E070E080E89FE30E94D6 +:100C80009807DC01CB0120E030E040E050E4BC01FB +:100C9000CD010E949807DC01CB0120E030E04AE75B +:100CA00054E4BC01CD010E943809DC01CB018B83E7 +:100CB0009C83AD83BE832F89388D498D5A8D60E02A +:100CC00070E080E89FE30E949807DC01CB019C0163 +:100CD000AD016B8D7C8D8D8D9E8D0E949807DC0102 +:100CE000CB01BC01CD010E940A08DC01CB01988731 +:100CF0008F831A82198281C08B819C81AD81BE81D4 +:100D000089879A87AB87BC8720E030E04AE755E4C3 +:100D100069857A858B859C850E943809DC01CB0129 +:100D20008D879E87AF87B88B20E030E040E85FE397 +:100D30006D857E858F8598890E94930788232CF482 +:100D400081E090E09A8B898B3FC020E03FEF4FE736 +:100D500057E46D857E858F8598890E943309181622 +:100D60004CF520E030E040E251E469857A858B85DE +:100D70009C850E943809DC01CB01BC01CD010E9499 +:100D80001108DC01CB019A8B898B0FC080E991E0BF +:100D90009C8B8B8B8B899C890197F1F79C8B8B8B20 +:100DA00089899A8901979A8B898B89899A89892B54 +:100DB00069F714C06D857E858F8598890E9411081A +:100DC000DC01CB019A8B898B89899A899E8B8D8BCB +:100DD0008D899E890197F1F79E8B8D8B8EE290E035 +:100DE0002EE230E0F901308120E12327FC0120834D +:100DF00089819A8101969A8389838F819885298137 +:100E00003A812817390708F477CF00006E960FB69D +:100E1000F894DEBF0FBECDBFDF91CF91089550583B +:100E2000BB27AA270E9427070C94E1080E94D30839 +:100E300038F00E94DA0820F039F49F3F19F426F4C4 +:100E40000C94D0080EF4E095E7FB0C94A108E92F70 +:100E50000E94F20858F3BA176207730784079507D0 +:100E600020F079F4A6F50C942C090EF4E0950B2EE5 +:100E7000BA2FA02D0B01B90190010C01CA01A001EC +:100E80001124FF27591B99F0593F50F4503E68F147 +:100E90001A16F040A22F232F342F4427585FF3CF88 +:100EA000469537952795A795F0405395C9F77EF459 +:100EB0001F16BA0B620B730B840BBAF09150A1F0A2 +:100EC000FF0FBB1F661F771F881FC2F70EC0BA0F28 +:100ED000621F731F841F48F4879577956795B795B0 +:100EE000F7959E3F08F0B0CF9395880F08F09927AB +:100EF000EE0F9795879508950E94140990F09F37FB +:100F000048F4911116F40C942D0960E070E080E82B +:100F10009FE3089526F01B16611D711D811D0C9421 +:100F2000A7080C94C2080E947D0808F481E0089587 +:100F30000E94AC070C94E1080E94DA0858F00E9465 +:100F4000D30840F029F45F3F29F00C94A108511117 +:100F50000C942D090C94D0080E94F20868F3992390 +:100F6000B1F3552391F3951B550BBB27AA276217A5 +:100F70007307840738F09F5F5F4F220F331F441FB2 +:100F8000AA1FA9F335D00E2E3AF0E0E832D09150E6 +:100F90005040E695001CCAF72BD0FE2F29D0660FD3 +:100FA000771F881FBB1F261737074807AB07B0E816 +:100FB00009F0BB0B802DBF01FF2793585F4F3AF01C +:100FC0009E3F510578F00C94A1080C942D095F3FC9 +:100FD000E4F3983ED4F3869577956795B795F795A2 +:100FE0009F5FC9F7880F911D9695879597F908958A +:100FF000E1E0660F771F881FBB1F62177307840726 +:10100000BA0720F0621B730B840BBA0BEE1F88F734 +:10101000E09508950E9411086894B1110C942D096F +:1010200008950E94FA0888F09F5798F0B92F9927E1 +:10103000B751B0F0E1F0660F771F881F991F1AF0C3 +:10104000BA95C9F714C0B13091F00E942C09B1E0F3 +:1010500008950C942C09672F782F8827B85F39F0F2 +:10106000B93FCCF3869577956795B395D9F73EF45C +:1010700090958095709561957F4F8F4F9F4F089504 +:10108000E89409C097FB3EF4909580957095619522 +:101090007F4F8F4F9F4F9923A9F0F92F96E9BB27D8 +:1010A0009395F695879577956795B795F111F8CF54 +:1010B000FAF4BB0F11F460FF1BC06F5F7F4F8F4FBF +:1010C0009F4F16C0882311F096E911C0772321F0B5 +:1010D0009EE8872F762F05C0662371F096E8862F4D +:1010E00070E060E02AF09A95660F771F881FDAF7A4 +:1010F000880F9695879597F90895990F0008550FD1 +:10110000AA0BE0E8FEEF16161706E807F907C0F08D +:1011100012161306E407F50798F0621B730B840B95 +:10112000950B39F40A2661F0232B242B252B21F46F +:1011300008950A2609F4A140A6958FEF811D811D0F +:10114000089597F99F6780E870E060E0089588232C +:1011500071F4772321F09850872B762F07C06623F0 +:1011600011F499270DC09051862B70E060E02AF0B1 +:101170009A95660F771F881FDAF7880F96958795DF +:1011800097F908959F3F31F0915020F48795779516 +:101190006795B795880F911D9695879597F908954E +:1011A0009FEF80EC089500240A941616170618067F +:1011B0000906089500240A9412161306140605065B +:1011C0000895092E0394000C11F4882352F0BB0FEC +:1011D00040F4BF2B11F460FF04C06F5F7F4F8F4F4F +:1011E0009F4F089557FD9058440F551F59F05F3F8A +:1011F00071F04795880F97FB991F61F09F3F79F039 +:1012000087950895121613061406551FF2CF4695BA +:10121000F1DF08C0161617061806991FF1CF86953C +:1012200071056105089408950E94FA08A0F0BEE7D0 +:10123000B91788F4BB279F3860F41616B11D672FC5 +:10124000782F8827985FF7CF869577956795B11D9A +:1012500093959639C8F30895E894BB2766277727B6 +:10126000CB0197F908950E947D0808F48FEF089547 +:101270000E944B090C94E1080E94D30838F00E94A8 +:10128000DA0820F0952311F00C94A1080C94D008F2 +:1012900011240C942D090E94F20870F3959FC1F35C +:1012A000950F50E0551F629FF001729FBB27F00D14 +:1012B000B11D639FAA27F00DB11DAA1F649F662769 +:1012C000B00DA11D661F829F2227B00DA11D621FB8 +:1012D000739FB00DA11D621F839FA00D611D221F72 +:1012E000749F3327A00D611D231F849F600D211D56 +:1012F000822F762F6A2F11249F5750409AF0F1F0D9 +:1013000088234AF0EE0FFF1FBB1F661F771F881F41 +:1013100091505040A9F79E3F510580F00C94A108D0 +:101320000C942D095F3FE4F3983ED4F386957795AE +:101330006795B795F795E7959F5FC1F7FE2B880FE7 +:10134000911D9695879597F9089597FB072E16F4AA +:10135000009407D077FD09D00E94B90907FC05D099 +:101360003EF4909581959F4F0895709561957F4FBC +:101370000895AA1BBB1B51E107C0AA1FBB1FA617DC +:10138000B70710F0A61BB70B881F991F5A95A9F72E +:1013900080959095BC01CD0108958F929F92AF9258 +:1013A000BF92CF92DF92EF92FF92CF93DF93EC0147 +:1013B000688179818A819B8161157105810591051B +:1013C00021F464E279ED8BE597E02DE133EF41E024 +:1013D00050E00E94290A49015A019B01AC01A7EA89 +:1013E000B1E40E94480A6B017C01ACEEB4EFA501A8 +:1013F00094010E94560ADC01CB018C0D9D1DAE1D8F +:10140000BF1DB7FF03C00197A109B0488883998326 +:10141000AA83BB839F77DF91CF91FF90EF90DF90FE +:10142000CF90BF90AF909F908F9008950E94CD096C +:10143000089580E091E00E94CD090895A0E0B0E019 +:101440008093000190930101A0930201B0930301E6 +:101450000895052E97FB1EF400940E94400A57FD44 +:1014600007D00E945B0A07FC03D04EF40C94400A9C +:1014700050954095309521953F4F4F4F5F4F0895C0 +:1014800090958095709561957F4F8F4F9F4F0895F0 +:101490000E947D0AA59F900DB49F900DA49F800D82 +:1014A000911D11240895B7FF0C94480A0E94480A20 +:1014B000821B930B0895A1E21A2EAA1BBB1BFD01F0 +:1014C0000DC0AA1FBB1FEE1FFF1FA217B307E40723 +:1014D000F50720F0A21BB30BE40BF50B661F771F7B +:1014E000881F991F1A9469F760957095809590955B +:1014F0009B01AC01BD01CF010895A29FB001B39F34 +:10150000C001A39F700D811D1124911DB29F700D0C +:0C151000811D1124911D0895F894FFCF57 +:10151C000100000074696D657220746573740A00B3 +:10152C0053494D4F4E2047414D450A456E746572E7 +:10153C0020796F7572207374617274696E672064A0 +:10154C006966666963756C7479206C6576656C3A4E +:10155C000A312E20456173790A322E204D6F646555 +:10156C00726174650A332E2047697665206D65209B +:10157C007061696E2E000A676F7420656C656D650D +:10158C006E742C2077616974696E672E2E2E0A009A +:10159C000A6E657874206C6576656C0A000A436F78 +:1015AC007272656374210A000A496E636F72726508 +:1015BC0063742067756573732E0A000A596F752062 +:1015CC0062656174207468652067616D65210A002D +:1015DC000A596F75206C6F6F73652C2074727920AB +:0815EC00616761696E3F0A00AE +:00000001FF diff --git a/final_project/Debug/final_project.lss b/final_project/Debug/final_project.lss new file mode 100644 index 0000000..27309bb --- /dev/null +++ b/final_project/Debug/final_project.lss @@ -0,0 +1,3015 @@ + +final_project.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .data 000000d8 00800100 0000151c 000015b0 2**0 + CONTENTS, ALLOC, LOAD, DATA + 1 .text 0000151c 00000000 00000000 00000094 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .bss 00000002 008001d8 008001d8 00001688 2**0 + ALLOC + 3 .comment 00000030 00000000 00000000 00001688 2**0 + CONTENTS, READONLY + 4 .note.gnu.avr.deviceinfo 00000040 00000000 00000000 000016b8 2**2 + CONTENTS, READONLY + 5 .debug_aranges 000000e8 00000000 00000000 000016f8 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_info 00001249 00000000 00000000 000017e0 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_abbrev 00000c72 00000000 00000000 00002a29 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_line 00000b1b 00000000 00000000 0000369b 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_frame 00000328 00000000 00000000 000041b8 2**2 + CONTENTS, READONLY, DEBUGGING + 10 .debug_str 000006ed 00000000 00000000 000044e0 2**0 + CONTENTS, READONLY, DEBUGGING + 11 .debug_loc 00000611 00000000 00000000 00004bcd 2**0 + CONTENTS, READONLY, DEBUGGING + 12 .debug_ranges 000000b8 00000000 00000000 000051de 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 66 00 jmp 0xcc ; 0xcc <__ctors_end> + 4: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 8: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + c: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 10: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 14: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 18: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 1c: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 20: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 24: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 28: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 2c: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 30: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 34: 0c 94 f5 04 jmp 0x9ea ; 0x9ea <__vector_13> + 38: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 3c: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 40: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 44: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 48: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 4c: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 50: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 54: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 58: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 5c: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 60: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 64: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 68: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 6c: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 70: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 74: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 78: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 7c: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 80: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 84: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 88: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 8c: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 90: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 94: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 98: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + 9c: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + a0: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + a4: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + a8: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + ac: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + b0: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + b4: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + b8: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + bc: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + c0: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + c4: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + c8: 0c 94 83 00 jmp 0x106 ; 0x106 <__bad_interrupt> + +000000cc <__ctors_end>: + cc: 11 24 eor r1, r1 + ce: 1f be out 0x3f, r1 ; 63 + d0: cf ef ldi r28, 0xFF ; 255 + d2: d8 e0 ldi r29, 0x08 ; 8 + d4: de bf out 0x3e, r29 ; 62 + d6: cd bf out 0x3d, r28 ; 61 + +000000d8 <__do_copy_data>: + d8: 11 e0 ldi r17, 0x01 ; 1 + da: a0 e0 ldi r26, 0x00 ; 0 + dc: b1 e0 ldi r27, 0x01 ; 1 + de: ec e1 ldi r30, 0x1C ; 28 + e0: f5 e1 ldi r31, 0x15 ; 21 + e2: 02 c0 rjmp .+4 ; 0xe8 <__do_copy_data+0x10> + e4: 05 90 lpm r0, Z+ + e6: 0d 92 st X+, r0 + e8: a8 3d cpi r26, 0xD8 ; 216 + ea: b1 07 cpc r27, r17 + ec: d9 f7 brne .-10 ; 0xe4 <__do_copy_data+0xc> + +000000ee <__do_clear_bss>: + ee: 21 e0 ldi r18, 0x01 ; 1 + f0: a8 ed ldi r26, 0xD8 ; 216 + f2: b1 e0 ldi r27, 0x01 ; 1 + f4: 01 c0 rjmp .+2 ; 0xf8 <.do_clear_bss_start> + +000000f6 <.do_clear_bss_loop>: + f6: 1d 92 st X+, r1 + +000000f8 <.do_clear_bss_start>: + f8: aa 3d cpi r26, 0xDA ; 218 + fa: b2 07 cpc r27, r18 + fc: e1 f7 brne .-8 ; 0xf6 <.do_clear_bss_loop> + fe: 0e 94 a1 02 call 0x542 ; 0x542
+ 102: 0c 94 8c 0a jmp 0x1518 ; 0x1518 <_exit> + +00000106 <__bad_interrupt>: + 106: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +0000010a : + * Created: 4/3/2024 10:29:19 AM + * Author: bsw9xd + */ +#include "clock.h" + +void timer_init_ctc() { + 10a: cf 93 push r28 + 10c: df 93 push r29 + 10e: cd b7 in r28, 0x3d ; 61 + 110: de b7 in r29, 0x3e ; 62 + TCCR1A = 0x00; //WGM10 = 0, WGM11 = 0 (CTC mode when combined with WGM12 in TCCR1B) + 112: 80 e8 ldi r24, 0x80 ; 128 + 114: 90 e0 ldi r25, 0x00 ; 0 + 116: fc 01 movw r30, r24 + 118: 10 82 st Z, r1 + TCCR1B = (1 << WGM12); + 11a: 81 e8 ldi r24, 0x81 ; 129 + 11c: 90 e0 ldi r25, 0x00 ; 0 + 11e: 28 e0 ldi r18, 0x08 ; 8 + 120: fc 01 movw r30, r24 + 122: 20 83 st Z, r18 + TCNT1 = 0; // initialize timer at 0 + 124: 84 e8 ldi r24, 0x84 ; 132 + 126: 90 e0 ldi r25, 0x00 ; 0 + 128: fc 01 movw r30, r24 + 12a: 11 82 std Z+1, r1 ; 0x01 + 12c: 10 82 st Z, r1 + //TIMSK1 |= (1<: + +void start_timer() { + 136: cf 93 push r28 + 138: df 93 push r29 + 13a: cd b7 in r28, 0x3d ; 61 + 13c: de b7 in r29, 0x3e ; 62 + TCNT1 = 0; + 13e: 84 e8 ldi r24, 0x84 ; 132 + 140: 90 e0 ldi r25, 0x00 ; 0 + 142: fc 01 movw r30, r24 + 144: 11 82 std Z+1, r1 ; 0x01 + 146: 10 82 st Z, r1 + OCR1A = 0x3d09; // 1 second + 148: 88 e8 ldi r24, 0x88 ; 136 + 14a: 90 e0 ldi r25, 0x00 ; 0 + 14c: 29 e0 ldi r18, 0x09 ; 9 + 14e: 3d e3 ldi r19, 0x3D ; 61 + 150: fc 01 movw r30, r24 + 152: 31 83 std Z+1, r19 ; 0x01 + 154: 20 83 st Z, r18 + if(TIFR1 & (1 << OCF1A)) TIFR1 |= (1 << OCF1A); + 156: 86 e3 ldi r24, 0x36 ; 54 + 158: 90 e0 ldi r25, 0x00 ; 0 + 15a: fc 01 movw r30, r24 + 15c: 80 81 ld r24, Z + 15e: 88 2f mov r24, r24 + 160: 90 e0 ldi r25, 0x00 ; 0 + 162: 82 70 andi r24, 0x02 ; 2 + 164: 99 27 eor r25, r25 + 166: 89 2b or r24, r25 + 168: 49 f0 breq .+18 ; 0x17c + 16a: 86 e3 ldi r24, 0x36 ; 54 + 16c: 90 e0 ldi r25, 0x00 ; 0 + 16e: 26 e3 ldi r18, 0x36 ; 54 + 170: 30 e0 ldi r19, 0x00 ; 0 + 172: f9 01 movw r30, r18 + 174: 20 81 ld r18, Z + 176: 22 60 ori r18, 0x02 ; 2 + 178: fc 01 movw r30, r24 + 17a: 20 83 st Z, r18 + TCCR1B |= (1<: + +void stop_timer() { + 196: cf 93 push r28 + 198: df 93 push r29 + 19a: cd b7 in r28, 0x3d ; 61 + 19c: de b7 in r29, 0x3e ; 62 + if(TIFR1 & (1 << OCF1A)) TIFR1 |= (1 << OCF1A); + 19e: 86 e3 ldi r24, 0x36 ; 54 + 1a0: 90 e0 ldi r25, 0x00 ; 0 + 1a2: fc 01 movw r30, r24 + 1a4: 80 81 ld r24, Z + 1a6: 88 2f mov r24, r24 + 1a8: 90 e0 ldi r25, 0x00 ; 0 + 1aa: 82 70 andi r24, 0x02 ; 2 + 1ac: 99 27 eor r25, r25 + 1ae: 89 2b or r24, r25 + 1b0: 49 f0 breq .+18 ; 0x1c4 + 1b2: 86 e3 ldi r24, 0x36 ; 54 + 1b4: 90 e0 ldi r25, 0x00 ; 0 + 1b6: 26 e3 ldi r18, 0x36 ; 54 + 1b8: 30 e0 ldi r19, 0x00 ; 0 + 1ba: f9 01 movw r30, r18 + 1bc: 20 81 ld r18, Z + 1be: 22 60 ori r18, 0x02 ; 2 + 1c0: fc 01 movw r30, r24 + 1c2: 20 83 st Z, r18 + TIMSK1 = (1 << WGM12); + 1c4: 8f e6 ldi r24, 0x6F ; 111 + 1c6: 90 e0 ldi r25, 0x00 ; 0 + 1c8: 28 e0 ldi r18, 0x08 ; 8 + 1ca: fc 01 movw r30, r24 + 1cc: 20 83 st Z, r18 +} + 1ce: 00 00 nop + 1d0: df 91 pop r29 + 1d2: cf 91 pop r28 + 1d4: 08 95 ret + +000001d6 : + +bool timer_done() { + 1d6: cf 93 push r28 + 1d8: df 93 push r29 + 1da: cd b7 in r28, 0x3d ; 61 + 1dc: de b7 in r29, 0x3e ; 62 + return (TIFR1 & (1 << OCF1A)); + 1de: 86 e3 ldi r24, 0x36 ; 54 + 1e0: 90 e0 ldi r25, 0x00 ; 0 + 1e2: fc 01 movw r30, r24 + 1e4: 80 81 ld r24, Z + 1e6: 88 2f mov r24, r24 + 1e8: 90 e0 ldi r25, 0x00 ; 0 + 1ea: 82 70 andi r24, 0x02 ; 2 + 1ec: 99 27 eor r25, r25 + 1ee: 21 e0 ldi r18, 0x01 ; 1 + 1f0: 89 2b or r24, r25 + 1f2: 09 f4 brne .+2 ; 0x1f6 + 1f4: 20 e0 ldi r18, 0x00 ; 0 + 1f6: 82 2f mov r24, r18 + 1f8: df 91 pop r29 + 1fa: cf 91 pop r28 + 1fc: 08 95 ret + +000001fe : + 1fe: cf 93 push r28 + 200: df 93 push r29 + 202: 00 d0 rcall .+0 ; 0x204 + 204: cd b7 in r28, 0x3d ; 61 + 206: de b7 in r29, 0x3e ; 62 + 208: 87 e6 ldi r24, 0x67 ; 103 + 20a: 90 e0 ldi r25, 0x00 ; 0 + 20c: 9a 83 std Y+2, r25 ; 0x02 + 20e: 89 83 std Y+1, r24 ; 0x01 + 210: 88 ec ldi r24, 0xC8 ; 200 + 212: 90 e0 ldi r25, 0x00 ; 0 + 214: fc 01 movw r30, r24 + 216: 10 82 st Z, r1 + 218: 89 ec ldi r24, 0xC9 ; 201 + 21a: 90 e0 ldi r25, 0x00 ; 0 + 21c: 28 e1 ldi r18, 0x18 ; 24 + 21e: fc 01 movw r30, r24 + 220: 20 83 st Z, r18 + 222: 8a ec ldi r24, 0xCA ; 202 + 224: 90 e0 ldi r25, 0x00 ; 0 + 226: 26 e0 ldi r18, 0x06 ; 6 + 228: fc 01 movw r30, r24 + 22a: 20 83 st Z, r18 + 22c: 89 81 ldd r24, Y+1 ; 0x01 + 22e: 9a 81 ldd r25, Y+2 ; 0x02 + 230: 8d ec ldi r24, 0xCD ; 205 + 232: 90 e0 ldi r25, 0x00 ; 0 + 234: fc 01 movw r30, r24 + 236: 10 82 st Z, r1 + 238: 8c ec ldi r24, 0xCC ; 204 + 23a: 90 e0 ldi r25, 0x00 ; 0 + 23c: 29 81 ldd r18, Y+1 ; 0x01 + 23e: 3a 81 ldd r19, Y+2 ; 0x02 + 240: fc 01 movw r30, r24 + 242: 20 83 st Z, r18 + 244: 00 00 nop + 246: 0f 90 pop r0 + 248: 0f 90 pop r0 + 24a: df 91 pop r29 + 24c: cf 91 pop r28 + 24e: 08 95 ret + +00000250 : + 250: cf 93 push r28 + 252: df 93 push r29 + 254: 1f 92 push r1 + 256: cd b7 in r28, 0x3d ; 61 + 258: de b7 in r29, 0x3e ; 62 + 25a: 89 83 std Y+1, r24 ; 0x01 + 25c: 8e ec ldi r24, 0xCE ; 206 + 25e: 90 e0 ldi r25, 0x00 ; 0 + 260: 29 81 ldd r18, Y+1 ; 0x01 + 262: fc 01 movw r30, r24 + 264: 20 83 st Z, r18 + 266: 00 00 nop + 268: 88 ec ldi r24, 0xC8 ; 200 + 26a: 90 e0 ldi r25, 0x00 ; 0 + 26c: fc 01 movw r30, r24 + 26e: 80 81 ld r24, Z + 270: 88 2f mov r24, r24 + 272: 90 e0 ldi r25, 0x00 ; 0 + 274: 80 74 andi r24, 0x40 ; 64 + 276: 99 27 eor r25, r25 + 278: 89 2b or r24, r25 + 27a: b1 f3 breq .-20 ; 0x268 + 27c: 88 ec ldi r24, 0xC8 ; 200 + 27e: 90 e0 ldi r25, 0x00 ; 0 + 280: 28 ec ldi r18, 0xC8 ; 200 + 282: 30 e0 ldi r19, 0x00 ; 0 + 284: f9 01 movw r30, r18 + 286: 20 81 ld r18, Z + 288: 20 64 ori r18, 0x40 ; 64 + 28a: fc 01 movw r30, r24 + 28c: 20 83 st Z, r18 + 28e: 00 00 nop + 290: 0f 90 pop r0 + 292: df 91 pop r29 + 294: cf 91 pop r28 + 296: 08 95 ret + +00000298 : + 298: cf 93 push r28 + 29a: df 93 push r29 + 29c: cd b7 in r28, 0x3d ; 61 + 29e: de b7 in r29, 0x3e ; 62 + 2a0: 00 00 nop + 2a2: 88 ec ldi r24, 0xC8 ; 200 + 2a4: 90 e0 ldi r25, 0x00 ; 0 + 2a6: fc 01 movw r30, r24 + 2a8: 80 81 ld r24, Z + 2aa: 88 23 and r24, r24 + 2ac: d4 f7 brge .-12 ; 0x2a2 + 2ae: 8e ec ldi r24, 0xCE ; 206 + 2b0: 90 e0 ldi r25, 0x00 ; 0 + 2b2: fc 01 movw r30, r24 + 2b4: 80 81 ld r24, Z + 2b6: df 91 pop r29 + 2b8: cf 91 pop r28 + 2ba: 08 95 ret + +000002bc : + 2bc: cf 93 push r28 + 2be: df 93 push r29 + 2c0: 00 d0 rcall .+0 ; 0x2c2 + 2c2: 00 d0 rcall .+0 ; 0x2c4 + 2c4: cd b7 in r28, 0x3d ; 61 + 2c6: de b7 in r29, 0x3e ; 62 + 2c8: 9c 83 std Y+4, r25 ; 0x04 + 2ca: 8b 83 std Y+3, r24 ; 0x03 + 2cc: 1a 82 std Y+2, r1 ; 0x02 + 2ce: 19 82 std Y+1, r1 ; 0x01 + 2d0: 0f c0 rjmp .+30 ; 0x2f0 + 2d2: 89 81 ldd r24, Y+1 ; 0x01 + 2d4: 9a 81 ldd r25, Y+2 ; 0x02 + 2d6: 2b 81 ldd r18, Y+3 ; 0x03 + 2d8: 3c 81 ldd r19, Y+4 ; 0x04 + 2da: 82 0f add r24, r18 + 2dc: 93 1f adc r25, r19 + 2de: fc 01 movw r30, r24 + 2e0: 80 81 ld r24, Z + 2e2: 0e 94 28 01 call 0x250 ; 0x250 + 2e6: 89 81 ldd r24, Y+1 ; 0x01 + 2e8: 9a 81 ldd r25, Y+2 ; 0x02 + 2ea: 01 96 adiw r24, 0x01 ; 1 + 2ec: 9a 83 std Y+2, r25 ; 0x02 + 2ee: 89 83 std Y+1, r24 ; 0x01 + 2f0: 89 81 ldd r24, Y+1 ; 0x01 + 2f2: 9a 81 ldd r25, Y+2 ; 0x02 + 2f4: 2b 81 ldd r18, Y+3 ; 0x03 + 2f6: 3c 81 ldd r19, Y+4 ; 0x04 + 2f8: 82 0f add r24, r18 + 2fa: 93 1f adc r25, r19 + 2fc: fc 01 movw r30, r24 + 2fe: 80 81 ld r24, Z + 300: 88 23 and r24, r24 + 302: 39 f7 brne .-50 ; 0x2d2 + 304: 00 00 nop + 306: 0f 90 pop r0 + 308: 0f 90 pop r0 + 30a: 0f 90 pop r0 + 30c: 0f 90 pop r0 + 30e: df 91 pop r29 + 310: cf 91 pop r28 + 312: 08 95 ret + +00000314 : + for(;;) { + usart_txstr("timer test\n"); + start_timer(); + while(!timer_done()); + stop_timer(); + } + 314: cf 93 push r28 + 316: df 93 push r29 + 318: cd b7 in r28, 0x3d ; 61 + 31a: de b7 in r29, 0x3e ; 62 + 31c: 8c e2 ldi r24, 0x2C ; 44 + 31e: 90 e0 ldi r25, 0x00 ; 0 + 320: fc 01 movw r30, r24 + 322: 80 81 ld r24, Z + 324: 88 2f mov r24, r24 + 326: 90 e0 ldi r25, 0x00 ; 0 + 328: 80 74 andi r24, 0x40 ; 64 + 32a: 99 27 eor r25, r25 + 32c: 89 2b or r24, r25 + 32e: 11 f4 brne .+4 ; 0x334 + 330: 84 e0 ldi r24, 0x04 ; 4 + 332: 06 c0 rjmp .+12 ; 0x340 + 334: 80 e2 ldi r24, 0x20 ; 32 + 336: 90 e0 ldi r25, 0x00 ; 0 + 338: fc 01 movw r30, r24 + 33a: 80 81 ld r24, Z + 33c: 80 95 com r24 + 33e: 83 7f andi r24, 0xF3 ; 243 + 340: df 91 pop r29 + 342: cf 91 pop r28 + 344: 08 95 ret + +00000346 : + 346: cf 93 push r28 + 348: df 93 push r29 + 34a: cd b7 in r28, 0x3d ; 61 + 34c: de b7 in r29, 0x3e ; 62 + 34e: 63 97 sbiw r28, 0x13 ; 19 + 350: 0f b6 in r0, 0x3f ; 63 + 352: f8 94 cli + 354: de bf out 0x3e, r29 ; 62 + 356: 0f be out 0x3f, r0 ; 63 + 358: cd bf out 0x3d, r28 ; 61 + 35a: 89 8b std Y+17, r24 ; 0x11 + 35c: 7b 8b std Y+19, r23 ; 0x13 + 35e: 6a 8b std Y+18, r22 ; 0x12 + 360: 1a 82 std Y+2, r1 ; 0x02 + 362: 19 82 std Y+1, r1 ; 0x01 + 364: 89 89 ldd r24, Y+17 ; 0x11 + 366: 88 2f mov r24, r24 + 368: 90 e0 ldi r25, 0x00 ; 0 + 36a: 84 70 andi r24, 0x04 ; 4 + 36c: 99 27 eor r25, r25 + 36e: 89 2b or r24, r25 + 370: 11 f0 breq .+4 ; 0x376 + 372: 80 e2 ldi r24, 0x20 ; 32 + 374: 89 83 std Y+1, r24 ; 0x01 + 376: 89 89 ldd r24, Y+17 ; 0x11 + 378: 83 7f andi r24, 0xF3 ; 243 + 37a: 8a 83 std Y+2, r24 ; 0x02 + 37c: 8b e2 ldi r24, 0x2B ; 43 + 37e: 90 e0 ldi r25, 0x00 ; 0 + 380: 2b e2 ldi r18, 0x2B ; 43 + 382: 30 e0 ldi r19, 0x00 ; 0 + 384: f9 01 movw r30, r18 + 386: 30 81 ld r19, Z + 388: 2a 81 ldd r18, Y+2 ; 0x02 + 38a: 23 27 eor r18, r19 + 38c: fc 01 movw r30, r24 + 38e: 20 83 st Z, r18 + 390: 8e e2 ldi r24, 0x2E ; 46 + 392: 90 e0 ldi r25, 0x00 ; 0 + 394: 2e e2 ldi r18, 0x2E ; 46 + 396: 30 e0 ldi r19, 0x00 ; 0 + 398: f9 01 movw r30, r18 + 39a: 30 81 ld r19, Z + 39c: 29 81 ldd r18, Y+1 ; 0x01 + 39e: 23 27 eor r18, r19 + 3a0: fc 01 movw r30, r24 + 3a2: 20 83 st Z, r18 + 3a4: 20 e0 ldi r18, 0x00 ; 0 + 3a6: 30 e0 ldi r19, 0x00 ; 0 + 3a8: 40 e8 ldi r20, 0x80 ; 128 + 3aa: 5e e3 ldi r21, 0x3E ; 62 + 3ac: 64 ea ldi r22, 0xA4 ; 164 + 3ae: 70 ed ldi r23, 0xD0 ; 208 + 3b0: 84 ea ldi r24, 0xA4 ; 164 + 3b2: 93 e4 ldi r25, 0x43 ; 67 + 3b4: 0e 94 25 06 call 0xc4a ; 0xc4a + 3b8: 4a 89 ldd r20, Y+18 ; 0x12 + 3ba: 5b 89 ldd r21, Y+19 ; 0x13 + 3bc: 28 ee ldi r18, 0xE8 ; 232 + 3be: 33 e0 ldi r19, 0x03 ; 3 + 3c0: 42 9f mul r20, r18 + 3c2: c0 01 movw r24, r0 + 3c4: 43 9f mul r20, r19 + 3c6: 90 0d add r25, r0 + 3c8: 52 9f mul r21, r18 + 3ca: 90 0d add r25, r0 + 3cc: 11 24 eor r1, r1 + 3ce: cc 01 movw r24, r24 + 3d0: a0 e0 ldi r26, 0x00 ; 0 + 3d2: b0 e0 ldi r27, 0x00 ; 0 + 3d4: bc 01 movw r22, r24 + 3d6: cd 01 movw r24, r26 + 3d8: 0e 94 40 08 call 0x1080 ; 0x1080 <__floatunsisf> + 3dc: dc 01 movw r26, r24 + 3de: cb 01 movw r24, r22 + 3e0: 8b 83 std Y+3, r24 ; 0x03 + 3e2: 9c 83 std Y+4, r25 ; 0x04 + 3e4: ad 83 std Y+5, r26 ; 0x05 + 3e6: be 83 std Y+6, r27 ; 0x06 + 3e8: 20 e0 ldi r18, 0x00 ; 0 + 3ea: 30 e0 ldi r19, 0x00 ; 0 + 3ec: 4a e7 ldi r20, 0x7A ; 122 + 3ee: 55 e4 ldi r21, 0x45 ; 69 + 3f0: 6b 81 ldd r22, Y+3 ; 0x03 + 3f2: 7c 81 ldd r23, Y+4 ; 0x04 + 3f4: 8d 81 ldd r24, Y+5 ; 0x05 + 3f6: 9e 81 ldd r25, Y+6 ; 0x06 + 3f8: 0e 94 38 09 call 0x1270 ; 0x1270 <__mulsf3> + 3fc: dc 01 movw r26, r24 + 3fe: cb 01 movw r24, r22 + 400: 8f 83 std Y+7, r24 ; 0x07 + 402: 98 87 std Y+8, r25 ; 0x08 + 404: a9 87 std Y+9, r26 ; 0x09 + 406: ba 87 std Y+10, r27 ; 0x0a + 408: 20 e0 ldi r18, 0x00 ; 0 + 40a: 30 e0 ldi r19, 0x00 ; 0 + 40c: 40 e8 ldi r20, 0x80 ; 128 + 40e: 5f e3 ldi r21, 0x3F ; 63 + 410: 6f 81 ldd r22, Y+7 ; 0x07 + 412: 78 85 ldd r23, Y+8 ; 0x08 + 414: 89 85 ldd r24, Y+9 ; 0x09 + 416: 9a 85 ldd r25, Y+10 ; 0x0a + 418: 0e 94 93 07 call 0xf26 ; 0xf26 <__cmpsf2> + 41c: 88 23 and r24, r24 + 41e: 2c f4 brge .+10 ; 0x42a <__EEPROM_REGION_LENGTH__+0x2a> + 420: 81 e0 ldi r24, 0x01 ; 1 + 422: 90 e0 ldi r25, 0x00 ; 0 + 424: 9c 87 std Y+12, r25 ; 0x0c + 426: 8b 87 std Y+11, r24 ; 0x0b + 428: 3f c0 rjmp .+126 ; 0x4a8 <__EEPROM_REGION_LENGTH__+0xa8> + 42a: 20 e0 ldi r18, 0x00 ; 0 + 42c: 3f ef ldi r19, 0xFF ; 255 + 42e: 4f e7 ldi r20, 0x7F ; 127 + 430: 57 e4 ldi r21, 0x47 ; 71 + 432: 6f 81 ldd r22, Y+7 ; 0x07 + 434: 78 85 ldd r23, Y+8 ; 0x08 + 436: 89 85 ldd r24, Y+9 ; 0x09 + 438: 9a 85 ldd r25, Y+10 ; 0x0a + 43a: 0e 94 33 09 call 0x1266 ; 0x1266 <__gesf2> + 43e: 18 16 cp r1, r24 + 440: 4c f5 brge .+82 ; 0x494 <__EEPROM_REGION_LENGTH__+0x94> + 442: 20 e0 ldi r18, 0x00 ; 0 + 444: 30 e0 ldi r19, 0x00 ; 0 + 446: 40 e2 ldi r20, 0x20 ; 32 + 448: 51 e4 ldi r21, 0x41 ; 65 + 44a: 6b 81 ldd r22, Y+3 ; 0x03 + 44c: 7c 81 ldd r23, Y+4 ; 0x04 + 44e: 8d 81 ldd r24, Y+5 ; 0x05 + 450: 9e 81 ldd r25, Y+6 ; 0x06 + 452: 0e 94 38 09 call 0x1270 ; 0x1270 <__mulsf3> + 456: dc 01 movw r26, r24 + 458: cb 01 movw r24, r22 + 45a: bc 01 movw r22, r24 + 45c: cd 01 movw r24, r26 + 45e: 0e 94 11 08 call 0x1022 ; 0x1022 <__fixunssfsi> + 462: dc 01 movw r26, r24 + 464: cb 01 movw r24, r22 + 466: 9c 87 std Y+12, r25 ; 0x0c + 468: 8b 87 std Y+11, r24 ; 0x0b + 46a: 0f c0 rjmp .+30 ; 0x48a <__EEPROM_REGION_LENGTH__+0x8a> + 46c: 80 e9 ldi r24, 0x90 ; 144 + 46e: 91 e0 ldi r25, 0x01 ; 1 + 470: 9e 87 std Y+14, r25 ; 0x0e + 472: 8d 87 std Y+13, r24 ; 0x0d + 474: 8d 85 ldd r24, Y+13 ; 0x0d + 476: 9e 85 ldd r25, Y+14 ; 0x0e + 478: 01 97 sbiw r24, 0x01 ; 1 + 47a: f1 f7 brne .-4 ; 0x478 <__EEPROM_REGION_LENGTH__+0x78> + 47c: 9e 87 std Y+14, r25 ; 0x0e + 47e: 8d 87 std Y+13, r24 ; 0x0d + 480: 8b 85 ldd r24, Y+11 ; 0x0b + 482: 9c 85 ldd r25, Y+12 ; 0x0c + 484: 01 97 sbiw r24, 0x01 ; 1 + 486: 9c 87 std Y+12, r25 ; 0x0c + 488: 8b 87 std Y+11, r24 ; 0x0b + 48a: 8b 85 ldd r24, Y+11 ; 0x0b + 48c: 9c 85 ldd r25, Y+12 ; 0x0c + 48e: 89 2b or r24, r25 + 490: 69 f7 brne .-38 ; 0x46c <__EEPROM_REGION_LENGTH__+0x6c> + 492: 14 c0 rjmp .+40 ; 0x4bc <__EEPROM_REGION_LENGTH__+0xbc> + 494: 6f 81 ldd r22, Y+7 ; 0x07 + 496: 78 85 ldd r23, Y+8 ; 0x08 + 498: 89 85 ldd r24, Y+9 ; 0x09 + 49a: 9a 85 ldd r25, Y+10 ; 0x0a + 49c: 0e 94 11 08 call 0x1022 ; 0x1022 <__fixunssfsi> + 4a0: dc 01 movw r26, r24 + 4a2: cb 01 movw r24, r22 + 4a4: 9c 87 std Y+12, r25 ; 0x0c + 4a6: 8b 87 std Y+11, r24 ; 0x0b + 4a8: 8b 85 ldd r24, Y+11 ; 0x0b + 4aa: 9c 85 ldd r25, Y+12 ; 0x0c + 4ac: 98 8b std Y+16, r25 ; 0x10 + 4ae: 8f 87 std Y+15, r24 ; 0x0f + 4b0: 8f 85 ldd r24, Y+15 ; 0x0f + 4b2: 98 89 ldd r25, Y+16 ; 0x10 + 4b4: 01 97 sbiw r24, 0x01 ; 1 + 4b6: f1 f7 brne .-4 ; 0x4b4 <__EEPROM_REGION_LENGTH__+0xb4> + 4b8: 98 8b std Y+16, r25 ; 0x10 + 4ba: 8f 87 std Y+15, r24 ; 0x0f + 4bc: 8b e2 ldi r24, 0x2B ; 43 + 4be: 90 e0 ldi r25, 0x00 ; 0 + 4c0: 2b e2 ldi r18, 0x2B ; 43 + 4c2: 30 e0 ldi r19, 0x00 ; 0 + 4c4: f9 01 movw r30, r18 + 4c6: 30 81 ld r19, Z + 4c8: 2a 81 ldd r18, Y+2 ; 0x02 + 4ca: 23 27 eor r18, r19 + 4cc: fc 01 movw r30, r24 + 4ce: 20 83 st Z, r18 + 4d0: 8e e2 ldi r24, 0x2E ; 46 + 4d2: 90 e0 ldi r25, 0x00 ; 0 + 4d4: 2e e2 ldi r18, 0x2E ; 46 + 4d6: 30 e0 ldi r19, 0x00 ; 0 + 4d8: f9 01 movw r30, r18 + 4da: 30 81 ld r19, Z + 4dc: 29 81 ldd r18, Y+1 ; 0x01 + 4de: 23 27 eor r18, r19 + 4e0: fc 01 movw r30, r24 + 4e2: 20 83 st Z, r18 + 4e4: 00 00 nop + 4e6: 63 96 adiw r28, 0x13 ; 19 + 4e8: 0f b6 in r0, 0x3f ; 63 + 4ea: f8 94 cli + 4ec: de bf out 0x3e, r29 ; 62 + 4ee: 0f be out 0x3f, r0 ; 63 + 4f0: cd bf out 0x3d, r28 ; 61 + 4f2: df 91 pop r29 + 4f4: cf 91 pop r28 + 4f6: 08 95 ret + +000004f8 : + 4f8: cf 93 push r28 + 4fa: df 93 push r29 + 4fc: cd b7 in r28, 0x3d ; 61 + 4fe: de b7 in r29, 0x3e ; 62 + 500: 81 e2 ldi r24, 0x21 ; 33 + 502: 90 e0 ldi r25, 0x00 ; 0 + 504: fc 01 movw r30, r24 + 506: 10 82 st Z, r1 + 508: 82 e2 ldi r24, 0x22 ; 34 + 50a: 90 e0 ldi r25, 0x00 ; 0 + 50c: 2f ef ldi r18, 0xFF ; 255 + 50e: fc 01 movw r30, r24 + 510: 20 83 st Z, r18 + 512: 8a e2 ldi r24, 0x2A ; 42 + 514: 90 e0 ldi r25, 0x00 ; 0 + 516: 2f ef ldi r18, 0xFF ; 255 + 518: fc 01 movw r30, r24 + 51a: 20 83 st Z, r18 + 51c: 8b e2 ldi r24, 0x2B ; 43 + 51e: 90 e0 ldi r25, 0x00 ; 0 + 520: 2f ef ldi r18, 0xFF ; 255 + 522: fc 01 movw r30, r24 + 524: 20 83 st Z, r18 + 526: 8d e2 ldi r24, 0x2D ; 45 + 528: 90 e0 ldi r25, 0x00 ; 0 + 52a: 20 e3 ldi r18, 0x30 ; 48 + 52c: fc 01 movw r30, r24 + 52e: 20 83 st Z, r18 + 530: 8e e2 ldi r24, 0x2E ; 46 + 532: 90 e0 ldi r25, 0x00 ; 0 + 534: 2f ef ldi r18, 0xFF ; 255 + 536: fc 01 movw r30, r24 + 538: 20 83 st Z, r18 + 53a: 00 00 nop + 53c: df 91 pop r29 + 53e: cf 91 pop r28 + 540: 08 95 ret + +00000542
: +} + +int main(void) { + 542: 8f 92 push r8 + 544: 9f 92 push r9 + 546: af 92 push r10 + 548: bf 92 push r11 + 54a: cf 92 push r12 + 54c: df 92 push r13 + 54e: ef 92 push r14 + 550: ff 92 push r15 + 552: cf 93 push r28 + 554: df 93 push r29 + 556: cd b7 in r28, 0x3d ; 61 + 558: de b7 in r29, 0x3e ; 62 + 55a: e3 97 sbiw r28, 0x33 ; 51 + 55c: 0f b6 in r0, 0x3f ; 63 + 55e: f8 94 cli + 560: de bf out 0x3e, r29 ; 62 + 562: 0f be out 0x3f, r0 ; 63 + 564: cd bf out 0x3d, r28 ; 61 + cli(); + 566: f8 94 cli + timer_init_ctc(); + 568: 0e 94 85 00 call 0x10a ; 0x10a + init_io(); + 56c: 0e 94 7c 02 call 0x4f8 ; 0x4f8 + usart_init(); + 570: 0e 94 ff 00 call 0x1fe ; 0x1fe + + + while(1) { + int level = 0; + 574: 1a 82 std Y+2, r1 ; 0x02 + 576: 19 82 std Y+1, r1 ; 0x01 + + //get level + usart_txstr( + 578: 80 e1 ldi r24, 0x10 ; 16 + 57a: 91 e0 ldi r25, 0x01 ; 1 + 57c: 0e 94 5e 01 call 0x2bc ; 0x2bc + "Enter your starting difficulty level:\n" + "1. Easy\n" + "2. Moderate\n" + "3. Give me pain."); + + while((level > 3) || (level < 1)) level = (int)(usart_rxt_blocking() - '0'); + 580: 07 c0 rjmp .+14 ; 0x590 + 582: 0e 94 4c 01 call 0x298 ; 0x298 + 586: 88 2f mov r24, r24 + 588: 90 e0 ldi r25, 0x00 ; 0 + 58a: c0 97 sbiw r24, 0x30 ; 48 + 58c: 9a 83 std Y+2, r25 ; 0x02 + 58e: 89 83 std Y+1, r24 ; 0x01 + 590: 89 81 ldd r24, Y+1 ; 0x01 + 592: 9a 81 ldd r25, Y+2 ; 0x02 + 594: 04 97 sbiw r24, 0x04 ; 4 + 596: ac f7 brge .-22 ; 0x582 + 598: 89 81 ldd r24, Y+1 ; 0x01 + 59a: 9a 81 ldd r25, Y+2 ; 0x02 + 59c: 18 16 cp r1, r24 + 59e: 19 06 cpc r1, r25 + 5a0: 84 f7 brge .-32 ; 0x582 + + + //main simon game + while(level < 3) { + 5a2: 16 c2 rjmp .+1068 ; 0x9d0 <__stack+0xd1> + int elements_max; + double score; + uint8_t element_list[5]; // TODO + + + switch(level) { + 5a4: 89 81 ldd r24, Y+1 ; 0x01 + 5a6: 9a 81 ldd r25, Y+2 ; 0x02 + 5a8: 82 30 cpi r24, 0x02 ; 2 + 5aa: 91 05 cpc r25, r1 + 5ac: d9 f0 breq .+54 ; 0x5e4 + 5ae: 83 30 cpi r24, 0x03 ; 3 + 5b0: 91 05 cpc r25, r1 + 5b2: 69 f1 breq .+90 ; 0x60e + 5b4: 01 97 sbiw r24, 0x01 ; 1 + 5b6: 09 f0 breq .+2 ; 0x5ba + 5b8: 3f c0 rjmp .+126 ; 0x638 + case 1: + sets = 3; + 5ba: 83 e0 ldi r24, 0x03 ; 3 + 5bc: 90 e0 ldi r25, 0x00 ; 0 + 5be: 9e 83 std Y+6, r25 ; 0x06 + 5c0: 8d 83 std Y+5, r24 ; 0x05 + display_time = 3; + 5c2: 83 e0 ldi r24, 0x03 ; 3 + 5c4: 90 e0 ldi r25, 0x00 ; 0 + 5c6: 9c 83 std Y+4, r25 ; 0x04 + 5c8: 8b 83 std Y+3, r24 ; 0x03 + response_time = 5; + 5ca: 85 e0 ldi r24, 0x05 ; 5 + 5cc: 90 e0 ldi r25, 0x00 ; 0 + 5ce: 98 87 std Y+8, r25 ; 0x08 + 5d0: 8f 83 std Y+7, r24 ; 0x07 + elements_min = 3; + 5d2: 83 e0 ldi r24, 0x03 ; 3 + 5d4: 90 e0 ldi r25, 0x00 ; 0 + 5d6: 9a 87 std Y+10, r25 ; 0x0a + 5d8: 89 87 std Y+9, r24 ; 0x09 + elements_max = 5; + 5da: 85 e0 ldi r24, 0x05 ; 5 + 5dc: 90 e0 ldi r25, 0x00 ; 0 + 5de: 9c 87 std Y+12, r25 ; 0x0c + 5e0: 8b 87 std Y+11, r24 ; 0x0b + break; + 5e2: 2a c0 rjmp .+84 ; 0x638 + case 2: + sets = 4; + 5e4: 84 e0 ldi r24, 0x04 ; 4 + 5e6: 90 e0 ldi r25, 0x00 ; 0 + 5e8: 9e 83 std Y+6, r25 ; 0x06 + 5ea: 8d 83 std Y+5, r24 ; 0x05 + display_time = 2; + 5ec: 82 e0 ldi r24, 0x02 ; 2 + 5ee: 90 e0 ldi r25, 0x00 ; 0 + 5f0: 9c 83 std Y+4, r25 ; 0x04 + 5f2: 8b 83 std Y+3, r24 ; 0x03 + response_time = 7; + 5f4: 87 e0 ldi r24, 0x07 ; 7 + 5f6: 90 e0 ldi r25, 0x00 ; 0 + 5f8: 98 87 std Y+8, r25 ; 0x08 + 5fa: 8f 83 std Y+7, r24 ; 0x07 + elements_min = 3; + 5fc: 83 e0 ldi r24, 0x03 ; 3 + 5fe: 90 e0 ldi r25, 0x00 ; 0 + 600: 9a 87 std Y+10, r25 ; 0x0a + 602: 89 87 std Y+9, r24 ; 0x09 + elements_max = 10; + 604: 8a e0 ldi r24, 0x0A ; 10 + 606: 90 e0 ldi r25, 0x00 ; 0 + 608: 9c 87 std Y+12, r25 ; 0x0c + 60a: 8b 87 std Y+11, r24 ; 0x0b + break; + 60c: 15 c0 rjmp .+42 ; 0x638 + case 3: + sets = 5; + 60e: 85 e0 ldi r24, 0x05 ; 5 + 610: 90 e0 ldi r25, 0x00 ; 0 + 612: 9e 83 std Y+6, r25 ; 0x06 + 614: 8d 83 std Y+5, r24 ; 0x05 + display_time = 1; + 616: 81 e0 ldi r24, 0x01 ; 1 + 618: 90 e0 ldi r25, 0x00 ; 0 + 61a: 9c 83 std Y+4, r25 ; 0x04 + 61c: 8b 83 std Y+3, r24 ; 0x03 + response_time = 10; + 61e: 8a e0 ldi r24, 0x0A ; 10 + 620: 90 e0 ldi r25, 0x00 ; 0 + 622: 98 87 std Y+8, r25 ; 0x08 + 624: 8f 83 std Y+7, r24 ; 0x07 + elements_min = 5; + 626: 85 e0 ldi r24, 0x05 ; 5 + 628: 90 e0 ldi r25, 0x00 ; 0 + 62a: 9a 87 std Y+10, r25 ; 0x0a + 62c: 89 87 std Y+9, r24 ; 0x09 + elements_max = 15; + 62e: 8f e0 ldi r24, 0x0F ; 15 + 630: 90 e0 ldi r25, 0x00 ; 0 + 632: 9c 87 std Y+12, r25 ; 0x0c + 634: 8b 87 std Y+11, r24 ; 0x0b + break; + 636: 00 00 nop + + + /************************************************************************/ + + //main level + int max_score = 0; + 638: 1e 86 std Y+14, r1 ; 0x0e + 63a: 1d 86 std Y+13, r1 ; 0x0d + int current_score = 0; + 63c: 18 8a std Y+16, r1 ; 0x10 + 63e: 1f 86 std Y+15, r1 ; 0x0f + for(int set = 0; set < sets; set++) { + 640: 1a 8a std Y+18, r1 ; 0x12 + 642: 19 8a std Y+17, r1 ; 0x11 + 644: 7f c1 rjmp .+766 ; 0x944 <__stack+0x45> + int elements = elements_min + ceil(((elements_max - elements_min) / (float)(sets - 1)) * set); + 646: 89 85 ldd r24, Y+9 ; 0x09 + 648: 9a 85 ldd r25, Y+10 ; 0x0a + 64a: 09 2e mov r0, r25 + 64c: 00 0c add r0, r0 + 64e: aa 0b sbc r26, r26 + 650: bb 0b sbc r27, r27 + 652: bc 01 movw r22, r24 + 654: cd 01 movw r24, r26 + 656: 0e 94 42 08 call 0x1084 ; 0x1084 <__floatsisf> + 65a: 6b 01 movw r12, r22 + 65c: 7c 01 movw r14, r24 + 65e: 2b 85 ldd r18, Y+11 ; 0x0b + 660: 3c 85 ldd r19, Y+12 ; 0x0c + 662: 89 85 ldd r24, Y+9 ; 0x09 + 664: 9a 85 ldd r25, Y+10 ; 0x0a + 666: a9 01 movw r20, r18 + 668: 48 1b sub r20, r24 + 66a: 59 0b sbc r21, r25 + 66c: ca 01 movw r24, r20 + 66e: 09 2e mov r0, r25 + 670: 00 0c add r0, r0 + 672: aa 0b sbc r26, r26 + 674: bb 0b sbc r27, r27 + 676: bc 01 movw r22, r24 + 678: cd 01 movw r24, r26 + 67a: 0e 94 42 08 call 0x1084 ; 0x1084 <__floatsisf> + 67e: 4b 01 movw r8, r22 + 680: 5c 01 movw r10, r24 + 682: 8d 81 ldd r24, Y+5 ; 0x05 + 684: 9e 81 ldd r25, Y+6 ; 0x06 + 686: 01 97 sbiw r24, 0x01 ; 1 + 688: 09 2e mov r0, r25 + 68a: 00 0c add r0, r0 + 68c: aa 0b sbc r26, r26 + 68e: bb 0b sbc r27, r27 + 690: bc 01 movw r22, r24 + 692: cd 01 movw r24, r26 + 694: 0e 94 42 08 call 0x1084 ; 0x1084 <__floatsisf> + 698: dc 01 movw r26, r24 + 69a: cb 01 movw r24, r22 + 69c: 9c 01 movw r18, r24 + 69e: ad 01 movw r20, r26 + 6a0: c5 01 movw r24, r10 + 6a2: b4 01 movw r22, r8 + 6a4: 0e 94 98 07 call 0xf30 ; 0xf30 <__divsf3> + 6a8: dc 01 movw r26, r24 + 6aa: cb 01 movw r24, r22 + 6ac: 4c 01 movw r8, r24 + 6ae: 5d 01 movw r10, r26 + 6b0: 89 89 ldd r24, Y+17 ; 0x11 + 6b2: 9a 89 ldd r25, Y+18 ; 0x12 + 6b4: 09 2e mov r0, r25 + 6b6: 00 0c add r0, r0 + 6b8: aa 0b sbc r26, r26 + 6ba: bb 0b sbc r27, r27 + 6bc: bc 01 movw r22, r24 + 6be: cd 01 movw r24, r26 + 6c0: 0e 94 42 08 call 0x1084 ; 0x1084 <__floatsisf> + 6c4: dc 01 movw r26, r24 + 6c6: cb 01 movw r24, r22 + 6c8: 9c 01 movw r18, r24 + 6ca: ad 01 movw r20, r26 + 6cc: c5 01 movw r24, r10 + 6ce: b4 01 movw r22, r8 + 6d0: 0e 94 38 09 call 0x1270 ; 0x1270 <__mulsf3> + 6d4: dc 01 movw r26, r24 + 6d6: cb 01 movw r24, r22 + 6d8: bc 01 movw r22, r24 + 6da: cd 01 movw r24, r26 + 6dc: 0e 94 7c 07 call 0xef8 ; 0xef8 + 6e0: dc 01 movw r26, r24 + 6e2: cb 01 movw r24, r22 + 6e4: 9c 01 movw r18, r24 + 6e6: ad 01 movw r20, r26 + 6e8: c7 01 movw r24, r14 + 6ea: b6 01 movw r22, r12 + 6ec: 0e 94 10 07 call 0xe20 ; 0xe20 <__addsf3> + 6f0: dc 01 movw r26, r24 + 6f2: cb 01 movw r24, r22 + 6f4: bc 01 movw r22, r24 + 6f6: cd 01 movw r24, r26 + 6f8: 0e 94 0a 08 call 0x1014 ; 0x1014 <__fixsfsi> + 6fc: dc 01 movw r26, r24 + 6fe: cb 01 movw r24, r22 + 700: 9b 8f std Y+27, r25 ; 0x1b + 702: 8a 8f std Y+26, r24 ; 0x1a + //generate, display elements + for(int element = 0; element < elements; element++) { + 704: 1c 8a std Y+20, r1 ; 0x14 + 706: 1b 8a std Y+19, r1 ; 0x13 + 708: 37 c0 rjmp .+110 ; 0x778 + uint8_t element_bit = (rand() % ELEMENT_COUNT); + 70a: 0e 94 19 0a call 0x1432 ; 0x1432 + 70e: 27 e0 ldi r18, 0x07 ; 7 + 710: 30 e0 ldi r19, 0x00 ; 0 + 712: b9 01 movw r22, r18 + 714: 0e 94 a5 09 call 0x134a ; 0x134a <__divmodhi4> + 718: 8d 8b std Y+21, r24 ; 0x15 + if(element_bit == 3) element_bit = 7; + 71a: 8d 89 ldd r24, Y+21 ; 0x15 + 71c: 83 30 cpi r24, 0x03 ; 3 + 71e: 11 f4 brne .+4 ; 0x724 + 720: 87 e0 ldi r24, 0x07 ; 7 + 722: 8d 8b std Y+21, r24 ; 0x15 + uint8_t this_element = 1 << element_bit; + 724: 8d 89 ldd r24, Y+21 ; 0x15 + 726: 28 2f mov r18, r24 + 728: 30 e0 ldi r19, 0x00 ; 0 + 72a: 81 e0 ldi r24, 0x01 ; 1 + 72c: 90 e0 ldi r25, 0x00 ; 0 + 72e: 02 c0 rjmp .+4 ; 0x734 + 730: 88 0f add r24, r24 + 732: 99 1f adc r25, r25 + 734: 2a 95 dec r18 + 736: e2 f7 brpl .-8 ; 0x730 + 738: 8c 8f std Y+28, r24 ; 0x1c + usart_txt('\n'); + 73a: 8a e0 ldi r24, 0x0A ; 10 + 73c: 0e 94 28 01 call 0x250 ; 0x250 + usart_txt(element_bit + '0'); + 740: 8d 89 ldd r24, Y+21 ; 0x15 + 742: 80 5d subi r24, 0xD0 ; 208 + 744: 0e 94 28 01 call 0x250 ; 0x250 + usart_txt('\n'); + 748: 8a e0 ldi r24, 0x0A ; 10 + 74a: 0e 94 28 01 call 0x250 ; 0x250 + element_list[element] = this_element; // could optimize + 74e: 9e 01 movw r18, r28 + 750: 21 5d subi r18, 0xD1 ; 209 + 752: 3f 4f sbci r19, 0xFF ; 255 + 754: 8b 89 ldd r24, Y+19 ; 0x13 + 756: 9c 89 ldd r25, Y+20 ; 0x14 + 758: 82 0f add r24, r18 + 75a: 93 1f adc r25, r19 + 75c: 2c 8d ldd r18, Y+28 ; 0x1c + 75e: fc 01 movw r30, r24 + 760: 20 83 st Z, r18 + display_element(this_element, display_time); + 762: 8b 81 ldd r24, Y+3 ; 0x03 + 764: 9c 81 ldd r25, Y+4 ; 0x04 + 766: bc 01 movw r22, r24 + 768: 8c 8d ldd r24, Y+28 ; 0x1c + 76a: 0e 94 a3 01 call 0x346 ; 0x346 + int max_score = 0; + int current_score = 0; + for(int set = 0; set < sets; set++) { + int elements = elements_min + ceil(((elements_max - elements_min) / (float)(sets - 1)) * set); + //generate, display elements + for(int element = 0; element < elements; element++) { + 76e: 8b 89 ldd r24, Y+19 ; 0x13 + 770: 9c 89 ldd r25, Y+20 ; 0x14 + 772: 01 96 adiw r24, 0x01 ; 1 + 774: 9c 8b std Y+20, r25 ; 0x14 + 776: 8b 8b std Y+19, r24 ; 0x13 + 778: 2b 89 ldd r18, Y+19 ; 0x13 + 77a: 3c 89 ldd r19, Y+20 ; 0x14 + 77c: 8a 8d ldd r24, Y+26 ; 0x1a + 77e: 9b 8d ldd r25, Y+27 ; 0x1b + 780: 28 17 cp r18, r24 + 782: 39 07 cpc r19, r25 + 784: 14 f2 brlt .-124 ; 0x70a + element_list[element] = this_element; // could optimize + display_element(this_element, display_time); + + } + //get elements + seconds_remaining = response_time; + 786: 8f 81 ldd r24, Y+7 ; 0x07 + 788: 98 85 ldd r25, Y+8 ; 0x08 + 78a: 90 93 d9 01 sts 0x01D9, r25 ; 0x8001d9 <__data_end+0x1> + 78e: 80 93 d8 01 sts 0x01D8, r24 ; 0x8001d8 <__data_end> + start_timer(); + 792: 0e 94 9b 00 call 0x136 ; 0x136 + uint16_t guess; + for(int element = 0; element < elements; element++) { + 796: 19 8e std Y+25, r1 ; 0x19 + 798: 18 8e std Y+24, r1 ; 0x18 + 79a: c7 c0 rjmp .+398 ; 0x92a <__stack+0x2b> + usart_txstr("\ngot element, waiting...\n"); + 79c: 86 e6 ldi r24, 0x66 ; 102 + 79e: 91 e0 ldi r25, 0x01 ; 1 + 7a0: 0e 94 5e 01 call 0x2bc ; 0x2bc + do { + if(timer_done()) { + 7a4: 0e 94 eb 00 call 0x1d6 ; 0x1d6 + 7a8: 88 23 and r24, r24 + 7aa: c1 f0 breq .+48 ; 0x7dc + seconds_remaining--; + 7ac: 80 91 d8 01 lds r24, 0x01D8 ; 0x8001d8 <__data_end> + 7b0: 90 91 d9 01 lds r25, 0x01D9 ; 0x8001d9 <__data_end+0x1> + 7b4: 01 97 sbiw r24, 0x01 ; 1 + 7b6: 90 93 d9 01 sts 0x01D9, r25 ; 0x8001d9 <__data_end+0x1> + 7ba: 80 93 d8 01 sts 0x01D8, r24 ; 0x8001d8 <__data_end> + stop_timer(); //TODO only need one function + 7be: 0e 94 cb 00 call 0x196 ; 0x196 + start_timer(); + 7c2: 0e 94 9b 00 call 0x136 ; 0x136 + beep(261.63, .1); + 7c6: 2d ec ldi r18, 0xCD ; 205 + 7c8: 3c ec ldi r19, 0xCC ; 204 + 7ca: 4c ec ldi r20, 0xCC ; 204 + 7cc: 5d e3 ldi r21, 0x3D ; 61 + 7ce: 64 ea ldi r22, 0xA4 ; 164 + 7d0: 70 ed ldi r23, 0xD0 ; 208 + 7d2: 82 e8 ldi r24, 0x82 ; 130 + 7d4: 93 e4 ldi r25, 0x43 ; 67 + 7d6: 0e 94 25 06 call 0xc4a ; 0xc4a + 7da: 06 c0 rjmp .+12 ; 0x7e8 + } + else { guess = get_button(); } + 7dc: 0e 94 8a 01 call 0x314 ; 0x314 + 7e0: 88 2f mov r24, r24 + 7e2: 90 e0 ldi r25, 0x00 ; 0 + 7e4: 9f 8b std Y+23, r25 ; 0x17 + 7e6: 8e 8b std Y+22, r24 ; 0x16 + } while((!guess) && (seconds_remaining > 0)); + 7e8: 8e 89 ldd r24, Y+22 ; 0x16 + 7ea: 9f 89 ldd r25, Y+23 ; 0x17 + 7ec: 89 2b or r24, r25 + 7ee: 39 f4 brne .+14 ; 0x7fe + 7f0: 80 91 d8 01 lds r24, 0x01D8 ; 0x8001d8 <__data_end> + 7f4: 90 91 d9 01 lds r25, 0x01D9 ; 0x8001d9 <__data_end+0x1> + 7f8: 18 16 cp r1, r24 + 7fa: 19 06 cpc r1, r25 + 7fc: 9c f2 brlt .-90 ; 0x7a4 + 7fe: 80 e0 ldi r24, 0x00 ; 0 + 800: 90 e0 ldi r25, 0x00 ; 0 + 802: aa e7 ldi r26, 0x7A ; 122 + 804: b3 e4 ldi r27, 0x43 ; 67 + 806: 89 a3 std Y+33, r24 ; 0x21 + 808: 9a a3 std Y+34, r25 ; 0x22 + 80a: ab a3 std Y+35, r26 ; 0x23 + 80c: bc a3 std Y+36, r27 ; 0x24 + + __builtin_avr_delay_cycles(__ticks_dc); + +#else + uint16_t __ticks; + __tmp = ((F_CPU) / 4e3) * __ms; + 80e: 20 e0 ldi r18, 0x00 ; 0 + 810: 30 e0 ldi r19, 0x00 ; 0 + 812: 4a e7 ldi r20, 0x7A ; 122 + 814: 55 e4 ldi r21, 0x45 ; 69 + 816: 69 a1 ldd r22, Y+33 ; 0x21 + 818: 7a a1 ldd r23, Y+34 ; 0x22 + 81a: 8b a1 ldd r24, Y+35 ; 0x23 + 81c: 9c a1 ldd r25, Y+36 ; 0x24 + 81e: 0e 94 38 09 call 0x1270 ; 0x1270 <__mulsf3> + 822: dc 01 movw r26, r24 + 824: cb 01 movw r24, r22 + 826: 8d a3 std Y+37, r24 ; 0x25 + 828: 9e a3 std Y+38, r25 ; 0x26 + 82a: af a3 std Y+39, r26 ; 0x27 + 82c: b8 a7 std Y+40, r27 ; 0x28 + if (__tmp < 1.0) + 82e: 20 e0 ldi r18, 0x00 ; 0 + 830: 30 e0 ldi r19, 0x00 ; 0 + 832: 40 e8 ldi r20, 0x80 ; 128 + 834: 5f e3 ldi r21, 0x3F ; 63 + 836: 6d a1 ldd r22, Y+37 ; 0x25 + 838: 7e a1 ldd r23, Y+38 ; 0x26 + 83a: 8f a1 ldd r24, Y+39 ; 0x27 + 83c: 98 a5 ldd r25, Y+40 ; 0x28 + 83e: 0e 94 93 07 call 0xf26 ; 0xf26 <__cmpsf2> + 842: 88 23 and r24, r24 + 844: 2c f4 brge .+10 ; 0x850 <__DATA_REGION_LENGTH__+0x50> + __ticks = 1; + 846: 81 e0 ldi r24, 0x01 ; 1 + 848: 90 e0 ldi r25, 0x00 ; 0 + 84a: 9a a7 std Y+42, r25 ; 0x2a + 84c: 89 a7 std Y+41, r24 ; 0x29 + 84e: 3f c0 rjmp .+126 ; 0x8ce <__DATA_REGION_LENGTH__+0xce> + else if (__tmp > 65535) + 850: 20 e0 ldi r18, 0x00 ; 0 + 852: 3f ef ldi r19, 0xFF ; 255 + 854: 4f e7 ldi r20, 0x7F ; 127 + 856: 57 e4 ldi r21, 0x47 ; 71 + 858: 6d a1 ldd r22, Y+37 ; 0x25 + 85a: 7e a1 ldd r23, Y+38 ; 0x26 + 85c: 8f a1 ldd r24, Y+39 ; 0x27 + 85e: 98 a5 ldd r25, Y+40 ; 0x28 + 860: 0e 94 33 09 call 0x1266 ; 0x1266 <__gesf2> + 864: 18 16 cp r1, r24 + 866: 4c f5 brge .+82 ; 0x8ba <__DATA_REGION_LENGTH__+0xba> + { + // __ticks = requested delay in 1/10 ms + __ticks = (uint16_t) (__ms * 10.0); + 868: 20 e0 ldi r18, 0x00 ; 0 + 86a: 30 e0 ldi r19, 0x00 ; 0 + 86c: 40 e2 ldi r20, 0x20 ; 32 + 86e: 51 e4 ldi r21, 0x41 ; 65 + 870: 69 a1 ldd r22, Y+33 ; 0x21 + 872: 7a a1 ldd r23, Y+34 ; 0x22 + 874: 8b a1 ldd r24, Y+35 ; 0x23 + 876: 9c a1 ldd r25, Y+36 ; 0x24 + 878: 0e 94 38 09 call 0x1270 ; 0x1270 <__mulsf3> + 87c: dc 01 movw r26, r24 + 87e: cb 01 movw r24, r22 + 880: bc 01 movw r22, r24 + 882: cd 01 movw r24, r26 + 884: 0e 94 11 08 call 0x1022 ; 0x1022 <__fixunssfsi> + 888: dc 01 movw r26, r24 + 88a: cb 01 movw r24, r22 + 88c: 9a a7 std Y+42, r25 ; 0x2a + 88e: 89 a7 std Y+41, r24 ; 0x29 + 890: 0f c0 rjmp .+30 ; 0x8b0 <__DATA_REGION_LENGTH__+0xb0> + 892: 80 e9 ldi r24, 0x90 ; 144 + 894: 91 e0 ldi r25, 0x01 ; 1 + 896: 9c a7 std Y+44, r25 ; 0x2c + 898: 8b a7 std Y+43, r24 ; 0x2b + milliseconds can be achieved. + */ +void +_delay_loop_2(uint16_t __count) +{ + __asm__ volatile ( + 89a: 8b a5 ldd r24, Y+43 ; 0x2b + 89c: 9c a5 ldd r25, Y+44 ; 0x2c + 89e: 01 97 sbiw r24, 0x01 ; 1 + 8a0: f1 f7 brne .-4 ; 0x89e <__DATA_REGION_LENGTH__+0x9e> + 8a2: 9c a7 std Y+44, r25 ; 0x2c + 8a4: 8b a7 std Y+43, r24 ; 0x2b + while(__ticks) + { + // wait 1/10 ms + _delay_loop_2(((F_CPU) / 4e3) / 10); + __ticks --; + 8a6: 89 a5 ldd r24, Y+41 ; 0x29 + 8a8: 9a a5 ldd r25, Y+42 ; 0x2a + 8aa: 01 97 sbiw r24, 0x01 ; 1 + 8ac: 9a a7 std Y+42, r25 ; 0x2a + 8ae: 89 a7 std Y+41, r24 ; 0x29 + __ticks = 1; + else if (__tmp > 65535) + { + // __ticks = requested delay in 1/10 ms + __ticks = (uint16_t) (__ms * 10.0); + while(__ticks) + 8b0: 89 a5 ldd r24, Y+41 ; 0x29 + 8b2: 9a a5 ldd r25, Y+42 ; 0x2a + 8b4: 89 2b or r24, r25 + 8b6: 69 f7 brne .-38 ; 0x892 <__DATA_REGION_LENGTH__+0x92> + 8b8: 14 c0 rjmp .+40 ; 0x8e2 <__DATA_REGION_LENGTH__+0xe2> + __ticks --; + } + return; + } + else + __ticks = (uint16_t)__tmp; + 8ba: 6d a1 ldd r22, Y+37 ; 0x25 + 8bc: 7e a1 ldd r23, Y+38 ; 0x26 + 8be: 8f a1 ldd r24, Y+39 ; 0x27 + 8c0: 98 a5 ldd r25, Y+40 ; 0x28 + 8c2: 0e 94 11 08 call 0x1022 ; 0x1022 <__fixunssfsi> + 8c6: dc 01 movw r26, r24 + 8c8: cb 01 movw r24, r22 + 8ca: 9a a7 std Y+42, r25 ; 0x2a + 8cc: 89 a7 std Y+41, r24 ; 0x29 + 8ce: 89 a5 ldd r24, Y+41 ; 0x29 + 8d0: 9a a5 ldd r25, Y+42 ; 0x2a + 8d2: 9e a7 std Y+46, r25 ; 0x2e + 8d4: 8d a7 std Y+45, r24 ; 0x2d + 8d6: 8d a5 ldd r24, Y+45 ; 0x2d + 8d8: 9e a5 ldd r25, Y+46 ; 0x2e + 8da: 01 97 sbiw r24, 0x01 ; 1 + 8dc: f1 f7 brne .-4 ; 0x8da <__DATA_REGION_LENGTH__+0xda> + 8de: 9e a7 std Y+46, r25 ; 0x2e + 8e0: 8d a7 std Y+45, r24 ; 0x2d + _delay_ms(250); //prevent double press + max_score++; + 8e2: 8d 85 ldd r24, Y+13 ; 0x0d + 8e4: 9e 85 ldd r25, Y+14 ; 0x0e + 8e6: 01 96 adiw r24, 0x01 ; 1 + 8e8: 9e 87 std Y+14, r25 ; 0x0e + 8ea: 8d 87 std Y+13, r24 ; 0x0d + if(guess == element_list[element]) { + 8ec: 9e 01 movw r18, r28 + 8ee: 21 5d subi r18, 0xD1 ; 209 + 8f0: 3f 4f sbci r19, 0xFF ; 255 + 8f2: 88 8d ldd r24, Y+24 ; 0x18 + 8f4: 99 8d ldd r25, Y+25 ; 0x19 + 8f6: 82 0f add r24, r18 + 8f8: 93 1f adc r25, r19 + 8fa: fc 01 movw r30, r24 + 8fc: 80 81 ld r24, Z + 8fe: 28 2f mov r18, r24 + 900: 30 e0 ldi r19, 0x00 ; 0 + 902: 8e 89 ldd r24, Y+22 ; 0x16 + 904: 9f 89 ldd r25, Y+23 ; 0x17 + 906: 28 17 cp r18, r24 + 908: 39 07 cpc r19, r25 + 90a: 41 f4 brne .+16 ; 0x91c <__stack+0x1d> + current_score++; + 90c: 8f 85 ldd r24, Y+15 ; 0x0f + 90e: 98 89 ldd r25, Y+16 ; 0x10 + 910: 01 96 adiw r24, 0x01 ; 1 + 912: 98 8b std Y+16, r25 ; 0x10 + 914: 8f 87 std Y+15, r24 ; 0x0f + correct_beep(); + 916: 0e 94 31 05 call 0xa62 ; 0xa62 + 91a: 02 c0 rjmp .+4 ; 0x920 <__stack+0x21> + } + else { + incorrect_beep(); + 91c: 0e 94 47 05 call 0xa8e ; 0xa8e + } + //get elements + seconds_remaining = response_time; + start_timer(); + uint16_t guess; + for(int element = 0; element < elements; element++) { + 920: 88 8d ldd r24, Y+24 ; 0x18 + 922: 99 8d ldd r25, Y+25 ; 0x19 + 924: 01 96 adiw r24, 0x01 ; 1 + 926: 99 8f std Y+25, r25 ; 0x19 + 928: 88 8f std Y+24, r24 ; 0x18 + 92a: 28 8d ldd r18, Y+24 ; 0x18 + 92c: 39 8d ldd r19, Y+25 ; 0x19 + 92e: 8a 8d ldd r24, Y+26 ; 0x1a + 930: 9b 8d ldd r25, Y+27 ; 0x1b + 932: 28 17 cp r18, r24 + 934: 39 07 cpc r19, r25 + 936: 0c f4 brge .+2 ; 0x93a <__stack+0x3b> + 938: 31 cf rjmp .-414 ; 0x79c + /************************************************************************/ + + //main level + int max_score = 0; + int current_score = 0; + for(int set = 0; set < sets; set++) { + 93a: 89 89 ldd r24, Y+17 ; 0x11 + 93c: 9a 89 ldd r25, Y+18 ; 0x12 + 93e: 01 96 adiw r24, 0x01 ; 1 + 940: 9a 8b std Y+18, r25 ; 0x12 + 942: 89 8b std Y+17, r24 ; 0x11 + 944: 29 89 ldd r18, Y+17 ; 0x11 + 946: 3a 89 ldd r19, Y+18 ; 0x12 + 948: 8d 81 ldd r24, Y+5 ; 0x05 + 94a: 9e 81 ldd r25, Y+6 ; 0x06 + 94c: 28 17 cp r18, r24 + 94e: 39 07 cpc r19, r25 + 950: 0c f4 brge .+2 ; 0x954 <__stack+0x55> + 952: 79 ce rjmp .-782 ; 0x646 + else { + incorrect_beep(); + } + } + } + score = (float)current_score / max_score; + 954: 8f 85 ldd r24, Y+15 ; 0x0f + 956: 98 89 ldd r25, Y+16 ; 0x10 + 958: 09 2e mov r0, r25 + 95a: 00 0c add r0, r0 + 95c: aa 0b sbc r26, r26 + 95e: bb 0b sbc r27, r27 + 960: bc 01 movw r22, r24 + 962: cd 01 movw r24, r26 + 964: 0e 94 42 08 call 0x1084 ; 0x1084 <__floatsisf> + 968: 6b 01 movw r12, r22 + 96a: 7c 01 movw r14, r24 + 96c: 8d 85 ldd r24, Y+13 ; 0x0d + 96e: 9e 85 ldd r25, Y+14 ; 0x0e + 970: 09 2e mov r0, r25 + 972: 00 0c add r0, r0 + 974: aa 0b sbc r26, r26 + 976: bb 0b sbc r27, r27 + 978: bc 01 movw r22, r24 + 97a: cd 01 movw r24, r26 + 97c: 0e 94 42 08 call 0x1084 ; 0x1084 <__floatsisf> + 980: dc 01 movw r26, r24 + 982: cb 01 movw r24, r22 + 984: 9c 01 movw r18, r24 + 986: ad 01 movw r20, r26 + 988: c7 01 movw r24, r14 + 98a: b6 01 movw r22, r12 + 98c: 0e 94 98 07 call 0xf30 ; 0xf30 <__divsf3> + 990: dc 01 movw r26, r24 + 992: cb 01 movw r24, r22 + 994: 8d 8f std Y+29, r24 ; 0x1d + 996: 9e 8f std Y+30, r25 ; 0x1e + 998: af 8f std Y+31, r26 ; 0x1f + 99a: b8 a3 std Y+32, r27 ; 0x20 + if(score >= .8) { + 99c: 2d ec ldi r18, 0xCD ; 205 + 99e: 3c ec ldi r19, 0xCC ; 204 + 9a0: 4c e4 ldi r20, 0x4C ; 76 + 9a2: 5f e3 ldi r21, 0x3F ; 63 + 9a4: 6d 8d ldd r22, Y+29 ; 0x1d + 9a6: 7e 8d ldd r23, Y+30 ; 0x1e + 9a8: 8f 8d ldd r24, Y+31 ; 0x1f + 9aa: 98 a1 ldd r25, Y+32 ; 0x20 + 9ac: 0e 94 33 09 call 0x1266 ; 0x1266 <__gesf2> + 9b0: 88 23 and r24, r24 + 9b2: 54 f0 brlt .+20 ; 0x9c8 <__stack+0xc9> + level++; + 9b4: 89 81 ldd r24, Y+1 ; 0x01 + 9b6: 9a 81 ldd r25, Y+2 ; 0x02 + 9b8: 01 96 adiw r24, 0x01 ; 1 + 9ba: 9a 83 std Y+2, r25 ; 0x02 + 9bc: 89 83 std Y+1, r24 ; 0x01 + usart_txstr("\nnext level\n"); + 9be: 80 e8 ldi r24, 0x80 ; 128 + 9c0: 91 e0 ldi r25, 0x01 ; 1 + 9c2: 0e 94 5e 01 call 0x2bc ; 0x2bc + 9c6: 04 c0 rjmp .+8 ; 0x9d0 <__stack+0xd1> + } + else { + loose(); + 9c8: 0e 94 05 06 call 0xc0a ; 0xc0a + break; + 9cc: 00 00 nop + 9ce: 05 c0 rjmp .+10 ; 0x9da <__stack+0xdb> + + while((level > 3) || (level < 1)) level = (int)(usart_rxt_blocking() - '0'); + + + //main simon game + while(level < 3) { + 9d0: 89 81 ldd r24, Y+1 ; 0x01 + 9d2: 9a 81 ldd r25, Y+2 ; 0x02 + 9d4: 03 97 sbiw r24, 0x03 ; 3 + 9d6: 0c f4 brge .+2 ; 0x9da <__stack+0xdb> + 9d8: e5 cd rjmp .-1078 ; 0x5a4 + else { + loose(); + break; + } + } + if(level >= 3) win(); + 9da: 89 81 ldd r24, Y+1 ; 0x01 + 9dc: 9a 81 ldd r25, Y+2 ; 0x02 + 9de: 03 97 sbiw r24, 0x03 ; 3 + 9e0: 0c f4 brge .+2 ; 0x9e4 <__stack+0xe5> + 9e2: c8 cd rjmp .-1136 ; 0x574 + 9e4: 0e 94 e5 05 call 0xbca ; 0xbca + } + 9e8: c5 cd rjmp .-1142 ; 0x574 + +000009ea <__vector_13>: +} + +//timer interrupt +ISR(TIMER1_COMPA_vect) { + 9ea: 1f 92 push r1 + 9ec: 0f 92 push r0 + 9ee: 00 90 5f 00 lds r0, 0x005F ; 0x80005f <__TEXT_REGION_LENGTH__+0x7f805f> + 9f2: 0f 92 push r0 + 9f4: 11 24 eor r1, r1 + 9f6: 2f 93 push r18 + 9f8: 3f 93 push r19 + 9fa: 4f 93 push r20 + 9fc: 5f 93 push r21 + 9fe: 6f 93 push r22 + a00: 7f 93 push r23 + a02: 8f 93 push r24 + a04: 9f 93 push r25 + a06: af 93 push r26 + a08: bf 93 push r27 + a0a: ef 93 push r30 + a0c: ff 93 push r31 + a0e: cf 93 push r28 + a10: df 93 push r29 + a12: cd b7 in r28, 0x3d ; 61 + a14: de b7 in r29, 0x3e ; 62 + if(seconds_remaining-- > 0) return; + a16: 80 91 d8 01 lds r24, 0x01D8 ; 0x8001d8 <__data_end> + a1a: 90 91 d9 01 lds r25, 0x01D9 ; 0x8001d9 <__data_end+0x1> + a1e: 9c 01 movw r18, r24 + a20: 21 50 subi r18, 0x01 ; 1 + a22: 31 09 sbc r19, r1 + a24: 30 93 d9 01 sts 0x01D9, r19 ; 0x8001d9 <__data_end+0x1> + a28: 20 93 d8 01 sts 0x01D8, r18 ; 0x8001d8 <__data_end> + a2c: 18 16 cp r1, r24 + a2e: 19 06 cpc r1, r25 + a30: 1c f0 brlt .+6 ; 0xa38 <__vector_13+0x4e> + for(;;) { + beep(); + a32: 0e 94 25 06 call 0xc4a ; 0xc4a + } + a36: fd cf rjmp .-6 ; 0xa32 <__vector_13+0x48> + } +} + +//timer interrupt +ISR(TIMER1_COMPA_vect) { + if(seconds_remaining-- > 0) return; + a38: 00 00 nop + for(;;) { + beep(); + } +} + a3a: df 91 pop r29 + a3c: cf 91 pop r28 + a3e: ff 91 pop r31 + a40: ef 91 pop r30 + a42: bf 91 pop r27 + a44: af 91 pop r26 + a46: 9f 91 pop r25 + a48: 8f 91 pop r24 + a4a: 7f 91 pop r23 + a4c: 6f 91 pop r22 + a4e: 5f 91 pop r21 + a50: 4f 91 pop r20 + a52: 3f 91 pop r19 + a54: 2f 91 pop r18 + a56: 0f 90 pop r0 + a58: 00 92 5f 00 sts 0x005F, r0 ; 0x80005f <__TEXT_REGION_LENGTH__+0x7f805f> + a5c: 0f 90 pop r0 + a5e: 1f 90 pop r1 + a60: 18 95 reti + +00000a62 : + +void correct_beep() { + a62: cf 93 push r28 + a64: df 93 push r29 + a66: cd b7 in r28, 0x3d ; 61 + a68: de b7 in r29, 0x3e ; 62 + usart_txstr("\nCorrect!\n"); + a6a: 8d e8 ldi r24, 0x8D ; 141 + a6c: 91 e0 ldi r25, 0x01 ; 1 + a6e: 0e 94 5e 01 call 0x2bc ; 0x2bc + beep(440.0, .1); + a72: 2d ec ldi r18, 0xCD ; 205 + a74: 3c ec ldi r19, 0xCC ; 204 + a76: 4c ec ldi r20, 0xCC ; 204 + a78: 5d e3 ldi r21, 0x3D ; 61 + a7a: 60 e0 ldi r22, 0x00 ; 0 + a7c: 70 e0 ldi r23, 0x00 ; 0 + a7e: 8c ed ldi r24, 0xDC ; 220 + a80: 93 e4 ldi r25, 0x43 ; 67 + a82: 0e 94 25 06 call 0xc4a ; 0xc4a +} + a86: 00 00 nop + a88: df 91 pop r29 + a8a: cf 91 pop r28 + a8c: 08 95 ret + +00000a8e : + +void incorrect_beep() { + a8e: cf 93 push r28 + a90: df 93 push r29 + a92: cd b7 in r28, 0x3d ; 61 + a94: de b7 in r29, 0x3e ; 62 + a96: 2e 97 sbiw r28, 0x0e ; 14 + a98: 0f b6 in r0, 0x3f ; 63 + a9a: f8 94 cli + a9c: de bf out 0x3e, r29 ; 62 + a9e: 0f be out 0x3f, r0 ; 63 + aa0: cd bf out 0x3d, r28 ; 61 + usart_txstr("\nIncorrect guess.\n"); + aa2: 88 e9 ldi r24, 0x98 ; 152 + aa4: 91 e0 ldi r25, 0x01 ; 1 + aa6: 0e 94 5e 01 call 0x2bc ; 0x2bc + beep(261.62, .2); + aaa: 2d ec ldi r18, 0xCD ; 205 + aac: 3c ec ldi r19, 0xCC ; 204 + aae: 4c e4 ldi r20, 0x4C ; 76 + ab0: 5e e3 ldi r21, 0x3E ; 62 + ab2: 6c e5 ldi r22, 0x5C ; 92 + ab4: 7f ec ldi r23, 0xCF ; 207 + ab6: 82 e8 ldi r24, 0x82 ; 130 + ab8: 93 e4 ldi r25, 0x43 ; 67 + aba: 0e 94 25 06 call 0xc4a ; 0xc4a + abe: 80 e0 ldi r24, 0x00 ; 0 + ac0: 90 e0 ldi r25, 0x00 ; 0 + ac2: a8 ec ldi r26, 0xC8 ; 200 + ac4: b1 e4 ldi r27, 0x41 ; 65 + ac6: 89 83 std Y+1, r24 ; 0x01 + ac8: 9a 83 std Y+2, r25 ; 0x02 + aca: ab 83 std Y+3, r26 ; 0x03 + acc: bc 83 std Y+4, r27 ; 0x04 + + __builtin_avr_delay_cycles(__ticks_dc); + +#else + uint16_t __ticks; + __tmp = ((F_CPU) / 4e3) * __ms; + ace: 20 e0 ldi r18, 0x00 ; 0 + ad0: 30 e0 ldi r19, 0x00 ; 0 + ad2: 4a e7 ldi r20, 0x7A ; 122 + ad4: 55 e4 ldi r21, 0x45 ; 69 + ad6: 69 81 ldd r22, Y+1 ; 0x01 + ad8: 7a 81 ldd r23, Y+2 ; 0x02 + ada: 8b 81 ldd r24, Y+3 ; 0x03 + adc: 9c 81 ldd r25, Y+4 ; 0x04 + ade: 0e 94 38 09 call 0x1270 ; 0x1270 <__mulsf3> + ae2: dc 01 movw r26, r24 + ae4: cb 01 movw r24, r22 + ae6: 8d 83 std Y+5, r24 ; 0x05 + ae8: 9e 83 std Y+6, r25 ; 0x06 + aea: af 83 std Y+7, r26 ; 0x07 + aec: b8 87 std Y+8, r27 ; 0x08 + if (__tmp < 1.0) + aee: 20 e0 ldi r18, 0x00 ; 0 + af0: 30 e0 ldi r19, 0x00 ; 0 + af2: 40 e8 ldi r20, 0x80 ; 128 + af4: 5f e3 ldi r21, 0x3F ; 63 + af6: 6d 81 ldd r22, Y+5 ; 0x05 + af8: 7e 81 ldd r23, Y+6 ; 0x06 + afa: 8f 81 ldd r24, Y+7 ; 0x07 + afc: 98 85 ldd r25, Y+8 ; 0x08 + afe: 0e 94 93 07 call 0xf26 ; 0xf26 <__cmpsf2> + b02: 88 23 and r24, r24 + b04: 2c f4 brge .+10 ; 0xb10 + __ticks = 1; + b06: 81 e0 ldi r24, 0x01 ; 1 + b08: 90 e0 ldi r25, 0x00 ; 0 + b0a: 9a 87 std Y+10, r25 ; 0x0a + b0c: 89 87 std Y+9, r24 ; 0x09 + b0e: 3f c0 rjmp .+126 ; 0xb8e + else if (__tmp > 65535) + b10: 20 e0 ldi r18, 0x00 ; 0 + b12: 3f ef ldi r19, 0xFF ; 255 + b14: 4f e7 ldi r20, 0x7F ; 127 + b16: 57 e4 ldi r21, 0x47 ; 71 + b18: 6d 81 ldd r22, Y+5 ; 0x05 + b1a: 7e 81 ldd r23, Y+6 ; 0x06 + b1c: 8f 81 ldd r24, Y+7 ; 0x07 + b1e: 98 85 ldd r25, Y+8 ; 0x08 + b20: 0e 94 33 09 call 0x1266 ; 0x1266 <__gesf2> + b24: 18 16 cp r1, r24 + b26: 4c f5 brge .+82 ; 0xb7a + { + // __ticks = requested delay in 1/10 ms + __ticks = (uint16_t) (__ms * 10.0); + b28: 20 e0 ldi r18, 0x00 ; 0 + b2a: 30 e0 ldi r19, 0x00 ; 0 + b2c: 40 e2 ldi r20, 0x20 ; 32 + b2e: 51 e4 ldi r21, 0x41 ; 65 + b30: 69 81 ldd r22, Y+1 ; 0x01 + b32: 7a 81 ldd r23, Y+2 ; 0x02 + b34: 8b 81 ldd r24, Y+3 ; 0x03 + b36: 9c 81 ldd r25, Y+4 ; 0x04 + b38: 0e 94 38 09 call 0x1270 ; 0x1270 <__mulsf3> + b3c: dc 01 movw r26, r24 + b3e: cb 01 movw r24, r22 + b40: bc 01 movw r22, r24 + b42: cd 01 movw r24, r26 + b44: 0e 94 11 08 call 0x1022 ; 0x1022 <__fixunssfsi> + b48: dc 01 movw r26, r24 + b4a: cb 01 movw r24, r22 + b4c: 9a 87 std Y+10, r25 ; 0x0a + b4e: 89 87 std Y+9, r24 ; 0x09 + b50: 0f c0 rjmp .+30 ; 0xb70 + b52: 80 e9 ldi r24, 0x90 ; 144 + b54: 91 e0 ldi r25, 0x01 ; 1 + b56: 9c 87 std Y+12, r25 ; 0x0c + b58: 8b 87 std Y+11, r24 ; 0x0b + b5a: 8b 85 ldd r24, Y+11 ; 0x0b + b5c: 9c 85 ldd r25, Y+12 ; 0x0c + b5e: 01 97 sbiw r24, 0x01 ; 1 + b60: f1 f7 brne .-4 ; 0xb5e + b62: 9c 87 std Y+12, r25 ; 0x0c + b64: 8b 87 std Y+11, r24 ; 0x0b + while(__ticks) + { + // wait 1/10 ms + _delay_loop_2(((F_CPU) / 4e3) / 10); + __ticks --; + b66: 89 85 ldd r24, Y+9 ; 0x09 + b68: 9a 85 ldd r25, Y+10 ; 0x0a + b6a: 01 97 sbiw r24, 0x01 ; 1 + b6c: 9a 87 std Y+10, r25 ; 0x0a + b6e: 89 87 std Y+9, r24 ; 0x09 + __ticks = 1; + else if (__tmp > 65535) + { + // __ticks = requested delay in 1/10 ms + __ticks = (uint16_t) (__ms * 10.0); + while(__ticks) + b70: 89 85 ldd r24, Y+9 ; 0x09 + b72: 9a 85 ldd r25, Y+10 ; 0x0a + b74: 89 2b or r24, r25 + b76: 69 f7 brne .-38 ; 0xb52 + b78: 14 c0 rjmp .+40 ; 0xba2 + __ticks --; + } + return; + } + else + __ticks = (uint16_t)__tmp; + b7a: 6d 81 ldd r22, Y+5 ; 0x05 + b7c: 7e 81 ldd r23, Y+6 ; 0x06 + b7e: 8f 81 ldd r24, Y+7 ; 0x07 + b80: 98 85 ldd r25, Y+8 ; 0x08 + b82: 0e 94 11 08 call 0x1022 ; 0x1022 <__fixunssfsi> + b86: dc 01 movw r26, r24 + b88: cb 01 movw r24, r22 + b8a: 9a 87 std Y+10, r25 ; 0x0a + b8c: 89 87 std Y+9, r24 ; 0x09 + b8e: 89 85 ldd r24, Y+9 ; 0x09 + b90: 9a 85 ldd r25, Y+10 ; 0x0a + b92: 9e 87 std Y+14, r25 ; 0x0e + b94: 8d 87 std Y+13, r24 ; 0x0d + b96: 8d 85 ldd r24, Y+13 ; 0x0d + b98: 9e 85 ldd r25, Y+14 ; 0x0e + b9a: 01 97 sbiw r24, 0x01 ; 1 + b9c: f1 f7 brne .-4 ; 0xb9a + b9e: 9e 87 std Y+14, r25 ; 0x0e + ba0: 8d 87 std Y+13, r24 ; 0x0d + _delay_ms(25); + beep(261.62, .2); + ba2: 2d ec ldi r18, 0xCD ; 205 + ba4: 3c ec ldi r19, 0xCC ; 204 + ba6: 4c e4 ldi r20, 0x4C ; 76 + ba8: 5e e3 ldi r21, 0x3E ; 62 + baa: 6c e5 ldi r22, 0x5C ; 92 + bac: 7f ec ldi r23, 0xCF ; 207 + bae: 82 e8 ldi r24, 0x82 ; 130 + bb0: 93 e4 ldi r25, 0x43 ; 67 + bb2: 0e 94 25 06 call 0xc4a ; 0xc4a +} + bb6: 00 00 nop + bb8: 2e 96 adiw r28, 0x0e ; 14 + bba: 0f b6 in r0, 0x3f ; 63 + bbc: f8 94 cli + bbe: de bf out 0x3e, r29 ; 62 + bc0: 0f be out 0x3f, r0 ; 63 + bc2: cd bf out 0x3d, r28 ; 61 + bc4: df 91 pop r29 + bc6: cf 91 pop r28 + bc8: 08 95 ret + +00000bca : + +void win() { + bca: cf 93 push r28 + bcc: df 93 push r29 + bce: cd b7 in r28, 0x3d ; 61 + bd0: de b7 in r29, 0x3e ; 62 + usart_txstr("\nYou beat the game!\n"); + bd2: 8b ea ldi r24, 0xAB ; 171 + bd4: 91 e0 ldi r25, 0x01 ; 1 + bd6: 0e 94 5e 01 call 0x2bc ; 0x2bc + beep(262., .5); + bda: 20 e0 ldi r18, 0x00 ; 0 + bdc: 30 e0 ldi r19, 0x00 ; 0 + bde: 40 e0 ldi r20, 0x00 ; 0 + be0: 5f e3 ldi r21, 0x3F ; 63 + be2: 60 e0 ldi r22, 0x00 ; 0 + be4: 70 e0 ldi r23, 0x00 ; 0 + be6: 83 e8 ldi r24, 0x83 ; 131 + be8: 93 e4 ldi r25, 0x43 ; 67 + bea: 0e 94 25 06 call 0xc4a ; 0xc4a + beep(392., .5); + bee: 20 e0 ldi r18, 0x00 ; 0 + bf0: 30 e0 ldi r19, 0x00 ; 0 + bf2: 40 e0 ldi r20, 0x00 ; 0 + bf4: 5f e3 ldi r21, 0x3F ; 63 + bf6: 60 e0 ldi r22, 0x00 ; 0 + bf8: 70 e0 ldi r23, 0x00 ; 0 + bfa: 84 ec ldi r24, 0xC4 ; 196 + bfc: 93 e4 ldi r25, 0x43 ; 67 + bfe: 0e 94 25 06 call 0xc4a ; 0xc4a +} + c02: 00 00 nop + c04: df 91 pop r29 + c06: cf 91 pop r28 + c08: 08 95 ret + +00000c0a : + +void loose() { + c0a: cf 93 push r28 + c0c: df 93 push r29 + c0e: cd b7 in r28, 0x3d ; 61 + c10: de b7 in r29, 0x3e ; 62 + usart_txstr("\nYou loose, try again?\n"); + c12: 80 ec ldi r24, 0xC0 ; 192 + c14: 91 e0 ldi r25, 0x01 ; 1 + c16: 0e 94 5e 01 call 0x2bc ; 0x2bc + beep(330., .5); + c1a: 20 e0 ldi r18, 0x00 ; 0 + c1c: 30 e0 ldi r19, 0x00 ; 0 + c1e: 40 e0 ldi r20, 0x00 ; 0 + c20: 5f e3 ldi r21, 0x3F ; 63 + c22: 60 e0 ldi r22, 0x00 ; 0 + c24: 70 e0 ldi r23, 0x00 ; 0 + c26: 85 ea ldi r24, 0xA5 ; 165 + c28: 93 e4 ldi r25, 0x43 ; 67 + c2a: 0e 94 25 06 call 0xc4a ; 0xc4a + beep(294., .5); + c2e: 20 e0 ldi r18, 0x00 ; 0 + c30: 30 e0 ldi r19, 0x00 ; 0 + c32: 40 e0 ldi r20, 0x00 ; 0 + c34: 5f e3 ldi r21, 0x3F ; 63 + c36: 60 e0 ldi r22, 0x00 ; 0 + c38: 70 e0 ldi r23, 0x00 ; 0 + c3a: 83 e9 ldi r24, 0x93 ; 147 + c3c: 93 e4 ldi r25, 0x43 ; 67 + c3e: 0e 94 25 06 call 0xc4a ; 0xc4a +} + c42: 00 00 nop + c44: df 91 pop r29 + c46: cf 91 pop r28 + c48: 08 95 ret + +00000c4a : + + +//TODO move somewhere else +void beep(double frequency, double durientation) { + c4a: cf 93 push r28 + c4c: df 93 push r29 + c4e: cd b7 in r28, 0x3d ; 61 + c50: de b7 in r29, 0x3e ; 62 + c52: 6e 97 sbiw r28, 0x1e ; 30 + c54: 0f b6 in r0, 0x3f ; 63 + c56: f8 94 cli + c58: de bf out 0x3e, r29 ; 62 + c5a: 0f be out 0x3f, r0 ; 63 + c5c: cd bf out 0x3d, r28 ; 61 + c5e: 6f 8b std Y+23, r22 ; 0x17 + c60: 78 8f std Y+24, r23 ; 0x18 + c62: 89 8f std Y+25, r24 ; 0x19 + c64: 9a 8f std Y+26, r25 ; 0x1a + c66: 2b 8f std Y+27, r18 ; 0x1b + c68: 3c 8f std Y+28, r19 ; 0x1c + c6a: 4d 8f std Y+29, r20 ; 0x1d + c6c: 5e 8f std Y+30, r21 ; 0x1e + double speaker_ms = ((1.0 / frequency) / 2.0) * 1000.0; //TODO clean up + c6e: 2f 89 ldd r18, Y+23 ; 0x17 + c70: 38 8d ldd r19, Y+24 ; 0x18 + c72: 49 8d ldd r20, Y+25 ; 0x19 + c74: 5a 8d ldd r21, Y+26 ; 0x1a + c76: 60 e0 ldi r22, 0x00 ; 0 + c78: 70 e0 ldi r23, 0x00 ; 0 + c7a: 80 e8 ldi r24, 0x80 ; 128 + c7c: 9f e3 ldi r25, 0x3F ; 63 + c7e: 0e 94 98 07 call 0xf30 ; 0xf30 <__divsf3> + c82: dc 01 movw r26, r24 + c84: cb 01 movw r24, r22 + c86: 20 e0 ldi r18, 0x00 ; 0 + c88: 30 e0 ldi r19, 0x00 ; 0 + c8a: 40 e0 ldi r20, 0x00 ; 0 + c8c: 50 e4 ldi r21, 0x40 ; 64 + c8e: bc 01 movw r22, r24 + c90: cd 01 movw r24, r26 + c92: 0e 94 98 07 call 0xf30 ; 0xf30 <__divsf3> + c96: dc 01 movw r26, r24 + c98: cb 01 movw r24, r22 + c9a: 20 e0 ldi r18, 0x00 ; 0 + c9c: 30 e0 ldi r19, 0x00 ; 0 + c9e: 4a e7 ldi r20, 0x7A ; 122 + ca0: 54 e4 ldi r21, 0x44 ; 68 + ca2: bc 01 movw r22, r24 + ca4: cd 01 movw r24, r26 + ca6: 0e 94 38 09 call 0x1270 ; 0x1270 <__mulsf3> + caa: dc 01 movw r26, r24 + cac: cb 01 movw r24, r22 + cae: 8b 83 std Y+3, r24 ; 0x03 + cb0: 9c 83 std Y+4, r25 ; 0x04 + cb2: ad 83 std Y+5, r26 ; 0x05 + cb4: be 83 std Y+6, r27 ; 0x06 + int loop_count = durientation / (1.0 / frequency); + cb6: 2f 89 ldd r18, Y+23 ; 0x17 + cb8: 38 8d ldd r19, Y+24 ; 0x18 + cba: 49 8d ldd r20, Y+25 ; 0x19 + cbc: 5a 8d ldd r21, Y+26 ; 0x1a + cbe: 60 e0 ldi r22, 0x00 ; 0 + cc0: 70 e0 ldi r23, 0x00 ; 0 + cc2: 80 e8 ldi r24, 0x80 ; 128 + cc4: 9f e3 ldi r25, 0x3F ; 63 + cc6: 0e 94 98 07 call 0xf30 ; 0xf30 <__divsf3> + cca: dc 01 movw r26, r24 + ccc: cb 01 movw r24, r22 + cce: 9c 01 movw r18, r24 + cd0: ad 01 movw r20, r26 + cd2: 6b 8d ldd r22, Y+27 ; 0x1b + cd4: 7c 8d ldd r23, Y+28 ; 0x1c + cd6: 8d 8d ldd r24, Y+29 ; 0x1d + cd8: 9e 8d ldd r25, Y+30 ; 0x1e + cda: 0e 94 98 07 call 0xf30 ; 0xf30 <__divsf3> + cde: dc 01 movw r26, r24 + ce0: cb 01 movw r24, r22 + ce2: bc 01 movw r22, r24 + ce4: cd 01 movw r24, r26 + ce6: 0e 94 0a 08 call 0x1014 ; 0x1014 <__fixsfsi> + cea: dc 01 movw r26, r24 + cec: cb 01 movw r24, r22 + cee: 98 87 std Y+8, r25 ; 0x08 + cf0: 8f 83 std Y+7, r24 ; 0x07 + for(unsigned int i = 0; i < loop_count; i++) { + cf2: 1a 82 std Y+2, r1 ; 0x02 + cf4: 19 82 std Y+1, r1 ; 0x01 + cf6: 81 c0 rjmp .+258 ; 0xdfa + cf8: 8b 81 ldd r24, Y+3 ; 0x03 + cfa: 9c 81 ldd r25, Y+4 ; 0x04 + cfc: ad 81 ldd r26, Y+5 ; 0x05 + cfe: be 81 ldd r27, Y+6 ; 0x06 + d00: 89 87 std Y+9, r24 ; 0x09 + d02: 9a 87 std Y+10, r25 ; 0x0a + d04: ab 87 std Y+11, r26 ; 0x0b + d06: bc 87 std Y+12, r27 ; 0x0c + + __builtin_avr_delay_cycles(__ticks_dc); + +#else + uint16_t __ticks; + __tmp = ((F_CPU) / 4e3) * __ms; + d08: 20 e0 ldi r18, 0x00 ; 0 + d0a: 30 e0 ldi r19, 0x00 ; 0 + d0c: 4a e7 ldi r20, 0x7A ; 122 + d0e: 55 e4 ldi r21, 0x45 ; 69 + d10: 69 85 ldd r22, Y+9 ; 0x09 + d12: 7a 85 ldd r23, Y+10 ; 0x0a + d14: 8b 85 ldd r24, Y+11 ; 0x0b + d16: 9c 85 ldd r25, Y+12 ; 0x0c + d18: 0e 94 38 09 call 0x1270 ; 0x1270 <__mulsf3> + d1c: dc 01 movw r26, r24 + d1e: cb 01 movw r24, r22 + d20: 8d 87 std Y+13, r24 ; 0x0d + d22: 9e 87 std Y+14, r25 ; 0x0e + d24: af 87 std Y+15, r26 ; 0x0f + d26: b8 8b std Y+16, r27 ; 0x10 + if (__tmp < 1.0) + d28: 20 e0 ldi r18, 0x00 ; 0 + d2a: 30 e0 ldi r19, 0x00 ; 0 + d2c: 40 e8 ldi r20, 0x80 ; 128 + d2e: 5f e3 ldi r21, 0x3F ; 63 + d30: 6d 85 ldd r22, Y+13 ; 0x0d + d32: 7e 85 ldd r23, Y+14 ; 0x0e + d34: 8f 85 ldd r24, Y+15 ; 0x0f + d36: 98 89 ldd r25, Y+16 ; 0x10 + d38: 0e 94 93 07 call 0xf26 ; 0xf26 <__cmpsf2> + d3c: 88 23 and r24, r24 + d3e: 2c f4 brge .+10 ; 0xd4a + __ticks = 1; + d40: 81 e0 ldi r24, 0x01 ; 1 + d42: 90 e0 ldi r25, 0x00 ; 0 + d44: 9a 8b std Y+18, r25 ; 0x12 + d46: 89 8b std Y+17, r24 ; 0x11 + d48: 3f c0 rjmp .+126 ; 0xdc8 + else if (__tmp > 65535) + d4a: 20 e0 ldi r18, 0x00 ; 0 + d4c: 3f ef ldi r19, 0xFF ; 255 + d4e: 4f e7 ldi r20, 0x7F ; 127 + d50: 57 e4 ldi r21, 0x47 ; 71 + d52: 6d 85 ldd r22, Y+13 ; 0x0d + d54: 7e 85 ldd r23, Y+14 ; 0x0e + d56: 8f 85 ldd r24, Y+15 ; 0x0f + d58: 98 89 ldd r25, Y+16 ; 0x10 + d5a: 0e 94 33 09 call 0x1266 ; 0x1266 <__gesf2> + d5e: 18 16 cp r1, r24 + d60: 4c f5 brge .+82 ; 0xdb4 + { + // __ticks = requested delay in 1/10 ms + __ticks = (uint16_t) (__ms * 10.0); + d62: 20 e0 ldi r18, 0x00 ; 0 + d64: 30 e0 ldi r19, 0x00 ; 0 + d66: 40 e2 ldi r20, 0x20 ; 32 + d68: 51 e4 ldi r21, 0x41 ; 65 + d6a: 69 85 ldd r22, Y+9 ; 0x09 + d6c: 7a 85 ldd r23, Y+10 ; 0x0a + d6e: 8b 85 ldd r24, Y+11 ; 0x0b + d70: 9c 85 ldd r25, Y+12 ; 0x0c + d72: 0e 94 38 09 call 0x1270 ; 0x1270 <__mulsf3> + d76: dc 01 movw r26, r24 + d78: cb 01 movw r24, r22 + d7a: bc 01 movw r22, r24 + d7c: cd 01 movw r24, r26 + d7e: 0e 94 11 08 call 0x1022 ; 0x1022 <__fixunssfsi> + d82: dc 01 movw r26, r24 + d84: cb 01 movw r24, r22 + d86: 9a 8b std Y+18, r25 ; 0x12 + d88: 89 8b std Y+17, r24 ; 0x11 + d8a: 0f c0 rjmp .+30 ; 0xdaa + d8c: 80 e9 ldi r24, 0x90 ; 144 + d8e: 91 e0 ldi r25, 0x01 ; 1 + d90: 9c 8b std Y+20, r25 ; 0x14 + d92: 8b 8b std Y+19, r24 ; 0x13 + d94: 8b 89 ldd r24, Y+19 ; 0x13 + d96: 9c 89 ldd r25, Y+20 ; 0x14 + d98: 01 97 sbiw r24, 0x01 ; 1 + d9a: f1 f7 brne .-4 ; 0xd98 + d9c: 9c 8b std Y+20, r25 ; 0x14 + d9e: 8b 8b std Y+19, r24 ; 0x13 + while(__ticks) + { + // wait 1/10 ms + _delay_loop_2(((F_CPU) / 4e3) / 10); + __ticks --; + da0: 89 89 ldd r24, Y+17 ; 0x11 + da2: 9a 89 ldd r25, Y+18 ; 0x12 + da4: 01 97 sbiw r24, 0x01 ; 1 + da6: 9a 8b std Y+18, r25 ; 0x12 + da8: 89 8b std Y+17, r24 ; 0x11 + __ticks = 1; + else if (__tmp > 65535) + { + // __ticks = requested delay in 1/10 ms + __ticks = (uint16_t) (__ms * 10.0); + while(__ticks) + daa: 89 89 ldd r24, Y+17 ; 0x11 + dac: 9a 89 ldd r25, Y+18 ; 0x12 + dae: 89 2b or r24, r25 + db0: 69 f7 brne .-38 ; 0xd8c + db2: 14 c0 rjmp .+40 ; 0xddc + __ticks --; + } + return; + } + else + __ticks = (uint16_t)__tmp; + db4: 6d 85 ldd r22, Y+13 ; 0x0d + db6: 7e 85 ldd r23, Y+14 ; 0x0e + db8: 8f 85 ldd r24, Y+15 ; 0x0f + dba: 98 89 ldd r25, Y+16 ; 0x10 + dbc: 0e 94 11 08 call 0x1022 ; 0x1022 <__fixunssfsi> + dc0: dc 01 movw r26, r24 + dc2: cb 01 movw r24, r22 + dc4: 9a 8b std Y+18, r25 ; 0x12 + dc6: 89 8b std Y+17, r24 ; 0x11 + dc8: 89 89 ldd r24, Y+17 ; 0x11 + dca: 9a 89 ldd r25, Y+18 ; 0x12 + dcc: 9e 8b std Y+22, r25 ; 0x16 + dce: 8d 8b std Y+21, r24 ; 0x15 + dd0: 8d 89 ldd r24, Y+21 ; 0x15 + dd2: 9e 89 ldd r25, Y+22 ; 0x16 + dd4: 01 97 sbiw r24, 0x01 ; 1 + dd6: f1 f7 brne .-4 ; 0xdd4 + dd8: 9e 8b std Y+22, r25 ; 0x16 + dda: 8d 8b std Y+21, r24 ; 0x15 + _delay_ms(speaker_ms); + SPEAKER_PORT ^= (1 << SPEAKER_PIN); + ddc: 8e e2 ldi r24, 0x2E ; 46 + dde: 90 e0 ldi r25, 0x00 ; 0 + de0: 2e e2 ldi r18, 0x2E ; 46 + de2: 30 e0 ldi r19, 0x00 ; 0 + de4: f9 01 movw r30, r18 + de6: 30 81 ld r19, Z + de8: 20 e1 ldi r18, 0x10 ; 16 + dea: 23 27 eor r18, r19 + dec: fc 01 movw r30, r24 + dee: 20 83 st Z, r18 + +//TODO move somewhere else +void beep(double frequency, double durientation) { + double speaker_ms = ((1.0 / frequency) / 2.0) * 1000.0; //TODO clean up + int loop_count = durientation / (1.0 / frequency); + for(unsigned int i = 0; i < loop_count; i++) { + df0: 89 81 ldd r24, Y+1 ; 0x01 + df2: 9a 81 ldd r25, Y+2 ; 0x02 + df4: 01 96 adiw r24, 0x01 ; 1 + df6: 9a 83 std Y+2, r25 ; 0x02 + df8: 89 83 std Y+1, r24 ; 0x01 + dfa: 8f 81 ldd r24, Y+7 ; 0x07 + dfc: 98 85 ldd r25, Y+8 ; 0x08 + dfe: 29 81 ldd r18, Y+1 ; 0x01 + e00: 3a 81 ldd r19, Y+2 ; 0x02 + e02: 28 17 cp r18, r24 + e04: 39 07 cpc r19, r25 + e06: 08 f4 brcc .+2 ; 0xe0a + e08: 77 cf rjmp .-274 ; 0xcf8 + _delay_ms(speaker_ms); + SPEAKER_PORT ^= (1 << SPEAKER_PIN); + } + e0a: 00 00 nop + e0c: 6e 96 adiw r28, 0x1e ; 30 + e0e: 0f b6 in r0, 0x3f ; 63 + e10: f8 94 cli + e12: de bf out 0x3e, r29 ; 62 + e14: 0f be out 0x3f, r0 ; 63 + e16: cd bf out 0x3d, r28 ; 61 + e18: df 91 pop r29 + e1a: cf 91 pop r28 + e1c: 08 95 ret + +00000e1e <__subsf3>: + e1e: 50 58 subi r21, 0x80 ; 128 + +00000e20 <__addsf3>: + e20: bb 27 eor r27, r27 + e22: aa 27 eor r26, r26 + e24: 0e 94 27 07 call 0xe4e ; 0xe4e <__addsf3x> + e28: 0c 94 e1 08 jmp 0x11c2 ; 0x11c2 <__fp_round> + e2c: 0e 94 d3 08 call 0x11a6 ; 0x11a6 <__fp_pscA> + e30: 38 f0 brcs .+14 ; 0xe40 <__addsf3+0x20> + e32: 0e 94 da 08 call 0x11b4 ; 0x11b4 <__fp_pscB> + e36: 20 f0 brcs .+8 ; 0xe40 <__addsf3+0x20> + e38: 39 f4 brne .+14 ; 0xe48 <__addsf3+0x28> + e3a: 9f 3f cpi r25, 0xFF ; 255 + e3c: 19 f4 brne .+6 ; 0xe44 <__addsf3+0x24> + e3e: 26 f4 brtc .+8 ; 0xe48 <__addsf3+0x28> + e40: 0c 94 d0 08 jmp 0x11a0 ; 0x11a0 <__fp_nan> + e44: 0e f4 brtc .+2 ; 0xe48 <__addsf3+0x28> + e46: e0 95 com r30 + e48: e7 fb bst r30, 7 + e4a: 0c 94 a1 08 jmp 0x1142 ; 0x1142 <__fp_inf> + +00000e4e <__addsf3x>: + e4e: e9 2f mov r30, r25 + e50: 0e 94 f2 08 call 0x11e4 ; 0x11e4 <__fp_split3> + e54: 58 f3 brcs .-42 ; 0xe2c <__addsf3+0xc> + e56: ba 17 cp r27, r26 + e58: 62 07 cpc r22, r18 + e5a: 73 07 cpc r23, r19 + e5c: 84 07 cpc r24, r20 + e5e: 95 07 cpc r25, r21 + e60: 20 f0 brcs .+8 ; 0xe6a <__addsf3x+0x1c> + e62: 79 f4 brne .+30 ; 0xe82 <__addsf3x+0x34> + e64: a6 f5 brtc .+104 ; 0xece <__addsf3x+0x80> + e66: 0c 94 2c 09 jmp 0x1258 ; 0x1258 <__fp_zero> + e6a: 0e f4 brtc .+2 ; 0xe6e <__addsf3x+0x20> + e6c: e0 95 com r30 + e6e: 0b 2e mov r0, r27 + e70: ba 2f mov r27, r26 + e72: a0 2d mov r26, r0 + e74: 0b 01 movw r0, r22 + e76: b9 01 movw r22, r18 + e78: 90 01 movw r18, r0 + e7a: 0c 01 movw r0, r24 + e7c: ca 01 movw r24, r20 + e7e: a0 01 movw r20, r0 + e80: 11 24 eor r1, r1 + e82: ff 27 eor r31, r31 + e84: 59 1b sub r21, r25 + e86: 99 f0 breq .+38 ; 0xeae <__addsf3x+0x60> + e88: 59 3f cpi r21, 0xF9 ; 249 + e8a: 50 f4 brcc .+20 ; 0xea0 <__addsf3x+0x52> + e8c: 50 3e cpi r21, 0xE0 ; 224 + e8e: 68 f1 brcs .+90 ; 0xeea <__addsf3x+0x9c> + e90: 1a 16 cp r1, r26 + e92: f0 40 sbci r31, 0x00 ; 0 + e94: a2 2f mov r26, r18 + e96: 23 2f mov r18, r19 + e98: 34 2f mov r19, r20 + e9a: 44 27 eor r20, r20 + e9c: 58 5f subi r21, 0xF8 ; 248 + e9e: f3 cf rjmp .-26 ; 0xe86 <__addsf3x+0x38> + ea0: 46 95 lsr r20 + ea2: 37 95 ror r19 + ea4: 27 95 ror r18 + ea6: a7 95 ror r26 + ea8: f0 40 sbci r31, 0x00 ; 0 + eaa: 53 95 inc r21 + eac: c9 f7 brne .-14 ; 0xea0 <__addsf3x+0x52> + eae: 7e f4 brtc .+30 ; 0xece <__addsf3x+0x80> + eb0: 1f 16 cp r1, r31 + eb2: ba 0b sbc r27, r26 + eb4: 62 0b sbc r22, r18 + eb6: 73 0b sbc r23, r19 + eb8: 84 0b sbc r24, r20 + eba: ba f0 brmi .+46 ; 0xeea <__addsf3x+0x9c> + ebc: 91 50 subi r25, 0x01 ; 1 + ebe: a1 f0 breq .+40 ; 0xee8 <__addsf3x+0x9a> + ec0: ff 0f add r31, r31 + ec2: bb 1f adc r27, r27 + ec4: 66 1f adc r22, r22 + ec6: 77 1f adc r23, r23 + ec8: 88 1f adc r24, r24 + eca: c2 f7 brpl .-16 ; 0xebc <__addsf3x+0x6e> + ecc: 0e c0 rjmp .+28 ; 0xeea <__addsf3x+0x9c> + ece: ba 0f add r27, r26 + ed0: 62 1f adc r22, r18 + ed2: 73 1f adc r23, r19 + ed4: 84 1f adc r24, r20 + ed6: 48 f4 brcc .+18 ; 0xeea <__addsf3x+0x9c> + ed8: 87 95 ror r24 + eda: 77 95 ror r23 + edc: 67 95 ror r22 + ede: b7 95 ror r27 + ee0: f7 95 ror r31 + ee2: 9e 3f cpi r25, 0xFE ; 254 + ee4: 08 f0 brcs .+2 ; 0xee8 <__addsf3x+0x9a> + ee6: b0 cf rjmp .-160 ; 0xe48 <__addsf3+0x28> + ee8: 93 95 inc r25 + eea: 88 0f add r24, r24 + eec: 08 f0 brcs .+2 ; 0xef0 <__addsf3x+0xa2> + eee: 99 27 eor r25, r25 + ef0: ee 0f add r30, r30 + ef2: 97 95 ror r25 + ef4: 87 95 ror r24 + ef6: 08 95 ret + +00000ef8 : + ef8: 0e 94 14 09 call 0x1228 ; 0x1228 <__fp_trunc> + efc: 90 f0 brcs .+36 ; 0xf22 + efe: 9f 37 cpi r25, 0x7F ; 127 + f00: 48 f4 brcc .+18 ; 0xf14 + f02: 91 11 cpse r25, r1 + f04: 16 f4 brtc .+4 ; 0xf0a + f06: 0c 94 2d 09 jmp 0x125a ; 0x125a <__fp_szero> + f0a: 60 e0 ldi r22, 0x00 ; 0 + f0c: 70 e0 ldi r23, 0x00 ; 0 + f0e: 80 e8 ldi r24, 0x80 ; 128 + f10: 9f e3 ldi r25, 0x3F ; 63 + f12: 08 95 ret + f14: 26 f0 brts .+8 ; 0xf1e + f16: 1b 16 cp r1, r27 + f18: 61 1d adc r22, r1 + f1a: 71 1d adc r23, r1 + f1c: 81 1d adc r24, r1 + f1e: 0c 94 a7 08 jmp 0x114e ; 0x114e <__fp_mintl> + f22: 0c 94 c2 08 jmp 0x1184 ; 0x1184 <__fp_mpack> + +00000f26 <__cmpsf2>: + f26: 0e 94 7d 08 call 0x10fa ; 0x10fa <__fp_cmp> + f2a: 08 f4 brcc .+2 ; 0xf2e <__cmpsf2+0x8> + f2c: 81 e0 ldi r24, 0x01 ; 1 + f2e: 08 95 ret + +00000f30 <__divsf3>: + f30: 0e 94 ac 07 call 0xf58 ; 0xf58 <__divsf3x> + f34: 0c 94 e1 08 jmp 0x11c2 ; 0x11c2 <__fp_round> + f38: 0e 94 da 08 call 0x11b4 ; 0x11b4 <__fp_pscB> + f3c: 58 f0 brcs .+22 ; 0xf54 <__divsf3+0x24> + f3e: 0e 94 d3 08 call 0x11a6 ; 0x11a6 <__fp_pscA> + f42: 40 f0 brcs .+16 ; 0xf54 <__divsf3+0x24> + f44: 29 f4 brne .+10 ; 0xf50 <__divsf3+0x20> + f46: 5f 3f cpi r21, 0xFF ; 255 + f48: 29 f0 breq .+10 ; 0xf54 <__divsf3+0x24> + f4a: 0c 94 a1 08 jmp 0x1142 ; 0x1142 <__fp_inf> + f4e: 51 11 cpse r21, r1 + f50: 0c 94 2d 09 jmp 0x125a ; 0x125a <__fp_szero> + f54: 0c 94 d0 08 jmp 0x11a0 ; 0x11a0 <__fp_nan> + +00000f58 <__divsf3x>: + f58: 0e 94 f2 08 call 0x11e4 ; 0x11e4 <__fp_split3> + f5c: 68 f3 brcs .-38 ; 0xf38 <__divsf3+0x8> + +00000f5e <__divsf3_pse>: + f5e: 99 23 and r25, r25 + f60: b1 f3 breq .-20 ; 0xf4e <__divsf3+0x1e> + f62: 55 23 and r21, r21 + f64: 91 f3 breq .-28 ; 0xf4a <__divsf3+0x1a> + f66: 95 1b sub r25, r21 + f68: 55 0b sbc r21, r21 + f6a: bb 27 eor r27, r27 + f6c: aa 27 eor r26, r26 + f6e: 62 17 cp r22, r18 + f70: 73 07 cpc r23, r19 + f72: 84 07 cpc r24, r20 + f74: 38 f0 brcs .+14 ; 0xf84 <__divsf3_pse+0x26> + f76: 9f 5f subi r25, 0xFF ; 255 + f78: 5f 4f sbci r21, 0xFF ; 255 + f7a: 22 0f add r18, r18 + f7c: 33 1f adc r19, r19 + f7e: 44 1f adc r20, r20 + f80: aa 1f adc r26, r26 + f82: a9 f3 breq .-22 ; 0xf6e <__divsf3_pse+0x10> + f84: 35 d0 rcall .+106 ; 0xff0 <__divsf3_pse+0x92> + f86: 0e 2e mov r0, r30 + f88: 3a f0 brmi .+14 ; 0xf98 <__divsf3_pse+0x3a> + f8a: e0 e8 ldi r30, 0x80 ; 128 + f8c: 32 d0 rcall .+100 ; 0xff2 <__divsf3_pse+0x94> + f8e: 91 50 subi r25, 0x01 ; 1 + f90: 50 40 sbci r21, 0x00 ; 0 + f92: e6 95 lsr r30 + f94: 00 1c adc r0, r0 + f96: ca f7 brpl .-14 ; 0xf8a <__divsf3_pse+0x2c> + f98: 2b d0 rcall .+86 ; 0xff0 <__divsf3_pse+0x92> + f9a: fe 2f mov r31, r30 + f9c: 29 d0 rcall .+82 ; 0xff0 <__divsf3_pse+0x92> + f9e: 66 0f add r22, r22 + fa0: 77 1f adc r23, r23 + fa2: 88 1f adc r24, r24 + fa4: bb 1f adc r27, r27 + fa6: 26 17 cp r18, r22 + fa8: 37 07 cpc r19, r23 + faa: 48 07 cpc r20, r24 + fac: ab 07 cpc r26, r27 + fae: b0 e8 ldi r27, 0x80 ; 128 + fb0: 09 f0 breq .+2 ; 0xfb4 <__divsf3_pse+0x56> + fb2: bb 0b sbc r27, r27 + fb4: 80 2d mov r24, r0 + fb6: bf 01 movw r22, r30 + fb8: ff 27 eor r31, r31 + fba: 93 58 subi r25, 0x83 ; 131 + fbc: 5f 4f sbci r21, 0xFF ; 255 + fbe: 3a f0 brmi .+14 ; 0xfce <__divsf3_pse+0x70> + fc0: 9e 3f cpi r25, 0xFE ; 254 + fc2: 51 05 cpc r21, r1 + fc4: 78 f0 brcs .+30 ; 0xfe4 <__divsf3_pse+0x86> + fc6: 0c 94 a1 08 jmp 0x1142 ; 0x1142 <__fp_inf> + fca: 0c 94 2d 09 jmp 0x125a ; 0x125a <__fp_szero> + fce: 5f 3f cpi r21, 0xFF ; 255 + fd0: e4 f3 brlt .-8 ; 0xfca <__divsf3_pse+0x6c> + fd2: 98 3e cpi r25, 0xE8 ; 232 + fd4: d4 f3 brlt .-12 ; 0xfca <__divsf3_pse+0x6c> + fd6: 86 95 lsr r24 + fd8: 77 95 ror r23 + fda: 67 95 ror r22 + fdc: b7 95 ror r27 + fde: f7 95 ror r31 + fe0: 9f 5f subi r25, 0xFF ; 255 + fe2: c9 f7 brne .-14 ; 0xfd6 <__divsf3_pse+0x78> + fe4: 88 0f add r24, r24 + fe6: 91 1d adc r25, r1 + fe8: 96 95 lsr r25 + fea: 87 95 ror r24 + fec: 97 f9 bld r25, 7 + fee: 08 95 ret + ff0: e1 e0 ldi r30, 0x01 ; 1 + ff2: 66 0f add r22, r22 + ff4: 77 1f adc r23, r23 + ff6: 88 1f adc r24, r24 + ff8: bb 1f adc r27, r27 + ffa: 62 17 cp r22, r18 + ffc: 73 07 cpc r23, r19 + ffe: 84 07 cpc r24, r20 + 1000: ba 07 cpc r27, r26 + 1002: 20 f0 brcs .+8 ; 0x100c <__divsf3_pse+0xae> + 1004: 62 1b sub r22, r18 + 1006: 73 0b sbc r23, r19 + 1008: 84 0b sbc r24, r20 + 100a: ba 0b sbc r27, r26 + 100c: ee 1f adc r30, r30 + 100e: 88 f7 brcc .-30 ; 0xff2 <__divsf3_pse+0x94> + 1010: e0 95 com r30 + 1012: 08 95 ret + +00001014 <__fixsfsi>: + 1014: 0e 94 11 08 call 0x1022 ; 0x1022 <__fixunssfsi> + 1018: 68 94 set + 101a: b1 11 cpse r27, r1 + 101c: 0c 94 2d 09 jmp 0x125a ; 0x125a <__fp_szero> + 1020: 08 95 ret + +00001022 <__fixunssfsi>: + 1022: 0e 94 fa 08 call 0x11f4 ; 0x11f4 <__fp_splitA> + 1026: 88 f0 brcs .+34 ; 0x104a <__fixunssfsi+0x28> + 1028: 9f 57 subi r25, 0x7F ; 127 + 102a: 98 f0 brcs .+38 ; 0x1052 <__fixunssfsi+0x30> + 102c: b9 2f mov r27, r25 + 102e: 99 27 eor r25, r25 + 1030: b7 51 subi r27, 0x17 ; 23 + 1032: b0 f0 brcs .+44 ; 0x1060 <__fixunssfsi+0x3e> + 1034: e1 f0 breq .+56 ; 0x106e <__fixunssfsi+0x4c> + 1036: 66 0f add r22, r22 + 1038: 77 1f adc r23, r23 + 103a: 88 1f adc r24, r24 + 103c: 99 1f adc r25, r25 + 103e: 1a f0 brmi .+6 ; 0x1046 <__fixunssfsi+0x24> + 1040: ba 95 dec r27 + 1042: c9 f7 brne .-14 ; 0x1036 <__fixunssfsi+0x14> + 1044: 14 c0 rjmp .+40 ; 0x106e <__fixunssfsi+0x4c> + 1046: b1 30 cpi r27, 0x01 ; 1 + 1048: 91 f0 breq .+36 ; 0x106e <__fixunssfsi+0x4c> + 104a: 0e 94 2c 09 call 0x1258 ; 0x1258 <__fp_zero> + 104e: b1 e0 ldi r27, 0x01 ; 1 + 1050: 08 95 ret + 1052: 0c 94 2c 09 jmp 0x1258 ; 0x1258 <__fp_zero> + 1056: 67 2f mov r22, r23 + 1058: 78 2f mov r23, r24 + 105a: 88 27 eor r24, r24 + 105c: b8 5f subi r27, 0xF8 ; 248 + 105e: 39 f0 breq .+14 ; 0x106e <__fixunssfsi+0x4c> + 1060: b9 3f cpi r27, 0xF9 ; 249 + 1062: cc f3 brlt .-14 ; 0x1056 <__fixunssfsi+0x34> + 1064: 86 95 lsr r24 + 1066: 77 95 ror r23 + 1068: 67 95 ror r22 + 106a: b3 95 inc r27 + 106c: d9 f7 brne .-10 ; 0x1064 <__fixunssfsi+0x42> + 106e: 3e f4 brtc .+14 ; 0x107e <__fixunssfsi+0x5c> + 1070: 90 95 com r25 + 1072: 80 95 com r24 + 1074: 70 95 com r23 + 1076: 61 95 neg r22 + 1078: 7f 4f sbci r23, 0xFF ; 255 + 107a: 8f 4f sbci r24, 0xFF ; 255 + 107c: 9f 4f sbci r25, 0xFF ; 255 + 107e: 08 95 ret + +00001080 <__floatunsisf>: + 1080: e8 94 clt + 1082: 09 c0 rjmp .+18 ; 0x1096 <__floatsisf+0x12> + +00001084 <__floatsisf>: + 1084: 97 fb bst r25, 7 + 1086: 3e f4 brtc .+14 ; 0x1096 <__floatsisf+0x12> + 1088: 90 95 com r25 + 108a: 80 95 com r24 + 108c: 70 95 com r23 + 108e: 61 95 neg r22 + 1090: 7f 4f sbci r23, 0xFF ; 255 + 1092: 8f 4f sbci r24, 0xFF ; 255 + 1094: 9f 4f sbci r25, 0xFF ; 255 + 1096: 99 23 and r25, r25 + 1098: a9 f0 breq .+42 ; 0x10c4 <__floatsisf+0x40> + 109a: f9 2f mov r31, r25 + 109c: 96 e9 ldi r25, 0x96 ; 150 + 109e: bb 27 eor r27, r27 + 10a0: 93 95 inc r25 + 10a2: f6 95 lsr r31 + 10a4: 87 95 ror r24 + 10a6: 77 95 ror r23 + 10a8: 67 95 ror r22 + 10aa: b7 95 ror r27 + 10ac: f1 11 cpse r31, r1 + 10ae: f8 cf rjmp .-16 ; 0x10a0 <__floatsisf+0x1c> + 10b0: fa f4 brpl .+62 ; 0x10f0 <__floatsisf+0x6c> + 10b2: bb 0f add r27, r27 + 10b4: 11 f4 brne .+4 ; 0x10ba <__floatsisf+0x36> + 10b6: 60 ff sbrs r22, 0 + 10b8: 1b c0 rjmp .+54 ; 0x10f0 <__floatsisf+0x6c> + 10ba: 6f 5f subi r22, 0xFF ; 255 + 10bc: 7f 4f sbci r23, 0xFF ; 255 + 10be: 8f 4f sbci r24, 0xFF ; 255 + 10c0: 9f 4f sbci r25, 0xFF ; 255 + 10c2: 16 c0 rjmp .+44 ; 0x10f0 <__floatsisf+0x6c> + 10c4: 88 23 and r24, r24 + 10c6: 11 f0 breq .+4 ; 0x10cc <__floatsisf+0x48> + 10c8: 96 e9 ldi r25, 0x96 ; 150 + 10ca: 11 c0 rjmp .+34 ; 0x10ee <__floatsisf+0x6a> + 10cc: 77 23 and r23, r23 + 10ce: 21 f0 breq .+8 ; 0x10d8 <__floatsisf+0x54> + 10d0: 9e e8 ldi r25, 0x8E ; 142 + 10d2: 87 2f mov r24, r23 + 10d4: 76 2f mov r23, r22 + 10d6: 05 c0 rjmp .+10 ; 0x10e2 <__floatsisf+0x5e> + 10d8: 66 23 and r22, r22 + 10da: 71 f0 breq .+28 ; 0x10f8 <__floatsisf+0x74> + 10dc: 96 e8 ldi r25, 0x86 ; 134 + 10de: 86 2f mov r24, r22 + 10e0: 70 e0 ldi r23, 0x00 ; 0 + 10e2: 60 e0 ldi r22, 0x00 ; 0 + 10e4: 2a f0 brmi .+10 ; 0x10f0 <__floatsisf+0x6c> + 10e6: 9a 95 dec r25 + 10e8: 66 0f add r22, r22 + 10ea: 77 1f adc r23, r23 + 10ec: 88 1f adc r24, r24 + 10ee: da f7 brpl .-10 ; 0x10e6 <__floatsisf+0x62> + 10f0: 88 0f add r24, r24 + 10f2: 96 95 lsr r25 + 10f4: 87 95 ror r24 + 10f6: 97 f9 bld r25, 7 + 10f8: 08 95 ret + +000010fa <__fp_cmp>: + 10fa: 99 0f add r25, r25 + 10fc: 00 08 sbc r0, r0 + 10fe: 55 0f add r21, r21 + 1100: aa 0b sbc r26, r26 + 1102: e0 e8 ldi r30, 0x80 ; 128 + 1104: fe ef ldi r31, 0xFE ; 254 + 1106: 16 16 cp r1, r22 + 1108: 17 06 cpc r1, r23 + 110a: e8 07 cpc r30, r24 + 110c: f9 07 cpc r31, r25 + 110e: c0 f0 brcs .+48 ; 0x1140 <__fp_cmp+0x46> + 1110: 12 16 cp r1, r18 + 1112: 13 06 cpc r1, r19 + 1114: e4 07 cpc r30, r20 + 1116: f5 07 cpc r31, r21 + 1118: 98 f0 brcs .+38 ; 0x1140 <__fp_cmp+0x46> + 111a: 62 1b sub r22, r18 + 111c: 73 0b sbc r23, r19 + 111e: 84 0b sbc r24, r20 + 1120: 95 0b sbc r25, r21 + 1122: 39 f4 brne .+14 ; 0x1132 <__fp_cmp+0x38> + 1124: 0a 26 eor r0, r26 + 1126: 61 f0 breq .+24 ; 0x1140 <__fp_cmp+0x46> + 1128: 23 2b or r18, r19 + 112a: 24 2b or r18, r20 + 112c: 25 2b or r18, r21 + 112e: 21 f4 brne .+8 ; 0x1138 <__fp_cmp+0x3e> + 1130: 08 95 ret + 1132: 0a 26 eor r0, r26 + 1134: 09 f4 brne .+2 ; 0x1138 <__fp_cmp+0x3e> + 1136: a1 40 sbci r26, 0x01 ; 1 + 1138: a6 95 lsr r26 + 113a: 8f ef ldi r24, 0xFF ; 255 + 113c: 81 1d adc r24, r1 + 113e: 81 1d adc r24, r1 + 1140: 08 95 ret + +00001142 <__fp_inf>: + 1142: 97 f9 bld r25, 7 + 1144: 9f 67 ori r25, 0x7F ; 127 + 1146: 80 e8 ldi r24, 0x80 ; 128 + 1148: 70 e0 ldi r23, 0x00 ; 0 + 114a: 60 e0 ldi r22, 0x00 ; 0 + 114c: 08 95 ret + +0000114e <__fp_mintl>: + 114e: 88 23 and r24, r24 + 1150: 71 f4 brne .+28 ; 0x116e <__fp_mintl+0x20> + 1152: 77 23 and r23, r23 + 1154: 21 f0 breq .+8 ; 0x115e <__fp_mintl+0x10> + 1156: 98 50 subi r25, 0x08 ; 8 + 1158: 87 2b or r24, r23 + 115a: 76 2f mov r23, r22 + 115c: 07 c0 rjmp .+14 ; 0x116c <__fp_mintl+0x1e> + 115e: 66 23 and r22, r22 + 1160: 11 f4 brne .+4 ; 0x1166 <__fp_mintl+0x18> + 1162: 99 27 eor r25, r25 + 1164: 0d c0 rjmp .+26 ; 0x1180 <__fp_mintl+0x32> + 1166: 90 51 subi r25, 0x10 ; 16 + 1168: 86 2b or r24, r22 + 116a: 70 e0 ldi r23, 0x00 ; 0 + 116c: 60 e0 ldi r22, 0x00 ; 0 + 116e: 2a f0 brmi .+10 ; 0x117a <__fp_mintl+0x2c> + 1170: 9a 95 dec r25 + 1172: 66 0f add r22, r22 + 1174: 77 1f adc r23, r23 + 1176: 88 1f adc r24, r24 + 1178: da f7 brpl .-10 ; 0x1170 <__fp_mintl+0x22> + 117a: 88 0f add r24, r24 + 117c: 96 95 lsr r25 + 117e: 87 95 ror r24 + 1180: 97 f9 bld r25, 7 + 1182: 08 95 ret + +00001184 <__fp_mpack>: + 1184: 9f 3f cpi r25, 0xFF ; 255 + 1186: 31 f0 breq .+12 ; 0x1194 <__fp_mpack_finite+0xc> + +00001188 <__fp_mpack_finite>: + 1188: 91 50 subi r25, 0x01 ; 1 + 118a: 20 f4 brcc .+8 ; 0x1194 <__fp_mpack_finite+0xc> + 118c: 87 95 ror r24 + 118e: 77 95 ror r23 + 1190: 67 95 ror r22 + 1192: b7 95 ror r27 + 1194: 88 0f add r24, r24 + 1196: 91 1d adc r25, r1 + 1198: 96 95 lsr r25 + 119a: 87 95 ror r24 + 119c: 97 f9 bld r25, 7 + 119e: 08 95 ret + +000011a0 <__fp_nan>: + 11a0: 9f ef ldi r25, 0xFF ; 255 + 11a2: 80 ec ldi r24, 0xC0 ; 192 + 11a4: 08 95 ret + +000011a6 <__fp_pscA>: + 11a6: 00 24 eor r0, r0 + 11a8: 0a 94 dec r0 + 11aa: 16 16 cp r1, r22 + 11ac: 17 06 cpc r1, r23 + 11ae: 18 06 cpc r1, r24 + 11b0: 09 06 cpc r0, r25 + 11b2: 08 95 ret + +000011b4 <__fp_pscB>: + 11b4: 00 24 eor r0, r0 + 11b6: 0a 94 dec r0 + 11b8: 12 16 cp r1, r18 + 11ba: 13 06 cpc r1, r19 + 11bc: 14 06 cpc r1, r20 + 11be: 05 06 cpc r0, r21 + 11c0: 08 95 ret + +000011c2 <__fp_round>: + 11c2: 09 2e mov r0, r25 + 11c4: 03 94 inc r0 + 11c6: 00 0c add r0, r0 + 11c8: 11 f4 brne .+4 ; 0x11ce <__fp_round+0xc> + 11ca: 88 23 and r24, r24 + 11cc: 52 f0 brmi .+20 ; 0x11e2 <__fp_round+0x20> + 11ce: bb 0f add r27, r27 + 11d0: 40 f4 brcc .+16 ; 0x11e2 <__fp_round+0x20> + 11d2: bf 2b or r27, r31 + 11d4: 11 f4 brne .+4 ; 0x11da <__fp_round+0x18> + 11d6: 60 ff sbrs r22, 0 + 11d8: 04 c0 rjmp .+8 ; 0x11e2 <__fp_round+0x20> + 11da: 6f 5f subi r22, 0xFF ; 255 + 11dc: 7f 4f sbci r23, 0xFF ; 255 + 11de: 8f 4f sbci r24, 0xFF ; 255 + 11e0: 9f 4f sbci r25, 0xFF ; 255 + 11e2: 08 95 ret + +000011e4 <__fp_split3>: + 11e4: 57 fd sbrc r21, 7 + 11e6: 90 58 subi r25, 0x80 ; 128 + 11e8: 44 0f add r20, r20 + 11ea: 55 1f adc r21, r21 + 11ec: 59 f0 breq .+22 ; 0x1204 <__fp_splitA+0x10> + 11ee: 5f 3f cpi r21, 0xFF ; 255 + 11f0: 71 f0 breq .+28 ; 0x120e <__fp_splitA+0x1a> + 11f2: 47 95 ror r20 + +000011f4 <__fp_splitA>: + 11f4: 88 0f add r24, r24 + 11f6: 97 fb bst r25, 7 + 11f8: 99 1f adc r25, r25 + 11fa: 61 f0 breq .+24 ; 0x1214 <__fp_splitA+0x20> + 11fc: 9f 3f cpi r25, 0xFF ; 255 + 11fe: 79 f0 breq .+30 ; 0x121e <__fp_splitA+0x2a> + 1200: 87 95 ror r24 + 1202: 08 95 ret + 1204: 12 16 cp r1, r18 + 1206: 13 06 cpc r1, r19 + 1208: 14 06 cpc r1, r20 + 120a: 55 1f adc r21, r21 + 120c: f2 cf rjmp .-28 ; 0x11f2 <__fp_split3+0xe> + 120e: 46 95 lsr r20 + 1210: f1 df rcall .-30 ; 0x11f4 <__fp_splitA> + 1212: 08 c0 rjmp .+16 ; 0x1224 <__fp_splitA+0x30> + 1214: 16 16 cp r1, r22 + 1216: 17 06 cpc r1, r23 + 1218: 18 06 cpc r1, r24 + 121a: 99 1f adc r25, r25 + 121c: f1 cf rjmp .-30 ; 0x1200 <__fp_splitA+0xc> + 121e: 86 95 lsr r24 + 1220: 71 05 cpc r23, r1 + 1222: 61 05 cpc r22, r1 + 1224: 08 94 sec + 1226: 08 95 ret + +00001228 <__fp_trunc>: + 1228: 0e 94 fa 08 call 0x11f4 ; 0x11f4 <__fp_splitA> + 122c: a0 f0 brcs .+40 ; 0x1256 <__fp_trunc+0x2e> + 122e: be e7 ldi r27, 0x7E ; 126 + 1230: b9 17 cp r27, r25 + 1232: 88 f4 brcc .+34 ; 0x1256 <__fp_trunc+0x2e> + 1234: bb 27 eor r27, r27 + 1236: 9f 38 cpi r25, 0x8F ; 143 + 1238: 60 f4 brcc .+24 ; 0x1252 <__fp_trunc+0x2a> + 123a: 16 16 cp r1, r22 + 123c: b1 1d adc r27, r1 + 123e: 67 2f mov r22, r23 + 1240: 78 2f mov r23, r24 + 1242: 88 27 eor r24, r24 + 1244: 98 5f subi r25, 0xF8 ; 248 + 1246: f7 cf rjmp .-18 ; 0x1236 <__fp_trunc+0xe> + 1248: 86 95 lsr r24 + 124a: 77 95 ror r23 + 124c: 67 95 ror r22 + 124e: b1 1d adc r27, r1 + 1250: 93 95 inc r25 + 1252: 96 39 cpi r25, 0x96 ; 150 + 1254: c8 f3 brcs .-14 ; 0x1248 <__fp_trunc+0x20> + 1256: 08 95 ret + +00001258 <__fp_zero>: + 1258: e8 94 clt + +0000125a <__fp_szero>: + 125a: bb 27 eor r27, r27 + 125c: 66 27 eor r22, r22 + 125e: 77 27 eor r23, r23 + 1260: cb 01 movw r24, r22 + 1262: 97 f9 bld r25, 7 + 1264: 08 95 ret + +00001266 <__gesf2>: + 1266: 0e 94 7d 08 call 0x10fa ; 0x10fa <__fp_cmp> + 126a: 08 f4 brcc .+2 ; 0x126e <__gesf2+0x8> + 126c: 8f ef ldi r24, 0xFF ; 255 + 126e: 08 95 ret + +00001270 <__mulsf3>: + 1270: 0e 94 4b 09 call 0x1296 ; 0x1296 <__mulsf3x> + 1274: 0c 94 e1 08 jmp 0x11c2 ; 0x11c2 <__fp_round> + 1278: 0e 94 d3 08 call 0x11a6 ; 0x11a6 <__fp_pscA> + 127c: 38 f0 brcs .+14 ; 0x128c <__mulsf3+0x1c> + 127e: 0e 94 da 08 call 0x11b4 ; 0x11b4 <__fp_pscB> + 1282: 20 f0 brcs .+8 ; 0x128c <__mulsf3+0x1c> + 1284: 95 23 and r25, r21 + 1286: 11 f0 breq .+4 ; 0x128c <__mulsf3+0x1c> + 1288: 0c 94 a1 08 jmp 0x1142 ; 0x1142 <__fp_inf> + 128c: 0c 94 d0 08 jmp 0x11a0 ; 0x11a0 <__fp_nan> + 1290: 11 24 eor r1, r1 + 1292: 0c 94 2d 09 jmp 0x125a ; 0x125a <__fp_szero> + +00001296 <__mulsf3x>: + 1296: 0e 94 f2 08 call 0x11e4 ; 0x11e4 <__fp_split3> + 129a: 70 f3 brcs .-36 ; 0x1278 <__mulsf3+0x8> + +0000129c <__mulsf3_pse>: + 129c: 95 9f mul r25, r21 + 129e: c1 f3 breq .-16 ; 0x1290 <__mulsf3+0x20> + 12a0: 95 0f add r25, r21 + 12a2: 50 e0 ldi r21, 0x00 ; 0 + 12a4: 55 1f adc r21, r21 + 12a6: 62 9f mul r22, r18 + 12a8: f0 01 movw r30, r0 + 12aa: 72 9f mul r23, r18 + 12ac: bb 27 eor r27, r27 + 12ae: f0 0d add r31, r0 + 12b0: b1 1d adc r27, r1 + 12b2: 63 9f mul r22, r19 + 12b4: aa 27 eor r26, r26 + 12b6: f0 0d add r31, r0 + 12b8: b1 1d adc r27, r1 + 12ba: aa 1f adc r26, r26 + 12bc: 64 9f mul r22, r20 + 12be: 66 27 eor r22, r22 + 12c0: b0 0d add r27, r0 + 12c2: a1 1d adc r26, r1 + 12c4: 66 1f adc r22, r22 + 12c6: 82 9f mul r24, r18 + 12c8: 22 27 eor r18, r18 + 12ca: b0 0d add r27, r0 + 12cc: a1 1d adc r26, r1 + 12ce: 62 1f adc r22, r18 + 12d0: 73 9f mul r23, r19 + 12d2: b0 0d add r27, r0 + 12d4: a1 1d adc r26, r1 + 12d6: 62 1f adc r22, r18 + 12d8: 83 9f mul r24, r19 + 12da: a0 0d add r26, r0 + 12dc: 61 1d adc r22, r1 + 12de: 22 1f adc r18, r18 + 12e0: 74 9f mul r23, r20 + 12e2: 33 27 eor r19, r19 + 12e4: a0 0d add r26, r0 + 12e6: 61 1d adc r22, r1 + 12e8: 23 1f adc r18, r19 + 12ea: 84 9f mul r24, r20 + 12ec: 60 0d add r22, r0 + 12ee: 21 1d adc r18, r1 + 12f0: 82 2f mov r24, r18 + 12f2: 76 2f mov r23, r22 + 12f4: 6a 2f mov r22, r26 + 12f6: 11 24 eor r1, r1 + 12f8: 9f 57 subi r25, 0x7F ; 127 + 12fa: 50 40 sbci r21, 0x00 ; 0 + 12fc: 9a f0 brmi .+38 ; 0x1324 <__mulsf3_pse+0x88> + 12fe: f1 f0 breq .+60 ; 0x133c <__mulsf3_pse+0xa0> + 1300: 88 23 and r24, r24 + 1302: 4a f0 brmi .+18 ; 0x1316 <__mulsf3_pse+0x7a> + 1304: ee 0f add r30, r30 + 1306: ff 1f adc r31, r31 + 1308: bb 1f adc r27, r27 + 130a: 66 1f adc r22, r22 + 130c: 77 1f adc r23, r23 + 130e: 88 1f adc r24, r24 + 1310: 91 50 subi r25, 0x01 ; 1 + 1312: 50 40 sbci r21, 0x00 ; 0 + 1314: a9 f7 brne .-22 ; 0x1300 <__mulsf3_pse+0x64> + 1316: 9e 3f cpi r25, 0xFE ; 254 + 1318: 51 05 cpc r21, r1 + 131a: 80 f0 brcs .+32 ; 0x133c <__mulsf3_pse+0xa0> + 131c: 0c 94 a1 08 jmp 0x1142 ; 0x1142 <__fp_inf> + 1320: 0c 94 2d 09 jmp 0x125a ; 0x125a <__fp_szero> + 1324: 5f 3f cpi r21, 0xFF ; 255 + 1326: e4 f3 brlt .-8 ; 0x1320 <__mulsf3_pse+0x84> + 1328: 98 3e cpi r25, 0xE8 ; 232 + 132a: d4 f3 brlt .-12 ; 0x1320 <__mulsf3_pse+0x84> + 132c: 86 95 lsr r24 + 132e: 77 95 ror r23 + 1330: 67 95 ror r22 + 1332: b7 95 ror r27 + 1334: f7 95 ror r31 + 1336: e7 95 ror r30 + 1338: 9f 5f subi r25, 0xFF ; 255 + 133a: c1 f7 brne .-16 ; 0x132c <__mulsf3_pse+0x90> + 133c: fe 2b or r31, r30 + 133e: 88 0f add r24, r24 + 1340: 91 1d adc r25, r1 + 1342: 96 95 lsr r25 + 1344: 87 95 ror r24 + 1346: 97 f9 bld r25, 7 + 1348: 08 95 ret + +0000134a <__divmodhi4>: + 134a: 97 fb bst r25, 7 + 134c: 07 2e mov r0, r23 + 134e: 16 f4 brtc .+4 ; 0x1354 <__divmodhi4+0xa> + 1350: 00 94 com r0 + 1352: 07 d0 rcall .+14 ; 0x1362 <__divmodhi4_neg1> + 1354: 77 fd sbrc r23, 7 + 1356: 09 d0 rcall .+18 ; 0x136a <__divmodhi4_neg2> + 1358: 0e 94 b9 09 call 0x1372 ; 0x1372 <__udivmodhi4> + 135c: 07 fc sbrc r0, 7 + 135e: 05 d0 rcall .+10 ; 0x136a <__divmodhi4_neg2> + 1360: 3e f4 brtc .+14 ; 0x1370 <__divmodhi4_exit> + +00001362 <__divmodhi4_neg1>: + 1362: 90 95 com r25 + 1364: 81 95 neg r24 + 1366: 9f 4f sbci r25, 0xFF ; 255 + 1368: 08 95 ret + +0000136a <__divmodhi4_neg2>: + 136a: 70 95 com r23 + 136c: 61 95 neg r22 + 136e: 7f 4f sbci r23, 0xFF ; 255 + +00001370 <__divmodhi4_exit>: + 1370: 08 95 ret + +00001372 <__udivmodhi4>: + 1372: aa 1b sub r26, r26 + 1374: bb 1b sub r27, r27 + 1376: 51 e1 ldi r21, 0x11 ; 17 + 1378: 07 c0 rjmp .+14 ; 0x1388 <__udivmodhi4_ep> + +0000137a <__udivmodhi4_loop>: + 137a: aa 1f adc r26, r26 + 137c: bb 1f adc r27, r27 + 137e: a6 17 cp r26, r22 + 1380: b7 07 cpc r27, r23 + 1382: 10 f0 brcs .+4 ; 0x1388 <__udivmodhi4_ep> + 1384: a6 1b sub r26, r22 + 1386: b7 0b sbc r27, r23 + +00001388 <__udivmodhi4_ep>: + 1388: 88 1f adc r24, r24 + 138a: 99 1f adc r25, r25 + 138c: 5a 95 dec r21 + 138e: a9 f7 brne .-22 ; 0x137a <__udivmodhi4_loop> + 1390: 80 95 com r24 + 1392: 90 95 com r25 + 1394: bc 01 movw r22, r24 + 1396: cd 01 movw r24, r26 + 1398: 08 95 ret + +0000139a : + 139a: 8f 92 push r8 + 139c: 9f 92 push r9 + 139e: af 92 push r10 + 13a0: bf 92 push r11 + 13a2: cf 92 push r12 + 13a4: df 92 push r13 + 13a6: ef 92 push r14 + 13a8: ff 92 push r15 + 13aa: cf 93 push r28 + 13ac: df 93 push r29 + 13ae: ec 01 movw r28, r24 + 13b0: 68 81 ld r22, Y + 13b2: 79 81 ldd r23, Y+1 ; 0x01 + 13b4: 8a 81 ldd r24, Y+2 ; 0x02 + 13b6: 9b 81 ldd r25, Y+3 ; 0x03 + 13b8: 61 15 cp r22, r1 + 13ba: 71 05 cpc r23, r1 + 13bc: 81 05 cpc r24, r1 + 13be: 91 05 cpc r25, r1 + 13c0: 21 f4 brne .+8 ; 0x13ca + 13c2: 64 e2 ldi r22, 0x24 ; 36 + 13c4: 79 ed ldi r23, 0xD9 ; 217 + 13c6: 8b e5 ldi r24, 0x5B ; 91 + 13c8: 97 e0 ldi r25, 0x07 ; 7 + 13ca: 2d e1 ldi r18, 0x1D ; 29 + 13cc: 33 ef ldi r19, 0xF3 ; 243 + 13ce: 41 e0 ldi r20, 0x01 ; 1 + 13d0: 50 e0 ldi r21, 0x00 ; 0 + 13d2: 0e 94 29 0a call 0x1452 ; 0x1452 <__divmodsi4> + 13d6: 49 01 movw r8, r18 + 13d8: 5a 01 movw r10, r20 + 13da: 9b 01 movw r18, r22 + 13dc: ac 01 movw r20, r24 + 13de: a7 ea ldi r26, 0xA7 ; 167 + 13e0: b1 e4 ldi r27, 0x41 ; 65 + 13e2: 0e 94 48 0a call 0x1490 ; 0x1490 <__muluhisi3> + 13e6: 6b 01 movw r12, r22 + 13e8: 7c 01 movw r14, r24 + 13ea: ac ee ldi r26, 0xEC ; 236 + 13ec: b4 ef ldi r27, 0xF4 ; 244 + 13ee: a5 01 movw r20, r10 + 13f0: 94 01 movw r18, r8 + 13f2: 0e 94 56 0a call 0x14ac ; 0x14ac <__mulohisi3> + 13f6: dc 01 movw r26, r24 + 13f8: cb 01 movw r24, r22 + 13fa: 8c 0d add r24, r12 + 13fc: 9d 1d adc r25, r13 + 13fe: ae 1d adc r26, r14 + 1400: bf 1d adc r27, r15 + 1402: b7 ff sbrs r27, 7 + 1404: 03 c0 rjmp .+6 ; 0x140c + 1406: 01 97 sbiw r24, 0x01 ; 1 + 1408: a1 09 sbc r26, r1 + 140a: b0 48 sbci r27, 0x80 ; 128 + 140c: 88 83 st Y, r24 + 140e: 99 83 std Y+1, r25 ; 0x01 + 1410: aa 83 std Y+2, r26 ; 0x02 + 1412: bb 83 std Y+3, r27 ; 0x03 + 1414: 9f 77 andi r25, 0x7F ; 127 + 1416: df 91 pop r29 + 1418: cf 91 pop r28 + 141a: ff 90 pop r15 + 141c: ef 90 pop r14 + 141e: df 90 pop r13 + 1420: cf 90 pop r12 + 1422: bf 90 pop r11 + 1424: af 90 pop r10 + 1426: 9f 90 pop r9 + 1428: 8f 90 pop r8 + 142a: 08 95 ret + +0000142c : + 142c: 0e 94 cd 09 call 0x139a ; 0x139a + 1430: 08 95 ret + +00001432 : + 1432: 80 e0 ldi r24, 0x00 ; 0 + 1434: 91 e0 ldi r25, 0x01 ; 1 + 1436: 0e 94 cd 09 call 0x139a ; 0x139a + 143a: 08 95 ret + +0000143c : + 143c: a0 e0 ldi r26, 0x00 ; 0 + 143e: b0 e0 ldi r27, 0x00 ; 0 + 1440: 80 93 00 01 sts 0x0100, r24 ; 0x800100 <__DATA_REGION_ORIGIN__> + 1444: 90 93 01 01 sts 0x0101, r25 ; 0x800101 <__DATA_REGION_ORIGIN__+0x1> + 1448: a0 93 02 01 sts 0x0102, r26 ; 0x800102 <__DATA_REGION_ORIGIN__+0x2> + 144c: b0 93 03 01 sts 0x0103, r27 ; 0x800103 <__DATA_REGION_ORIGIN__+0x3> + 1450: 08 95 ret + +00001452 <__divmodsi4>: + 1452: 05 2e mov r0, r21 + 1454: 97 fb bst r25, 7 + 1456: 1e f4 brtc .+6 ; 0x145e <__divmodsi4+0xc> + 1458: 00 94 com r0 + 145a: 0e 94 40 0a call 0x1480 ; 0x1480 <__negsi2> + 145e: 57 fd sbrc r21, 7 + 1460: 07 d0 rcall .+14 ; 0x1470 <__divmodsi4_neg2> + 1462: 0e 94 5b 0a call 0x14b6 ; 0x14b6 <__udivmodsi4> + 1466: 07 fc sbrc r0, 7 + 1468: 03 d0 rcall .+6 ; 0x1470 <__divmodsi4_neg2> + 146a: 4e f4 brtc .+18 ; 0x147e <__divmodsi4_exit> + 146c: 0c 94 40 0a jmp 0x1480 ; 0x1480 <__negsi2> + +00001470 <__divmodsi4_neg2>: + 1470: 50 95 com r21 + 1472: 40 95 com r20 + 1474: 30 95 com r19 + 1476: 21 95 neg r18 + 1478: 3f 4f sbci r19, 0xFF ; 255 + 147a: 4f 4f sbci r20, 0xFF ; 255 + 147c: 5f 4f sbci r21, 0xFF ; 255 + +0000147e <__divmodsi4_exit>: + 147e: 08 95 ret + +00001480 <__negsi2>: + 1480: 90 95 com r25 + 1482: 80 95 com r24 + 1484: 70 95 com r23 + 1486: 61 95 neg r22 + 1488: 7f 4f sbci r23, 0xFF ; 255 + 148a: 8f 4f sbci r24, 0xFF ; 255 + 148c: 9f 4f sbci r25, 0xFF ; 255 + 148e: 08 95 ret + +00001490 <__muluhisi3>: + 1490: 0e 94 7d 0a call 0x14fa ; 0x14fa <__umulhisi3> + 1494: a5 9f mul r26, r21 + 1496: 90 0d add r25, r0 + 1498: b4 9f mul r27, r20 + 149a: 90 0d add r25, r0 + 149c: a4 9f mul r26, r20 + 149e: 80 0d add r24, r0 + 14a0: 91 1d adc r25, r1 + 14a2: 11 24 eor r1, r1 + 14a4: 08 95 ret + +000014a6 <__mulshisi3>: + 14a6: b7 ff sbrs r27, 7 + 14a8: 0c 94 48 0a jmp 0x1490 ; 0x1490 <__muluhisi3> + +000014ac <__mulohisi3>: + 14ac: 0e 94 48 0a call 0x1490 ; 0x1490 <__muluhisi3> + 14b0: 82 1b sub r24, r18 + 14b2: 93 0b sbc r25, r19 + 14b4: 08 95 ret + +000014b6 <__udivmodsi4>: + 14b6: a1 e2 ldi r26, 0x21 ; 33 + 14b8: 1a 2e mov r1, r26 + 14ba: aa 1b sub r26, r26 + 14bc: bb 1b sub r27, r27 + 14be: fd 01 movw r30, r26 + 14c0: 0d c0 rjmp .+26 ; 0x14dc <__udivmodsi4_ep> + +000014c2 <__udivmodsi4_loop>: + 14c2: aa 1f adc r26, r26 + 14c4: bb 1f adc r27, r27 + 14c6: ee 1f adc r30, r30 + 14c8: ff 1f adc r31, r31 + 14ca: a2 17 cp r26, r18 + 14cc: b3 07 cpc r27, r19 + 14ce: e4 07 cpc r30, r20 + 14d0: f5 07 cpc r31, r21 + 14d2: 20 f0 brcs .+8 ; 0x14dc <__udivmodsi4_ep> + 14d4: a2 1b sub r26, r18 + 14d6: b3 0b sbc r27, r19 + 14d8: e4 0b sbc r30, r20 + 14da: f5 0b sbc r31, r21 + +000014dc <__udivmodsi4_ep>: + 14dc: 66 1f adc r22, r22 + 14de: 77 1f adc r23, r23 + 14e0: 88 1f adc r24, r24 + 14e2: 99 1f adc r25, r25 + 14e4: 1a 94 dec r1 + 14e6: 69 f7 brne .-38 ; 0x14c2 <__udivmodsi4_loop> + 14e8: 60 95 com r22 + 14ea: 70 95 com r23 + 14ec: 80 95 com r24 + 14ee: 90 95 com r25 + 14f0: 9b 01 movw r18, r22 + 14f2: ac 01 movw r20, r24 + 14f4: bd 01 movw r22, r26 + 14f6: cf 01 movw r24, r30 + 14f8: 08 95 ret + +000014fa <__umulhisi3>: + 14fa: a2 9f mul r26, r18 + 14fc: b0 01 movw r22, r0 + 14fe: b3 9f mul r27, r19 + 1500: c0 01 movw r24, r0 + 1502: a3 9f mul r26, r19 + 1504: 70 0d add r23, r0 + 1506: 81 1d adc r24, r1 + 1508: 11 24 eor r1, r1 + 150a: 91 1d adc r25, r1 + 150c: b2 9f mul r27, r18 + 150e: 70 0d add r23, r0 + 1510: 81 1d adc r24, r1 + 1512: 11 24 eor r1, r1 + 1514: 91 1d adc r25, r1 + 1516: 08 95 ret + +00001518 <_exit>: + 1518: f8 94 cli + +0000151a <__stop_program>: + 151a: ff cf rjmp .-2 ; 0x151a <__stop_program> diff --git a/final_project/Debug/final_project.map b/final_project/Debug/final_project.map new file mode 100644 index 0000000..9820b6f --- /dev/null +++ b/final_project/Debug/final_project.map @@ -0,0 +1,934 @@ +Archive member included to satisfy reference by file (symbol) + +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3.o) + main.o (__addsf3) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3x.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3.o) (__addsf3x) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(ceil.o) + main.o (ceil) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(cmpsf2.o) + main.o (__ltsf2) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(divsf3.o) + main.o (__divsf3) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(divsf3x.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(divsf3.o) (__divsf3x) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fixsfsi.o) + main.o (__fixsfsi) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fixunssfsi.o) + main.o (__fixunssfsi) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(floatsisf.o) + main.o (__floatunsisf) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_cmp.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(cmpsf2.o) (__fp_cmp) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_inf.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3x.o) (__fp_inf) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_mintl.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(ceil.o) (__fp_mintl) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_mpack.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(ceil.o) (__fp_mpack) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_nan.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3x.o) (__fp_nan) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_pscA.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3x.o) (__fp_pscA) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_pscB.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3x.o) (__fp_pscB) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_round.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3.o) (__fp_round) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_split3.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3x.o) (__fp_split3) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_trunc.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(ceil.o) (__fp_trunc) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_zero.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3x.o) (__fp_zero) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(gesf2.o) + main.o (__gesf2) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(mulsf3.o) + main.o (__mulsf3) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(mulsf3x.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(mulsf3.o) (__mulsf3x) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) + main.o (__divmodhi4) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o (exit) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + main.o (__do_copy_data) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + main.o (__do_clear_bss) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) (__udivmodhi4) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(rand.o) + main.o (rand) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodsi4.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(rand.o) (__divmodsi4) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_negsi2.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodsi4.o) (__negsi2) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_muluhisi3.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(rand.o) (__muluhisi3) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_mulshisi3.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(rand.o) (__mulohisi3) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodsi4.o) (__udivmodsi4) +c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_umulhisi3.o) + c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_muluhisi3.o) (__umulhisi3) + +Allocating common symbols +Common symbol size file + +seconds_remaining 0x2 main.o + +Discarded input sections + + .data 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o + .bss 0x00000000 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o + .text 0x00000000 0x0 clock.o + .data 0x00000000 0x0 clock.o + .bss 0x00000000 0x0 clock.o + .text 0x00000000 0x0 serial.o + .data 0x00000000 0x0 serial.o + .bss 0x00000000 0x0 serial.o + .text.usart_rxt + 0x00000000 0x26 serial.o + .text 0x00000000 0x0 main.o + .data 0x00000000 0x0 main.o + .bss 0x00000000 0x0 main.o + .text.test_timer + 0x00000000 0x2a main.o + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3x.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3x.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3x.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(ceil.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(ceil.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(ceil.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(cmpsf2.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(cmpsf2.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(cmpsf2.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(divsf3.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(divsf3.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(divsf3.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(divsf3x.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(divsf3x.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(divsf3x.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fixsfsi.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fixsfsi.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fixsfsi.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fixunssfsi.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fixunssfsi.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fixunssfsi.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(floatsisf.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(floatsisf.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(floatsisf.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_cmp.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_cmp.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_cmp.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_inf.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_inf.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_inf.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_mintl.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_mintl.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_mintl.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_mpack.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_mpack.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_mpack.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_nan.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_nan.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_nan.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_pscA.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_pscA.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_pscA.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_pscB.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_pscB.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_pscB.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_round.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_round.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_round.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_split3.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_split3.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_split3.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_trunc.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_trunc.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_trunc.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_zero.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_zero.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_zero.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(gesf2.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(gesf2.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(gesf2.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(mulsf3.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(mulsf3.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(mulsf3.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(mulsf3x.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(mulsf3x.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(mulsf3x.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(rand.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(rand.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodsi4.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodsi4.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodsi4.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodsi4.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodsi4.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodsi4.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodsi4.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodsi4.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodsi4.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_negsi2.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_negsi2.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_negsi2.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_negsi2.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_negsi2.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_negsi2.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_negsi2.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_negsi2.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_negsi2.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_muluhisi3.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_muluhisi3.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_muluhisi3.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_muluhisi3.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_muluhisi3.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_muluhisi3.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_muluhisi3.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_muluhisi3.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_muluhisi3.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_mulshisi3.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_mulshisi3.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_mulshisi3.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_mulshisi3.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_mulshisi3.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_mulshisi3.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_mulshisi3.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_mulshisi3.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_mulshisi3.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + .text.libgcc.mul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + .text 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_umulhisi3.o) + .data 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_umulhisi3.o) + .bss 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_umulhisi3.o) + .text.libgcc.div + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_umulhisi3.o) + .text.libgcc 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_umulhisi3.o) + .text.libgcc.prologue + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_umulhisi3.o) + .text.libgcc.builtins + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_umulhisi3.o) + .text.libgcc.fmul + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_umulhisi3.o) + .text.libgcc.fixed + 0x00000000 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_umulhisi3.o) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00008000 xr +data 0x00800100 0x00000800 rw !x +eeprom 0x00810000 0x00000400 rw !x +fuse 0x00820000 0x00000003 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +user_signatures 0x00850000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o +LOAD clock.o +LOAD serial.o +LOAD main.o +START GROUP +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a +END GROUP +START GROUP +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a +LOAD c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a +LOAD C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5\libatmega324pb.a +END GROUP + [0x00000000] __TEXT_REGION_ORIGIN__ = DEFINED (__TEXT_REGION_ORIGIN__)?__TEXT_REGION_ORIGIN__:0x0 + [0x00800100] __DATA_REGION_ORIGIN__ = DEFINED (__DATA_REGION_ORIGIN__)?__DATA_REGION_ORIGIN__:0x800060 + [0x00008000] __TEXT_REGION_LENGTH__ = DEFINED (__TEXT_REGION_LENGTH__)?__TEXT_REGION_LENGTH__:0x20000 + [0x00000800] __DATA_REGION_LENGTH__ = DEFINED (__DATA_REGION_LENGTH__)?__DATA_REGION_LENGTH__:0xffa0 + [0x00000400] __EEPROM_REGION_LENGTH__ = DEFINED (__EEPROM_REGION_LENGTH__)?__EEPROM_REGION_LENGTH__:0x10000 + [0x00000003] __FUSE_REGION_LENGTH__ = DEFINED (__FUSE_REGION_LENGTH__)?__FUSE_REGION_LENGTH__:0x400 + 0x00000400 __LOCK_REGION_LENGTH__ = DEFINED (__LOCK_REGION_LENGTH__)?__LOCK_REGION_LENGTH__:0x400 + 0x00000400 __SIGNATURE_REGION_LENGTH__ = DEFINED (__SIGNATURE_REGION_LENGTH__)?__SIGNATURE_REGION_LENGTH__:0x400 + 0x00000400 __USER_SIGNATURE_REGION_LENGTH__ = DEFINED (__USER_SIGNATURE_REGION_LENGTH__)?__USER_SIGNATURE_REGION_LENGTH__:0x400 + +.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 0x00000000 0x151c + *(.vectors) + .vectors 0x00000000 0xcc C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o + 0x00000000 __vector_default + 0x00000000 __vectors + *(.vectors) + *(.progmem.gcc*) + 0x000000cc . = ALIGN (0x2) + 0x000000cc __trampolines_start = . + *(.trampolines) + .trampolines 0x000000cc 0x0 linker stubs + *(.trampolines*) + 0x000000cc __trampolines_end = . + *libprintf_flt.a:*(.progmem.data) + *libc.a:*(.progmem.data) + *(.progmem*) + 0x000000cc . = ALIGN (0x2) + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x000000cc __ctors_start = . + *(.ctors) + 0x000000cc __ctors_end = . + 0x000000cc __dtors_start = . + *(.dtors) + 0x000000cc __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x000000cc 0x0 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o + 0x000000cc __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x000000cc 0xc C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x000000d8 0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_copy_data.o) + 0x000000d8 __do_copy_data + .init4 0x000000ee 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_clear_bss.o) + 0x000000ee __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x000000fe 0x8 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o + *(.init9) + *(.text) + .text 0x00000106 0x4 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o + 0x00000106 __vector_38 + 0x00000106 __vector_22 + 0x00000106 __vector_28 + 0x00000106 __vector_1 + 0x00000106 __vector_32 + 0x00000106 __vector_34 + 0x00000106 __vector_24 + 0x00000106 __vector_12 + 0x00000106 __vector_46 + 0x00000106 __bad_interrupt + 0x00000106 __vector_6 + 0x00000106 __vector_31 + 0x00000106 __vector_35 + 0x00000106 __vector_39 + 0x00000106 __vector_3 + 0x00000106 __vector_23 + 0x00000106 __vector_30 + 0x00000106 __vector_45 + 0x00000106 __vector_25 + 0x00000106 __vector_11 + 0x00000106 __vector_17 + 0x00000106 __vector_19 + 0x00000106 __vector_7 + 0x00000106 __vector_49 + 0x00000106 __vector_41 + 0x00000106 __vector_43 + 0x00000106 __vector_27 + 0x00000106 __vector_5 + 0x00000106 __vector_33 + 0x00000106 __vector_47 + 0x00000106 __vector_37 + 0x00000106 __vector_4 + 0x00000106 __vector_44 + 0x00000106 __vector_9 + 0x00000106 __vector_2 + 0x00000106 __vector_21 + 0x00000106 __vector_15 + 0x00000106 __vector_36 + 0x00000106 __vector_29 + 0x00000106 __vector_40 + 0x00000106 __vector_8 + 0x00000106 __vector_26 + 0x00000106 __vector_48 + 0x00000106 __vector_14 + 0x00000106 __vector_10 + 0x00000106 __vector_50 + 0x00000106 __vector_16 + 0x00000106 __vector_18 + 0x00000106 __vector_20 + 0x00000106 __vector_42 + 0x0000010a . = ALIGN (0x2) + *(.text.*) + .text.timer_init_ctc + 0x0000010a 0x2c clock.o + 0x0000010a timer_init_ctc + .text.start_timer + 0x00000136 0x60 clock.o + 0x00000136 start_timer + .text.stop_timer + 0x00000196 0x40 clock.o + 0x00000196 stop_timer + .text.timer_done + 0x000001d6 0x28 clock.o + 0x000001d6 timer_done + .text.usart_init + 0x000001fe 0x52 serial.o + 0x000001fe usart_init + .text.usart_txt + 0x00000250 0x48 serial.o + 0x00000250 usart_txt + .text.usart_rxt_blocking + 0x00000298 0x24 serial.o + 0x00000298 usart_rxt_blocking + .text.usart_txstr + 0x000002bc 0x58 serial.o + 0x000002bc usart_txstr + .text.get_button + 0x00000314 0x32 main.o + 0x00000314 get_button + .text.display_element + 0x00000346 0x1b2 main.o + 0x00000346 display_element + .text.init_io 0x000004f8 0x4a main.o + 0x000004f8 init_io + .text.main 0x00000542 0x4a8 main.o + 0x00000542 main + .text.__vector_13 + 0x000009ea 0x78 main.o + 0x000009ea __vector_13 + .text.correct_beep + 0x00000a62 0x2c main.o + 0x00000a62 correct_beep + .text.incorrect_beep + 0x00000a8e 0x13c main.o + 0x00000a8e incorrect_beep + .text.win 0x00000bca 0x40 main.o + 0x00000bca win + .text.loose 0x00000c0a 0x40 main.o + 0x00000c0a loose + .text.beep 0x00000c4a 0x1d4 main.o + 0x00000c4a beep + .text.avr-libc.fplib + 0x00000e1e 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3.o) + 0x00000e1e __subsf3 + 0x00000e20 __addsf3 + .text.avr-libc.fplib + 0x00000e2c 0xcc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(addsf3x.o) + 0x00000e4e __addsf3x + .text.avr-libc.fplib + 0x00000ef8 0x2e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(ceil.o) + 0x00000ef8 ceil + .text.avr-libc.fplib + 0x00000f26 0xa c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(cmpsf2.o) + 0x00000f26 __nesf2 + 0x00000f26 __eqsf2 + 0x00000f26 __cmpsf2 + 0x00000f26 __ltsf2 + 0x00000f26 __lesf2 + .text.avr-libc.fplib + 0x00000f30 0x8 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(divsf3.o) + 0x00000f30 __divsf3 + .text.avr-libc.fplib + 0x00000f38 0xdc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(divsf3x.o) + 0x00000f58 __divsf3x + 0x00000f5e __divsf3_pse + .text.avr-libc.fplib + 0x00001014 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fixsfsi.o) + 0x00001014 __fixsfsi + .text.avr-libc.fplib + 0x00001022 0x5e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fixunssfsi.o) + 0x00001022 __fixunssfsi + .text.avr-libc.fplib + 0x00001080 0x7a c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(floatsisf.o) + 0x00001080 __floatunsisf + 0x00001084 __floatsisf + .text.avr-libc.fplib + 0x000010fa 0x48 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_cmp.o) + 0x000010fa __fp_cmp + .text.avr-libc.fplib + 0x00001142 0xc c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_inf.o) + 0x00001142 __fp_inf + .text.avr-libc.fplib + 0x0000114e 0x36 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_mintl.o) + 0x0000114e __fp_mintl + .text.avr-libc.fplib + 0x00001184 0x1c c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_mpack.o) + 0x00001184 __fp_mpack + 0x00001188 __fp_mpack_finite + .text.avr-libc.fplib + 0x000011a0 0x6 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_nan.o) + 0x000011a0 __fp_nan + .text.avr-libc.fplib + 0x000011a6 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_pscA.o) + 0x000011a6 __fp_pscA + .text.avr-libc.fplib + 0x000011b4 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_pscB.o) + 0x000011b4 __fp_pscB + .text.avr-libc.fplib + 0x000011c2 0x22 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_round.o) + 0x000011c2 __fp_round + .text.avr-libc.fplib + 0x000011e4 0x44 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_split3.o) + 0x000011e4 __fp_split3 + 0x000011f4 __fp_splitA + .text.avr-libc.fplib + 0x00001228 0x30 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_trunc.o) + 0x00001228 __fp_trunc + .text.avr-libc.fplib + 0x00001258 0xe c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(fp_zero.o) + 0x00001258 __fp_zero + 0x0000125a __fp_szero + .text.avr-libc.fplib + 0x00001266 0xa c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(gesf2.o) + 0x00001266 __gesf2 + 0x00001266 __gtsf2 + .text.avr-libc.fplib + 0x00001270 0x8 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(mulsf3.o) + 0x00001270 __mulsf3 + .text.avr-libc.fplib + 0x00001278 0xd2 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libm.a(mulsf3x.o) + 0x00001296 __mulsf3x + 0x0000129c __mulsf3_pse + .text.libgcc.div + 0x0000134a 0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodhi4.o) + 0x0000134a _div + 0x0000134a __divmodhi4 + .text.libgcc.div + 0x00001372 0x28 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodhi4.o) + 0x00001372 __udivmodhi4 + .text.avr-libc + 0x0000139a 0xb8 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(rand.o) + 0x0000142c rand_r + 0x00001432 rand + 0x0000143c srand + .text.libgcc.div + 0x00001452 0x2e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_divmodsi4.o) + 0x00001452 __divmodsi4 + .text.libgcc.div + 0x00001480 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_negsi2.o) + 0x00001480 __negsi2 + .text.libgcc.mul + 0x00001490 0x16 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_muluhisi3.o) + 0x00001490 __muluhisi3 + .text.libgcc.mul + 0x000014a6 0x10 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_mulshisi3.o) + 0x000014a6 __mulshisi3 + 0x000014ac __mulohisi3 + .text.libgcc.div + 0x000014b6 0x44 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_udivmodsi4.o) + 0x000014b6 __udivmodsi4 + .text.libgcc.mul + 0x000014fa 0x1e c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_umulhisi3.o) + 0x000014fa __umulhisi3 + 0x00001518 . = ALIGN (0x2) + *(.fini9) + .fini9 0x00001518 0x0 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + 0x00001518 _exit + 0x00001518 exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x00001518 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/avr5\libgcc.a(_exit.o) + *(.fini0) + 0x0000151c _etext = . + +.data 0x00800100 0xd8 load address 0x0000151c + 0x00800100 PROVIDE (__data_start, .) + *(.data) + .data 0x00800100 0x4 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(rand.o) + *(.data*) + *(.gnu.linkonce.d*) + *(.rodata) + .rodata 0x00800104 0xd4 main.o + *(.rodata*) + *(.gnu.linkonce.r*) + 0x008001d8 . = ALIGN (0x2) + 0x008001d8 _edata = . + 0x008001d8 PROVIDE (__data_end, .) + +.bss 0x008001d8 0x2 + 0x008001d8 PROVIDE (__bss_start, .) + *(.bss) + *(.bss*) + *(COMMON) + COMMON 0x008001d8 0x2 main.o + 0x008001d8 seconds_remaining + 0x008001da PROVIDE (__bss_end, .) + 0x0000151c __data_load_start = LOADADDR (.data) + 0x000015f4 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x008001da 0x0 + [!provide] PROVIDE (__noinit_start, .) + *(.noinit*) + [!provide] PROVIDE (__noinit_end, .) + 0x008001da _end = . + [!provide] PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.user_signatures + *(.user_signatures*) + +.stab + *(.stab) + +.stabstr + *(.stabstr) + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment 0x00000000 0x30 + *(.comment) + .comment 0x00000000 0x30 clock.o + 0x31 (size before relaxing) + .comment 0x00000030 0x31 serial.o + .comment 0x00000030 0x31 main.o + .comment 0x00000030 0x31 c:/program files (x86)/atmel/studio/7.0/toolchain/avr8/avr8-gnu-toolchain/bin/../lib/gcc/avr/5.4.0/../../../../avr/lib/avr5\libc.a(rand.o) + +.note.gnu.avr.deviceinfo + 0x00000000 0x40 + .note.gnu.avr.deviceinfo + 0x00000000 0x40 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o + +.note.gnu.build-id + *(.note.gnu.build-id) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0xe8 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x38 clock.o + .debug_aranges + 0x00000038 0x40 serial.o + .debug_aranges + 0x00000078 0x70 main.o + +.debug_pubnames + *(.debug_pubnames) + +.debug_info 0x00000000 0x1249 + *(.debug_info .gnu.linkonce.wi.*) + .debug_info 0x00000000 0x9bb C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o + .debug_info 0x000009bb 0xd7 clock.o + .debug_info 0x00000a92 0x141 serial.o + .debug_info 0x00000bd3 0x676 main.o + +.debug_abbrev 0x00000000 0xc72 + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x934 C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o + .debug_abbrev 0x00000934 0x67 clock.o + .debug_abbrev 0x0000099b 0xf2 serial.o + .debug_abbrev 0x00000a8d 0x1e5 main.o + +.debug_line 0x00000000 0xb1b + *(.debug_line .debug_line.* .debug_line_end) + .debug_line 0x00000000 0x1ca C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o + .debug_line 0x000001ca 0x146 clock.o + .debug_line 0x00000310 0x181 serial.o + .debug_line 0x00000491 0x68a main.o + +.debug_frame 0x00000000 0x328 + *(.debug_frame) + .debug_frame 0x00000000 0x94 clock.o + .debug_frame 0x00000094 0xb4 serial.o + .debug_frame 0x00000148 0x1e0 main.o + +.debug_str 0x00000000 0x6ed + *(.debug_str) + .debug_str 0x00000000 0x35a C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/gcc/dev/atmega324pb/avr5/crtatmega324pb.o + .debug_str 0x0000035a 0x164 clock.o + 0x198 (size before relaxing) + .debug_str 0x000004be 0xa3 serial.o + 0x1c2 (size before relaxing) + .debug_str 0x00000561 0x18c main.o + 0x305 (size before relaxing) + +.debug_loc 0x00000000 0x611 + *(.debug_loc) + .debug_loc 0x00000000 0xec clock.o + .debug_loc 0x000000ec 0x14e serial.o + .debug_loc 0x0000023a 0x3d7 main.o + +.debug_macinfo + *(.debug_macinfo) + +.debug_weaknames + *(.debug_weaknames) + +.debug_funcnames + *(.debug_funcnames) + +.debug_typenames + *(.debug_typenames) + +.debug_varnames + *(.debug_varnames) + +.debug_pubtypes + *(.debug_pubtypes) + +.debug_ranges 0x00000000 0xb8 + *(.debug_ranges) + .debug_ranges 0x00000000 0x28 clock.o + .debug_ranges 0x00000028 0x30 serial.o + .debug_ranges 0x00000058 0x60 main.o + +.debug_macro + *(.debug_macro) +OUTPUT(final_project.elf elf32-avr) +LOAD linker stubs diff --git a/final_project/Debug/final_project.srec b/final_project/Debug/final_project.srec new file mode 100644 index 0000000..b5a2ee4 --- /dev/null +++ b/final_project/Debug/final_project.srec @@ -0,0 +1,354 @@ +S015000066696E616C5F70726F6A6563742E73726563AF +S11300000C9466000C9483000C9483000C9483007D +S11300100C9483000C9483000C9483000C94830050 +S11300200C9483000C9483000C9483000C94830040 +S11300300C9483000C94F5040C9483000C948300BA +S11300400C9483000C9483000C9483000C94830020 +S11300500C9483000C9483000C9483000C94830010 +S11300600C9483000C9483000C9483000C94830000 +S11300700C9483000C9483000C9483000C948300F0 +S11300800C9483000C9483000C9483000C948300E0 +S11300900C9483000C9483000C9483000C948300D0 +S11300A00C9483000C9483000C9483000C948300C0 +S11300B00C9483000C9483000C9483000C948300B0 +S11300C00C9483000C9483000C94830011241FBEB1 +S11300D0CFEFD8E0DEBFCDBF11E0A0E0B1E0ECE1AE +S11300E0F5E102C005900D92A83DB107D9F721E0D2 +S11300F0A8EDB1E001C01D92AA3DB207E1F70E944C +S1130100A1020C948C0A0C940000CF93DF93CDB71A +S1130110DEB780E890E0FC01108281E890E028E0FE +S1130120FC01208384E890E0FC011182108200002D +S1130130DF91CF910895CF93DF93CDB7DEB784E8F5 +S113014090E0FC011182108288E890E029E03DE310 +S1130150FC013183208386E390E0FC018081882FB9 +S113016090E082709927892B49F086E390E026E39A +S113017030E0F90120812260FC01208381E890E0D5 +S113018021E830E0F90120812560FC012083000092 +S1130190DF91CF910895CF93DF93CDB7DEB786E398 +S11301A090E0FC018081882F90E082709927892B50 +S11301B049F086E390E026E330E0F90120812260F3 +S11301C0FC0120838FE690E028E0FC0120830000FE +S11301D0DF91CF910895CF93DF93CDB7DEB786E358 +S11301E090E0FC018081882F90E08270992721E0C3 +S11301F0892B09F420E0822FDF91CF910895CF93CA +S1130200DF9300D0CDB7DEB787E690E09A83898389 +S113021088EC90E0FC01108289EC90E028E1FC017C +S113022020838AEC90E026E0FC01208389819A8176 +S11302308DEC90E0FC0110828CEC90E029813A81F5 +S1130240FC01208300000F900F90DF91CF9108955F +S1130250CF93DF931F92CDB7DEB789838EEC90E006 +S11302602981FC012083000088EC90E0FC0180815E +S1130270882F90E080749927892BB1F388EC90E063 +S113028028EC30E0F90120812064FC012083000087 +S11302900F90DF91CF910895CF93DF93CDB7DEB761 +S11302A0000088EC90E0FC0180818823D4F78EEC78 +S11302B090E0FC018081DF91CF910895CF93DF938B +S11302C000D000D0CDB7DEB79C838B831A8219820D +S11302D00FC089819A812B813C81820F931FFC017D +S11302E080810E94280189819A8101969A83898359 +S11302F089819A812B813C81820F931FFC0180812B +S1130300882339F700000F900F900F900F90DF9122 +S1130310CF910895CF93DF93CDB7DEB78CE290E011 +S1130320FC018081882F90E080749927892B11F437 +S113033084E006C080E290E0FC0180818095837FA8 +S1130340DF91CF910895CF93DF93CDB7DEB7639755 +S11303500FB6F894DEBF0FBECDBF898B7B8B6A8B43 +S11303601A8219828989882F90E084709927892BB1 +S113037011F080E289838989837F8A838BE290E00C +S11303802BE230E0F90130812A812327FC0120830C +S11303908EE290E02EE230E0F901308129812327BA +S11303A0FC01208320E030E040E85EE364EA70ED85 +S11303B084EA93E40E9425064A895B8928EE33E0A7 +S11303C0429FC001439F900D529F900D1124CC0178 +S11303D0A0E0B0E0BC01CD010E944008DC01CB01EB +S11303E08B839C83AD83BE8320E030E04AE755E4F1 +S11303F06B817C818D819E810E943809DC01CB0157 +S11304008F839887A987BA8720E030E040E85FE3CC +S11304106F81788589859A850E94930788232CF4B7 +S113042081E090E09C878B873FC020E03FEF4FE75F +S113043057E46F81788589859A850E943309181657 +S11304404CF520E030E040E251E46B817C818D8109 +S11304509E810E943809DC01CB01BC01CD010E94C0 +S11304601108DC01CB019C878B870FC080E991E0E8 +S11304709E878D878D859E850197F1F79E878D8751 +S11304808B859C8501979C878B878B859C85892B85 +S113049069F714C06F81788589859A850E9411084F +S11304A0DC01CB019C878B878B859C85988B8F8700 +S11304B08F8598890197F1F7988B8F878BE290E06D +S11304C02BE230E0F90130812A812327FC012083CB +S11304D08EE290E02EE230E0F90130812981232779 +S11304E0FC012083000063960FB6F894DEBF0FBEB4 +S11304F0CDBFDF91CF910895CF93DF93CDB7DEB712 +S113050081E290E0FC01108282E290E02FEFFC0196 +S113051020838AE290E02FEFFC0120838BE290E0BD +S11305202FEFFC0120838DE290E020E3FC01208387 +S11305308EE290E02FEFFC0120830000DF91CF9149 +S113054008958F929F92AF92BF92CF92DF92EF92D3 +S1130550FF92CF93DF93CDB7DEB7E3970FB6F8944E +S1130560DEBF0FBECDBFF8940E9485000E947C02BE +S11305700E94FF001A82198280E191E00E945E01CC +S113058007C00E944C01882F90E0C0979A8389830A +S113059089819A810497ACF789819A811816190682 +S11305A084F716C289819A8182309105D9F083300B +S11305B0910569F1019709F03FC083E090E09E83C3 +S11305C08D8383E090E09C838B8385E090E0988723 +S11305D08F8383E090E09A87898785E090E09C8709 +S11305E08B872AC084E090E09E838D8382E090E034 +S11305F09C838B8387E090E098878F8383E090E0EF +S11306009A8789878AE090E09C878B8715C085E06C +S113061090E09E838D8381E090E09C838B838AE0CD +S113062090E098878F8385E090E09A8789878FE0B0 +S113063090E09C878B8700001E861D86188A1F8683 +S11306401A8A198A7FC189859A85092E000CAA0BFA +S1130650BB0BBC01CD010E9442086B017C012B85C0 +S11306603C8589859A85A901481B590BCA01092E25 +S1130670000CAA0BBB0BBC01CD010E9442084B012C +S11306805C018D819E810197092E000CAA0BBB0B86 +S1130690BC01CD010E944208DC01CB019C01AD01EB +S11306A0C501B4010E949807DC01CB014C015D0136 +S11306B089899A89092E000CAA0BBB0BBC01CD01B8 +S11306C00E944208DC01CB019C01AD01C501B401CB +S11306D00E943809DC01CB01BC01CD010E947C07DA +S11306E0DC01CB019C01AD01C701B6010E941007DA +S11306F0DC01CB01BC01CD010E940A08DC01CB0165 +S11307009B8F8A8F1C8A1B8A37C00E94190A27E094 +S113071030E0B9010E94A5098D8B8D89833011F4D5 +S113072087E08D8B8D89282F30E081E090E002C036 +S1130730880F991F2A95E2F78C8F8AE00E9428017E +S11307408D89805D0E9428018AE00E9428019E0113 +S1130750215D3F4F8B899C89820F931F2C8DFC0157 +S113076020838B819C81BC018C8D0E94A3018B8989 +S11307709C8901969C8B8B8B2B893C898A8D9B8DC4 +S11307802817390714F28F8198859093D9018093A3 +S1130790D8010E949B00198E188EC7C086E691E08E +S11307A00E945E010E94EB008823C1F08091D80171 +S11307B09091D90101979093D9018093D8010E9417 +S11307C0CB000E949B002DEC3CEC4CEC5DE364EA16 +S11307D070ED82E893E40E94250606C00E948A0117 +S11307E0882F90E09F8B8E8B8E899F89892B39F47B +S11307F08091D8019091D901181619069CF280E0D5 +S113080090E0AAE7B3E489A39AA3ABA3BCA320E036 +S113081030E04AE755E469A17AA18BA19CA10E942A +S11308203809DC01CB018DA39EA3AFA3B8A720E0B8 +S113083030E040E85FE36DA17EA18FA198A50E94FE +S1130840930788232CF481E090E09AA789A73FC0FE +S113085020E03FEF4FE757E46DA17EA18FA198A55B +S11308600E94330918164CF520E030E040E251E4D0 +S113087069A17AA18BA19CA10E943809DC01CB015A +S1130880BC01CD010E941108DC01CB019AA789A704 +S11308900FC080E991E09CA78BA78BA59CA501972D +S11308A0F1F79CA78BA789A59AA501979AA789A771 +S11308B089A59AA5892B69F714C06DA17EA18FA182 +S11308C098A50E941108DC01CB019AA789A789A5E4 +S11308D09AA59EA78DA78DA59EA50197F1F79EA722 +S11308E08DA78D859E8501969E878D879E01215DAE +S11308F03F4F888D998D820F931FFC018081282F93 +S113090030E08E899F892817390741F48F859889AB +S11309100196988B8F870E94310502C00E9447057B +S1130920888D998D0196998F888F288D398D8A8D20 +S11309309B8D281739070CF431CF89899A89019640 +S11309409A8B898B29893A898D819E812817390749 +S11309500CF479CE8F859889092E000CAA0BBB0B59 +S1130960BC01CD010E9442086B017C018D859E85EE +S1130970092E000CAA0BBB0BBC01CD010E9442083E +S1130980DC01CB019C01AD01C701B6010E949807AF +S1130990DC01CB018D8F9E8FAF8FB8A32DEC3CEC87 +S11309A04CE45FE36D8D7E8D8F8D98A10E94330999 +S11309B0882354F089819A8101969A83898380E8F7 +S11309C091E00E945E0104C00E940506000005C07B +S11309D089819A8103970CF4E5CD89819A810397E3 +S11309E00CF4C8CD0E94E505C5CD1F920F9200906E +S11309F05F000F9211242F933F934F935F936F9354 +S1130A007F938F939F93AF93BF93EF93FF93CF9372 +S1130A10DF93CDB7DEB78091D8019091D9019C01C5 +S1130A20215031093093D9012093D80118161906A1 +S1130A301CF00E942506FDCF0000DF91CF91FF91AD +S1130A40EF91BF91AF919F918F917F916F915F9142 +S1130A504F913F912F910F9000925F000F901F9044 +S1130A601895CF93DF93CDB7DEB78DE891E00E9460 +S1130A705E012DEC3CEC4CEC5DE360E070E08CED51 +S1130A8093E40E9425060000DF91CF910895CF934F +S1130A90DF93CDB7DEB72E970FB6F894DEBF0FBE47 +S1130AA0CDBF88E991E00E945E012DEC3CEC4CE462 +S1130AB05EE36CE57FEC82E893E40E94250680E027 +S1130AC090E0A8ECB1E489839A83AB83BC8320E0F3 +S1130AD030E04AE755E469817A818B819C810E94E8 +S1130AE03809DC01CB018D839E83AF83B88720E076 +S1130AF030E040E85FE36D817E818F8198850E94BC +S1130B00930788232CF481E090E09A8789873FC07B +S1130B1020E03FEF4FE757E46D817E818F81988518 +S1130B200E94330918164CF520E030E040E251E40D +S1130B3069817A818B819C810E943809DC01CB0117 +S1130B40BC01CD010E941108DC01CB019A87898781 +S1130B500FC080E991E09C878B878B859C850197EA +S1130B60F1F79C878B8789859A8501979A8789876E +S1130B7089859A85892B69F714C06D817E818F815F +S1130B8098850E941108DC01CB019A8789878985A1 +S1130B909A859E878D878D859E850197F1F79E871F +S1130BA08D872DEC3CEC4CE45EE36CE57FEC82E855 +S1130BB093E40E94250600002E960FB6F894DEBF3B +S1130BC00FBECDBFDF91CF910895CF93DF93CDB703 +S1130BD0DEB78BEA91E00E945E0120E030E040E065 +S1130BE05FE360E070E083E893E40E94250620E080 +S1130BF030E040E05FE360E070E084EC93E40E9466 +S1130C0025060000DF91CF910895CF93DF93CDB7F0 +S1130C10DEB780EC91E00E945E0120E030E040E02D +S1130C205FE360E070E085EA93E40E94250620E03B +S1130C3030E040E05FE360E070E083E993E40E9429 +S1130C4025060000DF91CF910895CF93DF93CDB7B0 +S1130C50DEB76E970FB6F894DEBF0FBECDBF6F8BB5 +S1130C60788F898F9A8F2B8F3C8F4D8F5E8F2F8932 +S1130C70388D498D5A8D60E070E080E89FE30E94D2 +S1130C809807DC01CB0120E030E040E050E4BC01F7 +S1130C90CD010E949807DC01CB0120E030E04AE757 +S1130CA054E4BC01CD010E943809DC01CB018B83E3 +S1130CB09C83AD83BE832F89388D498D5A8D60E026 +S1130CC070E080E89FE30E949807DC01CB019C015F +S1130CD0AD016B8D7C8D8D8D9E8D0E949807DC01FE +S1130CE0CB01BC01CD010E940A08DC01CB0198872D +S1130CF08F831A82198281C08B819C81AD81BE81D0 +S1130D0089879A87AB87BC8720E030E04AE755E4BF +S1130D1069857A858B859C850E943809DC01CB0125 +S1130D208D879E87AF87B88B20E030E040E85FE393 +S1130D306D857E858F8598890E94930788232CF47E +S1130D4081E090E09A8B898B3FC020E03FEF4FE732 +S1130D5057E46D857E858F8598890E94330918161E +S1130D604CF520E030E040E251E469857A858B85DA +S1130D709C850E943809DC01CB01BC01CD010E9495 +S1130D801108DC01CB019A8B898B0FC080E991E0BB +S1130D909C8B8B8B8B899C890197F1F79C8B8B8B1C +S1130DA089899A8901979A8B898B89899A89892B50 +S1130DB069F714C06D857E858F8598890E94110816 +S1130DC0DC01CB019A8B898B89899A899E8B8D8BC7 +S1130DD08D899E890197F1F79E8B8D8B8EE290E031 +S1130DE02EE230E0F901308120E12327FC01208349 +S1130DF089819A8101969A8389838F819885298133 +S1130E003A812817390708F477CF00006E960FB699 +S1130E10F894DEBF0FBECDBFDF91CF910895505837 +S1130E20BB27AA270E9427070C94E1080E94D30835 +S1130E3038F00E94DA0820F039F49F3F19F426F4C0 +S1130E400C94D0080EF4E095E7FB0C94A108E92F6C +S1130E500E94F20858F3BA176207730784079507CC +S1130E6020F079F4A6F50C942C090EF4E0950B2EE1 +S1130E70BA2FA02D0B01B90190010C01CA01A001E8 +S1130E801124FF27591B99F0593F50F4503E68F143 +S1130E901A16F040A22F232F342F4427585FF3CF84 +S1130EA0469537952795A795F0405395C9F77EF455 +S1130EB01F16BA0B620B730B840BBAF09150A1F09E +S1130EC0FF0FBB1F661F771F881FC2F70EC0BA0F24 +S1130ED0621F731F841F48F4879577956795B795AC +S1130EE0F7959E3F08F0B0CF9395880F08F09927A7 +S1130EF0EE0F9795879508950E94140990F09F37F7 +S1130F0048F4911116F40C942D0960E070E080E827 +S1130F109FE3089526F01B16611D711D811D0C941D +S1130F20A7080C94C2080E947D0808F481E0089583 +S1130F300E94AC070C94E1080E94DA0858F00E9461 +S1130F40D30840F029F45F3F29F00C94A108511113 +S1130F500C942D090C94D0080E94F20868F399238C +S1130F60B1F3552391F3951B550BBB27AA276217A1 +S1130F707307840738F09F5F5F4F220F331F441FAE +S1130F80AA1FA9F335D00E2E3AF0E0E832D09150E2 +S1130F905040E695001CCAF72BD0FE2F29D0660FCF +S1130FA0771F881FBB1F261737074807AB07B0E812 +S1130FB009F0BB0B802DBF01FF2793585F4F3AF018 +S1130FC09E3F510578F00C94A1080C942D095F3FC5 +S1130FD0E4F3983ED4F3869577956795B795F7959E +S1130FE09F5FC9F7880F911D9695879597F9089586 +S1130FF0E1E0660F771F881FBB1F62177307840722 +S1131000BA0720F0621B730B840BBA0BEE1F88F730 +S1131010E09508950E9411086894B1110C942D096B +S113102008950E94FA0888F09F5798F0B92F9927DD +S1131030B751B0F0E1F0660F771F881F991F1AF0BF +S1131040BA95C9F714C0B13091F00E942C09B1E0EF +S113105008950C942C09672F782F8827B85F39F0EE +S1131060B93FCCF3869577956795B395D9F73EF458 +S113107090958095709561957F4F8F4F9F4F089500 +S1131080E89409C097FB3EF490958095709561951E +S11310907F4F8F4F9F4F9923A9F0F92F96E9BB27D4 +S11310A09395F695879577956795B795F111F8CF50 +S11310B0FAF4BB0F11F460FF1BC06F5F7F4F8F4FBB +S11310C09F4F16C0882311F096E911C0772321F0B1 +S11310D09EE8872F762F05C0662371F096E8862F49 +S11310E070E060E02AF09A95660F771F881FDAF7A0 +S11310F0880F9695879597F90895990F0008550FCD +S1131100AA0BE0E8FEEF16161706E807F907C0F089 +S113111012161306E407F50798F0621B730B840B91 +S1131120950B39F40A2661F0232B242B252B21F46B +S113113008950A2609F4A140A6958FEF811D811D0B +S1131140089597F99F6780E870E060E00895882328 +S113115071F4772321F09850872B762F07C06623EC +S113116011F499270DC09051862B70E060E02AF0AD +S11311709A95660F771F881FDAF7880F96958795DB +S113118097F908959F3F31F0915020F48795779512 +S11311906795B795880F911D9695879597F908954A +S11311A09FEF80EC089500240A941616170618067B +S11311B00906089500240A94121613061406050657 +S11311C00895092E0394000C11F4882352F0BB0FE8 +S11311D040F4BF2B11F460FF04C06F5F7F4F8F4F4B +S11311E09F4F089557FD9058440F551F59F05F3F86 +S11311F071F04795880F97FB991F61F09F3F79F035 +S113120087950895121613061406551FF2CF4695B6 +S1131210F1DF08C0161617061806991FF1CF869538 +S113122071056105089408950E94FA08A0F0BEE7CC +S1131230B91788F4BB279F3860F41616B11D672FC1 +S1131240782F8827985FF7CF869577956795B11D96 +S113125093959639C8F30895E894BB2766277727B2 +S1131260CB0197F908950E947D0808F48FEF089543 +S11312700E944B090C94E1080E94D30838F00E94A4 +S1131280DA0820F0952311F00C94A1080C94D008EE +S113129011240C942D090E94F20870F3959FC1F358 +S11312A0950F50E0551F629FF001729FBB27F00D10 +S11312B0B11D639FAA27F00DB11DAA1F649F662765 +S11312C0B00DA11D661F829F2227B00DA11D621FB4 +S11312D0739FB00DA11D621F839FA00D611D221F6E +S11312E0749F3327A00D611D231F849F600D211D52 +S11312F0822F762F6A2F11249F5750409AF0F1F0D5 +S113130088234AF0EE0FFF1FBB1F661F771F881F3D +S113131091505040A9F79E3F510580F00C94A108CC +S11313200C942D095F3FE4F3983ED4F386957795AA +S11313306795B795F795E7959F5FC1F7FE2B880FE3 +S1131340911D9695879597F9089597FB072E16F4A6 +S1131350009407D077FD09D00E94B90907FC05D095 +S11313603EF4909581959F4F0895709561957F4FB8 +S11313700895AA1BBB1B51E107C0AA1FBB1FA617D8 +S1131380B70710F0A61BB70B881F991F5A95A9F72A +S113139080959095BC01CD0108958F929F92AF9254 +S11313A0BF92CF92DF92EF92FF92CF93DF93EC0143 +S11313B0688179818A819B81611571058105910517 +S11313C021F464E279ED8BE597E02DE133EF41E020 +S11313D050E00E94290A49015A019B01AC01A7EA85 +S11313E0B1E40E94480A6B017C01ACEEB4EFA501A4 +S11313F094010E94560ADC01CB018C0D9D1DAE1D8B +S1131400BF1DB7FF03C00197A109B0488883998322 +S1131410AA83BB839F77DF91CF91FF90EF90DF90FA +S1131420CF90BF90AF909F908F9008950E94CD0968 +S1131430089580E091E00E94CD090895A0E0B0E015 +S11314408093000190930101A0930201B0930301E2 +S11314500895052E97FB1EF400940E94400A57FD40 +S113146007D00E945B0A07FC03D04EF40C94400A98 +S113147050954095309521953F4F4F4F5F4F0895BC +S113148090958095709561957F4F8F4F9F4F0895EC +S11314900E947D0AA59F900DB49F900DA49F800D7E +S11314A0911D11240895B7FF0C94480A0E94480A1C +S11314B0821B930B0895A1E21A2EAA1BBB1BFD01EC +S11314C00DC0AA1FBB1FEE1FFF1FA217B307E4071F +S11314D0F50720F0A21BB30BE40BF50B661F771F77 +S11314E0881F991F1A9469F7609570958095909557 +S11314F09B01AC01BD01CF010895A29FB001B39F30 +S1131500C001A39F700D811D1124911DB29F700D08 +S10F1510811D1124911D0895F894FFCF53 +S113151C0100000074696D657220746573740A00AF +S113152C53494D4F4E2047414D450A456E746572E3 +S113153C20796F7572207374617274696E6720649C +S113154C6966666963756C7479206C6576656C3A4A +S113155C0A312E20456173790A322E204D6F646551 +S113156C726174650A332E2047697665206D652097 +S113157C7061696E2E000A676F7420656C656D6509 +S113158C6E742C2077616974696E672E2E2E0A0096 +S113159C0A6E657874206C6576656C0A000A436F74 +S11315AC7272656374210A000A496E636F72726504 +S11315BC63742067756573732E0A000A596F75205E +S11315CC62656174207468652067616D65210A0029 +S11315DC0A596F75206C6F6F73652C2074727920A7 +S10B15EC616761696E3F0A00AA +S9030000FC diff --git a/final_project/Debug/main.d b/final_project/Debug/main.d new file mode 100644 index 0000000..78eaf10 --- /dev/null +++ b/final_project/Debug/main.d @@ -0,0 +1,54 @@ +main.d main.o: .././main.c \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h \ + C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\include/avr/iom324pb.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h \ + c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdbool.h \ + .././serial.h .././clock.h + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\io.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\sfr_defs.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\inttypes.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdint.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\stdint.h: + +C:\Program\ Files\ (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\include/avr/iom324pb.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\portpins.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\common.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\version.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\fuse.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\lock.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr\interrupt.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\util\delay_basic.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\math.h: + +c:\program\ files\ (x86)\atmel\studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\5.4.0\include\stdbool.h: + +.././serial.h: + +.././clock.h: diff --git a/final_project/Debug/main.o b/final_project/Debug/main.o new file mode 100644 index 0000000000000000000000000000000000000000..4ab8911987b32f6060d2202fac95c5b31f1a7c3a GIT binary patch literal 22272 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

g*9yN0 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 literal 0 HcmV?d00001 diff --git a/final_project/clock.c b/final_project/clock.c new file mode 100644 index 0000000..7c216fc --- /dev/null +++ b/final_project/clock.c @@ -0,0 +1,31 @@ +/* + * clock.c + * + * Created: 4/3/2024 10:29:19 AM + * Author: bsw9xd + */ +#include "clock.h" + +void timer_init_ctc() { + TCCR1A = 0x00; //WGM10 = 0, WGM11 = 0 (CTC mode when combined with WGM12 in TCCR1B) + TCCR1B = (1 << WGM12); + TCNT1 = 0; // initialize timer at 0 + //TIMSK1 |= (1< +#include + +void timer_init_ctc(); +void start_timer(); +void stop_timer(); +bool timer_done(); +#endif \ No newline at end of file diff --git a/final_project/final_project.componentinfo.xml b/final_project/final_project.componentinfo.xml new file mode 100644 index 0000000..4e0a47d --- /dev/null +++ b/final_project/final_project.componentinfo.xml @@ -0,0 +1,86 @@ + + + + + + + Device + Startup + + + Atmel + 1.6.0 + C:/Program Files (x86)\Atmel\Studio\7.0\Packs + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\include\ + + include + C + + + include/ + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\include\avr\iom324pb.h + + header + C + TdoApmBPT+fgXgW9S4c0Dw== + + include/avr/iom324pb.h + + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\templates\main.c + template + source + C Exe + NLiak30avsZp4znWGAp3SQ== + + templates/main.c + Main file (.c) + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\templates\main.cpp + template + source + C Exe + mkKaE95TOoATsuBGv6jmxg== + + templates/main.cpp + Main file (.cpp) + + + + C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.6.364\gcc\dev\atmega324pb + + libraryPrefix + GCC + + + gcc/dev/atmega324pb + + + + + ATmega_DFP + C:/Program Files (x86)/Atmel/Studio/7.0/Packs/atmel/ATmega_DFP/1.6.364/Atmel.ATmega_DFP.pdsc + 1.6.364 + true + ATmega324PB + + + + Resolved + Fixed + true + + + \ No newline at end of file diff --git a/final_project/final_project.cproj b/final_project/final_project.cproj new file mode 100644 index 0000000..f0d7165 --- /dev/null +++ b/final_project/final_project.cproj @@ -0,0 +1,175 @@ + + + + 2.0 + 7.0 + com.Atmel.AVRGCC8.C + dce6c7e3-ee26-4d79-826b-08594b9ad897 + ATmega324PB + none + Executable + C + $(MSBuildProjectName) + .elf + $(MSBuildProjectDirectory)\$(Configuration) + final_project + final_project + final_project + Native + true + false + true + true + 0x20000000 + + true + exception_table + 2 + 0 + 0 + + + + + + + + + + + + + + com.atmel.avrdbg.tool.edbg + ATML2589040200001346 + 0x1E9517 + JTAG + + + + 220000 + true + false + 0 + 0 + 0 + 0 + 0 + + + + JTAG + + com.atmel.avrdbg.tool.edbg + ATML2589040200001346 + EDBG + + 220000 + + + + + JTAG + + com.atmel.avrdbg.tool.simulator + + + Simulator + + + + + + -mmcu=atmega324pb -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.6.364\gcc\dev\atmega324pb" + True + True + True + True + False + True + True + + + NDEBUG + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.6.364\include\ + + + Optimize for size (-Os) + True + True + True + + + libm + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.6.364\include\ + + + + + + + + + -mmcu=atmega324pb -B "%24(PackRepoDir)\atmel\ATmega_DFP\1.6.364\gcc\dev\atmega324pb" + True + True + True + True + False + True + True + + + DEBUG + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.6.364\include\ + + + True + True + Default (-g2) + True + + + libm + + + + + %24(PackRepoDir)\atmel\ATmega_DFP\1.6.364\include\ + + + Default (-Wa,-g) + + + + + + compile + + + compile + + + compile + + + compile + + + compile + + + + \ No newline at end of file diff --git a/final_project/main.c b/final_project/main.c new file mode 100644 index 0000000..f301ef5 --- /dev/null +++ b/final_project/main.c @@ -0,0 +1,218 @@ +/* + * final_project.c + * + * Created: 4/3/2024 10:08:56 AM + * Author : bsw9xd + */ +#define F_CPU 16000000UL + +#include +#include +#include +#include + +#include "serial.h" +#include "clock.h" + + +volatile int seconds_remaining; //will be used by ISR + +#define SPEAKER_PORT PORTE +#define SPEAKER_PIN 4 //rename? +#define ELEMENT_COUNT 7 + +//TODO get_button and display_element unnecessarily complex +uint8_t get_button() { + if(~PINE & (1 << 6)) return (1 << 2); + return ((~PINA) & ~(0b1100)); //TODO clean up +} + +void display_element(uint8_t element, unsigned int time) { + uint8_t portd_state = 0; + uint8_t porte_state = 0; + if(element & (1 << 2)) porte_state = (1<<5); + portd_state = element & ~(0b1100); + + PORTD ^= portd_state; + PORTE ^= porte_state; + beep(329.63, .25); + _delay_ms(time * 1000); + PORTD ^= portd_state; + PORTE ^= porte_state; +} + +void init_io() { + DDRA = 0x00; + PORTA = 0xff; + + DDRD = 0xff; + PORTD = 0xff; + + DDRE = (1 << 4) | (1 << 5); + PORTE = 0xff; +} +void test_timer() { + for(;;) { + usart_txstr("timer test\n"); + start_timer(); + while(!timer_done()); + stop_timer(); + } +} + +int main(void) { + cli(); + timer_init_ctc(); + init_io(); + usart_init(); + + + while(1) { + int level = 0; + + //get level + usart_txstr( + "SIMON GAME\n" + "Enter your starting difficulty level:\n" + "1. Easy\n" + "2. Moderate\n" + "3. Give me pain."); + + while((level > 3) || (level < 1)) level = (int)(usart_rxt_blocking() - '0'); + + + //main simon game + while(level < 3) { + int display_time; + int sets; + int response_time; + int elements_min; + int elements_max; + double score; + uint8_t element_list[5]; // TODO + + + switch(level) { + case 1: + sets = 3; + display_time = 3; + response_time = 5; + elements_min = 3; + elements_max = 5; + break; + case 2: + sets = 4; + display_time = 2; + response_time = 7; + elements_min = 3; + elements_max = 10; + break; + case 3: + sets = 5; + display_time = 1; + response_time = 10; + elements_min = 5; + elements_max = 15; + break; + } + + + //main level + int max_score = 0; + int current_score = 0; + for(int set = 0; set < sets; set++) { + int elements = elements_min + ceil(((elements_max - elements_min) / (float)(sets - 1)) * set); + //generate, display elements + for(int element = 0; element < elements; element++) { + uint8_t element_bit = (rand() % ELEMENT_COUNT); + if(element_bit == 3) element_bit = 7; + uint8_t this_element = 1 << element_bit; + usart_txt('\n'); + usart_txt(element_bit + '0'); + usart_txt('\n'); + element_list[element] = this_element; // could optimize + display_element(this_element, display_time); + + } + //get elements + seconds_remaining = response_time; + start_timer(); + uint16_t guess; + for(int element = 0; element < elements; element++) { + usart_txstr("\ngot element, waiting...\n"); + do { + if(timer_done()) { + seconds_remaining--; + stop_timer(); //TODO only need one function + start_timer(); + beep(261.63, .1); + } + else { guess = get_button(); } + } while((!guess) && (seconds_remaining > 0)); + _delay_ms(250); //prevent double press + max_score++; + if(guess == element_list[element]) { + current_score++; + correct_beep(); + } + else { + incorrect_beep(); + } + } + } + score = (float)current_score / max_score; + if(score >= .8) { + level++; + usart_txstr("\nnext level\n"); + } + else { + loose(); + break; + } + } + if(level >= 3) win(); + } +} + +//timer interrupt +ISR(TIMER1_COMPA_vect) { + if(seconds_remaining-- > 0) return; + for(;;) { + beep(); + } +} + +void correct_beep() { + usart_txstr("\nCorrect!\n"); + beep(440.0, .1); +} + +void incorrect_beep() { + usart_txstr("\nIncorrect guess.\n"); + beep(261.62, .2); + _delay_ms(25); + beep(261.62, .2); +} + +void win() { + usart_txstr("\nYou beat the game!\n"); + beep(262., .5); + beep(392., .5); +} + +void loose() { + usart_txstr("\nYou loose, try again?\n"); + beep(330., .5); + beep(294., .5); +} + + +//TODO move somewhere else +void beep(double frequency, double durientation) { + double speaker_ms = ((1.0 / frequency) / 2.0) * 1000.0; //TODO clean up + int loop_count = durientation / (1.0 / frequency); + for(unsigned int i = 0; i < loop_count; i++) { + _delay_ms(speaker_ms); + SPEAKER_PORT ^= (1 << SPEAKER_PIN); + } +} \ No newline at end of file diff --git a/final_project/serial.c b/final_project/serial.c new file mode 100644 index 0000000..bb5b58f --- /dev/null +++ b/final_project/serial.c @@ -0,0 +1,39 @@ +/* + * CFile1.c + * + * Created: 4/3/2024 10:21:26 AM + * Author: bsw9xd + */ +#include "serial.h" + +void usart_init() { + volatile int ubrr = (F_CPU / (16UL * BAUD)) - 1; //TODO: why is this volatile int??? + UCSR1A = 0; //async normal communication + UCSR1B = (1 << TXEN) | (1 << RXEN); + UCSR1C = (1 << UCSZ0) | (1 << UCSZ1); + + + UBRR1H = (unsigned char)(ubrr << 8); + UBRR1L = (unsigned char)ubrr; +} +void usart_txt(char data) { //transmit data + UDR1 = data; //buffer the data + while(~UCSR1A & (1 << TXC)); //wait until the transmission is complete + UCSR1A |= (1 << TXC); + +} +char usart_rxt() { + if(UCSR1A & (1 << RXC)) { + return UDR1; + } + return '\0'; +} + +char usart_rxt_blocking() { //TODO maybe replace usart_txt + while(!(UCSR1A & (1 << RXC))); //TODO simplify + return UDR1; +} + +void usart_txstr(char *str) { + for(int i = 0; str[i] != '\0'; i++) usart_txt(str[i]); +} diff --git a/final_project/serial.h b/final_project/serial.h new file mode 100644 index 0000000..6b5d3d2 --- /dev/null +++ b/final_project/serial.h @@ -0,0 +1,21 @@ +/* + * serial.h + * + * Created: 4/3/2024 10:22:09 AM + * Author: bsw9xd + */ +#ifndef SERIAL_H +#define SERIAL_H + +#include + +#define F_CPU 16000000UL +#define BAUD 9600 + +void usart_init(); +void usart_txt(char data); +char usart_rxt(); +char usart_rxt_blocking(); +void usart_txstr(char *str); + +#endif \ No newline at end of file diff --git a/rubric.pdf b/rubric.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d93e0f02bbb425642d032a4fc9baa277cd20fac5 GIT binary patch literal 221870 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