diff --git a/Libs/LCD4/.cproject b/Libs/LCD4/.cproject new file mode 100644 index 0000000..93ab055 --- /dev/null +++ b/Libs/LCD4/.cproject @@ -0,0 +1,1710 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Libs/LCD4/.dep/avrmb2313_lcd.o.d b/Libs/LCD4/.dep/avrmb2313_lcd.o.d new file mode 100644 index 0000000..1cb0373 --- /dev/null +++ b/Libs/LCD4/.dep/avrmb2313_lcd.o.d @@ -0,0 +1,23 @@ +avrmb2313_lcd.o: avrmb2313_lcd.c c:/winavr/bin/../avr/include/inttypes.h \ + c:/winavr/bin/../avr/include/stdint.h \ + c:/winavr/bin/../avr/include/avr/io.h \ + c:/winavr/bin/../avr/include/avr/sfr_defs.h \ + c:/winavr/bin/../avr/include/avr/io2313.h \ + c:/winavr/bin/../avr/include/avr/portpins.h \ + c:/winavr/bin/../avr/include/avr/version.h avrmb2313_lcd.h + +c:/winavr/bin/../avr/include/inttypes.h: + +c:/winavr/bin/../avr/include/stdint.h: + +c:/winavr/bin/../avr/include/avr/io.h: + +c:/winavr/bin/../avr/include/avr/sfr_defs.h: + +c:/winavr/bin/../avr/include/avr/io2313.h: + +c:/winavr/bin/../avr/include/avr/portpins.h: + +c:/winavr/bin/../avr/include/avr/version.h: + +avrmb2313_lcd.h: diff --git a/Libs/LCD4/.dep/lcd_wait.o.d b/Libs/LCD4/.dep/lcd_wait.o.d new file mode 100644 index 0000000..f440554 --- /dev/null +++ b/Libs/LCD4/.dep/lcd_wait.o.d @@ -0,0 +1,23 @@ +lcd_wait.o: lcd_wait.c c:/winavr/bin/../avr/include/inttypes.h \ + c:/winavr/bin/../avr/include/stdint.h \ + c:/winavr/bin/../avr/include/avr/io.h \ + c:/winavr/bin/../avr/include/avr/sfr_defs.h \ + c:/winavr/bin/../avr/include/avr/io2313.h \ + c:/winavr/bin/../avr/include/avr/portpins.h \ + c:/winavr/bin/../avr/include/avr/version.h avrmb2313_lcd.h + +c:/winavr/bin/../avr/include/inttypes.h: + +c:/winavr/bin/../avr/include/stdint.h: + +c:/winavr/bin/../avr/include/avr/io.h: + +c:/winavr/bin/../avr/include/avr/sfr_defs.h: + +c:/winavr/bin/../avr/include/avr/io2313.h: + +c:/winavr/bin/../avr/include/avr/portpins.h: + +c:/winavr/bin/../avr/include/avr/version.h: + +avrmb2313_lcd.h: diff --git a/Libs/LCD4/.dep/lcdtest.o.d b/Libs/LCD4/.dep/lcdtest.o.d new file mode 100644 index 0000000..83797fc --- /dev/null +++ b/Libs/LCD4/.dep/lcdtest.o.d @@ -0,0 +1,23 @@ +lcdtest.o: lcdtest.c c:/winavr/bin/../avr/include/inttypes.h \ + c:/winavr/bin/../avr/include/stdint.h \ + c:/winavr/bin/../avr/include/avr/io.h \ + c:/winavr/bin/../avr/include/avr/sfr_defs.h \ + c:/winavr/bin/../avr/include/avr/io2313.h \ + c:/winavr/bin/../avr/include/avr/portpins.h \ + c:/winavr/bin/../avr/include/avr/version.h avrmb2313_lcd.h + +c:/winavr/bin/../avr/include/inttypes.h: + +c:/winavr/bin/../avr/include/stdint.h: + +c:/winavr/bin/../avr/include/avr/io.h: + +c:/winavr/bin/../avr/include/avr/sfr_defs.h: + +c:/winavr/bin/../avr/include/avr/io2313.h: + +c:/winavr/bin/../avr/include/avr/portpins.h: + +c:/winavr/bin/../avr/include/avr/version.h: + +avrmb2313_lcd.h: diff --git a/Libs/LCD4/.project b/Libs/LCD4/.project new file mode 100644 index 0000000..f32778d --- /dev/null +++ b/Libs/LCD4/.project @@ -0,0 +1,82 @@ + + + LCD4 + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + ?name? + + + + org.eclipse.cdt.make.core.append_environment + true + + + org.eclipse.cdt.make.core.autoBuildTarget + all + + + org.eclipse.cdt.make.core.buildArguments + + + + org.eclipse.cdt.make.core.buildCommand + make + + + org.eclipse.cdt.make.core.buildLocation + ${workspace_loc:/LCD4/Debug} + + + org.eclipse.cdt.make.core.cleanBuildTarget + clean + + + org.eclipse.cdt.make.core.contents + org.eclipse.cdt.make.core.activeConfigSettings + + + org.eclipse.cdt.make.core.enableAutoBuild + false + + + org.eclipse.cdt.make.core.enableCleanBuild + true + + + org.eclipse.cdt.make.core.enableFullBuild + true + + + org.eclipse.cdt.make.core.fullBuildTarget + all + + + org.eclipse.cdt.make.core.stopOnError + true + + + org.eclipse.cdt.make.core.useDefaultBuildCmd + true + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + de.innot.avreclipse.core.avrnature + + diff --git a/Libs/LCD4/.settings/de.innot.avreclipse.core.prefs b/Libs/LCD4/.settings/de.innot.avreclipse.core.prefs new file mode 100644 index 0000000..5e2ff13 --- /dev/null +++ b/Libs/LCD4/.settings/de.innot.avreclipse.core.prefs @@ -0,0 +1,24 @@ +#Sat Mar 06 14:56:52 CET 2010 +avrtarget/ClockFrequency=10000000 +avrtarget/ExtRAMSize=0 +avrtarget/ExtendedRAM=false +avrtarget/MCUType=attiny2313 +avrtarget/UseEEPROM=false +avrtarget/UseExtendedRAMforHeap=true +avrtarget/avrdude/BitBangDelay= +avrtarget/avrdude/Bitclock= +avrtarget/avrdude/EEPROMFile= +avrtarget/avrdude/EEPROMFromConfig=true +avrtarget/avrdude/FlashFile= +avrtarget/avrdude/FlashFromConfig=true +avrtarget/avrdude/NoChipErase=false +avrtarget/avrdude/NoSigCheck=false +avrtarget/avrdude/NoVerify=false +avrtarget/avrdude/NoWrite=false +avrtarget/avrdude/OtherOptions= +avrtarget/avrdude/ProgrammerID=programmerconfig.1 +avrtarget/avrdude/UseCounter=false +avrtarget/avrdude/WriteEEPROM=false +avrtarget/avrdude/WriteFlash=true +avrtarget/perConfig=false +eclipse.preferences.version=1 diff --git a/Libs/LCD4/Debug/LCD4.elf b/Libs/LCD4/Debug/LCD4.elf new file mode 100644 index 0000000..db4e256 Binary files /dev/null and b/Libs/LCD4/Debug/LCD4.elf differ diff --git a/Libs/LCD4/Debug/LCD4.lss b/Libs/LCD4/Debug/LCD4.lss new file mode 100644 index 0000000..d3c34b8 --- /dev/null +++ b/Libs/LCD4/Debug/LCD4.lss @@ -0,0 +1,673 @@ + +LCD4.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 0000040a 00000000 00000000 00000054 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .stab 0000111c 00000000 00000000 00000460 2**2 + CONTENTS, READONLY, DEBUGGING + 2 .stabstr 000007cb 00000000 00000000 0000157c 2**0 + CONTENTS, READONLY, DEBUGGING +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 2a 00 jmp 0x54 ; 0x54 <__ctors_end> + 4: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 8: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 10: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 14: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 18: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 1c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 20: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 24: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 28: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 2c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 30: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 34: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 38: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 3c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 40: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 44: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 48: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 4c: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + 50: 0c 94 47 00 jmp 0x8e ; 0x8e <__bad_interrupt> + +00000054 <__ctors_end>: + 54: 11 24 eor r1, r1 + 56: 1f be out 0x3f, r1 ; 63 + 58: cf e5 ldi r28, 0x5F ; 95 + 5a: d4 e0 ldi r29, 0x04 ; 4 + 5c: de bf out 0x3e, r29 ; 62 + 5e: cd bf out 0x3d, r28 ; 61 + +00000060 <__do_copy_data>: + 60: 10 e0 ldi r17, 0x00 ; 0 + 62: a0 e6 ldi r26, 0x60 ; 96 + 64: b0 e0 ldi r27, 0x00 ; 0 + 66: ea e0 ldi r30, 0x0A ; 10 + 68: f4 e0 ldi r31, 0x04 ; 4 + 6a: 02 c0 rjmp .+4 ; 0x70 <.do_copy_data_start> + +0000006c <.do_copy_data_loop>: + 6c: 05 90 lpm r0, Z+ + 6e: 0d 92 st X+, r0 + +00000070 <.do_copy_data_start>: + 70: a0 36 cpi r26, 0x60 ; 96 + 72: b1 07 cpc r27, r17 + 74: d9 f7 brne .-10 ; 0x6c <.do_copy_data_loop> + +00000076 <__do_clear_bss>: + 76: 10 e0 ldi r17, 0x00 ; 0 + 78: a0 e6 ldi r26, 0x60 ; 96 + 7a: b0 e0 ldi r27, 0x00 ; 0 + 7c: 01 c0 rjmp .+2 ; 0x80 <.do_clear_bss_start> + +0000007e <.do_clear_bss_loop>: + 7e: 1d 92 st X+, r1 + +00000080 <.do_clear_bss_start>: + 80: a0 36 cpi r26, 0x60 ; 96 + 82: b1 07 cpc r27, r17 + 84: e1 f7 brne .-8 ; 0x7e <.do_clear_bss_loop> + 86: 0e 94 cc 01 call 0x398 ; 0x398
+ 8a: 0c 94 03 02 jmp 0x406 ; 0x406 <_exit> + +0000008e <__bad_interrupt>: + 8e: 0c 94 00 00 jmp 0 ; 0x0 <__heap_end> + +00000092 : +/* end Prototypes */ + +#define lcd_mask_Write_Adress(position) ((position & 0x7F)| lcd_SET_DD_RAM) +// 4-Bit to be added, no indent +// enum whichtype{instruct, data}; +void lcd_init(void){ + 92: df 93 push r29 + 94: cf 93 push r28 + 96: cd b7 in r28, 0x3d ; 61 + 98: de b7 in r29, 0x3e ; 62 + /* setting up ports first */ + lcd_dataport_DDR|=lcd_dataport_mask; + 9a: a7 e3 ldi r26, 0x37 ; 55 + 9c: b0 e0 ldi r27, 0x00 ; 0 + 9e: e7 e3 ldi r30, 0x37 ; 55 + a0: f0 e0 ldi r31, 0x00 ; 0 + a2: 80 81 ld r24, Z + a4: 80 6f ori r24, 0xF0 ; 240 + a6: 8c 93 st X, r24 + set_lcd_RS_DDR; + a8: a1 e3 ldi r26, 0x31 ; 49 + aa: b0 e0 ldi r27, 0x00 ; 0 + ac: e1 e3 ldi r30, 0x31 ; 49 + ae: f0 e0 ldi r31, 0x00 ; 0 + b0: 80 81 ld r24, Z + b2: 88 60 ori r24, 0x08 ; 8 + b4: 8c 93 st X, r24 + set_lcd_E_DDR; + b6: a1 e3 ldi r26, 0x31 ; 49 + b8: b0 e0 ldi r27, 0x00 ; 0 + ba: e1 e3 ldi r30, 0x31 ; 49 + bc: f0 e0 ldi r31, 0x00 ; 0 + be: 80 81 ld r24, Z + c0: 84 60 ori r24, 0x04 ; 4 + c2: 8c 93 st X, r24 + /* end setting up ports */ + //lcd_dataport=0xff; + set_lcd_RS; + c4: a2 e3 ldi r26, 0x32 ; 50 + c6: b0 e0 ldi r27, 0x00 ; 0 + c8: e2 e3 ldi r30, 0x32 ; 50 + ca: f0 e0 ldi r31, 0x00 ; 0 + cc: 80 81 ld r24, Z + ce: 88 60 ori r24, 0x08 ; 8 + d0: 8c 93 st X, r24 + set_lcd_E; + d2: a2 e3 ldi r26, 0x32 ; 50 + d4: b0 e0 ldi r27, 0x00 ; 0 + d6: e2 e3 ldi r30, 0x32 ; 50 + d8: f0 e0 ldi r31, 0x00 ; 0 + da: 80 81 ld r24, Z + dc: 84 60 ori r24, 0x04 ; 4 + de: 8c 93 st X, r24 + lcd_5ms(); + e0: 0e 94 ab 00 call 0x156 ; 0x156 + lcd_5ms(); + e4: 0e 94 ab 00 call 0x156 ; 0x156 + lcd_5ms(); + e8: 0e 94 ab 00 call 0x156 ; 0x156 + lcd_instruct(lcd_SET_FUNCTION_8BIT); + lcd_instruct(lcd_SET_FUNCTION_8BIT); + lcd_instruct(lcd_SET_FUNCTION_8BIT|lcd_SET_FUNCTION_2LINE|lcd_SET_FUNCTION_7X5); + #endif + #ifdef lcd_bus4 + lcd_instruct(lcd_SET_FUNCTION_8BIT); + ec: 80 e3 ldi r24, 0x30 ; 48 + ee: 0e 94 d3 00 call 0x1a6 ; 0x1a6 + lcd_5ms(); + f2: 0e 94 ab 00 call 0x156 ; 0x156 + lcd_instruct(lcd_SET_FUNCTION_8BIT); + f6: 80 e3 ldi r24, 0x30 ; 48 + f8: 0e 94 d3 00 call 0x1a6 ; 0x1a6 + wait_100us(); + fc: 0e 94 a9 01 call 0x352 ; 0x352 + lcd_instruct(lcd_SET_FUNCTION_8BIT); + 100: 80 e3 ldi r24, 0x30 ; 48 + 102: 0e 94 d3 00 call 0x1a6 ; 0x1a6 + wait_100us(); + 106: 0e 94 a9 01 call 0x352 ; 0x352 + lcd_instruct(lcd_SET_FUNCTION_4BIT); + 10a: 80 e2 ldi r24, 0x20 ; 32 + 10c: 0e 94 d3 00 call 0x1a6 ; 0x1a6 + wait_100us(); + 110: 0e 94 a9 01 call 0x352 ; 0x352 + lcd_instruct(lcd_SET_FUNCTION_2LINE|lcd_SET_FUNCTION_7X5); + 114: 88 e2 ldi r24, 0x28 ; 40 + 116: 0e 94 d3 00 call 0x1a6 ; 0x1a6 + #endif + + wait_100us(); + 11a: 0e 94 a9 01 call 0x352 ; 0x352 + lcd_instruct(lcd_DISPLAY_OO_OFF); + 11e: 88 e0 ldi r24, 0x08 ; 8 + 120: 0e 94 d3 00 call 0x1a6 ; 0x1a6 + wait_100us(); + 124: 0e 94 a9 01 call 0x352 ; 0x352 + lcd_instruct(lcd_DISPLAY_CLEAR); + 128: 81 e0 ldi r24, 0x01 ; 1 + 12a: 0e 94 d3 00 call 0x1a6 ; 0x1a6 + lcd_5ms(); + 12e: 0e 94 ab 00 call 0x156 ; 0x156 + lcd_instruct(lcd_DISPLAY_OO_ON|lcd_DISPLAY_OO_CURSOR_OFF); + 132: 8c e0 ldi r24, 0x0C ; 12 + 134: 0e 94 d3 00 call 0x1a6 ; 0x1a6 + wait_100us(); + 138: 0e 94 a9 01 call 0x352 ; 0x352 + lcd_instruct(lcd_ENTRY_MODE_SET|lcd_ENTRY_MODE_SET_INCREASE | lcd_ENTRY_MS_DISPLAY_NOT_S); + 13c: 86 e0 ldi r24, 0x06 ; 6 + 13e: 0e 94 d3 00 call 0x1a6 ; 0x1a6 + wait_100us(); + 142: 0e 94 a9 01 call 0x352 ; 0x352 + lcd_instruct(lcd_RETURN_HOME); + 146: 82 e0 ldi r24, 0x02 ; 2 + 148: 0e 94 d3 00 call 0x1a6 ; 0x1a6 + lcd_5ms(); + 14c: 0e 94 ab 00 call 0x156 ; 0x156 +} + 150: cf 91 pop r28 + 152: df 91 pop r29 + 154: 08 95 ret + +00000156 : + +void lcd_5ms(void){ + 156: df 93 push r29 + 158: cf 93 push r28 + 15a: 0f 92 push r0 + 15c: cd b7 in r28, 0x3d ; 61 + 15e: de b7 in r29, 0x3e ; 62 + for(uint8_t i=50;i>0;i--){ + 160: 82 e3 ldi r24, 0x32 ; 50 + 162: 89 83 std Y+1, r24 ; 0x01 + 164: 05 c0 rjmp .+10 ; 0x170 + wait_100us(); + 166: 0e 94 a9 01 call 0x352 ; 0x352 + lcd_instruct(lcd_RETURN_HOME); + lcd_5ms(); +} + +void lcd_5ms(void){ + for(uint8_t i=50;i>0;i--){ + 16a: 89 81 ldd r24, Y+1 ; 0x01 + 16c: 81 50 subi r24, 0x01 ; 1 + 16e: 89 83 std Y+1, r24 ; 0x01 + 170: 89 81 ldd r24, Y+1 ; 0x01 + 172: 88 23 and r24, r24 + 174: c1 f7 brne .-16 ; 0x166 + wait_100us(); + } + } + 176: 0f 90 pop r0 + 178: cf 91 pop r28 + 17a: df 91 pop r29 + 17c: 08 95 ret + +0000017e : + +void lcd_1s(void){ + 17e: df 93 push r29 + 180: cf 93 push r28 + 182: 0f 92 push r0 + 184: cd b7 in r28, 0x3d ; 61 + 186: de b7 in r29, 0x3e ; 62 + for(uint8_t i=200;i>0;i--){ + 188: 88 ec ldi r24, 0xC8 ; 200 + 18a: 89 83 std Y+1, r24 ; 0x01 + 18c: 05 c0 rjmp .+10 ; 0x198 + lcd_5ms(); + 18e: 0e 94 ab 00 call 0x156 ; 0x156 + wait_100us(); + } + } + +void lcd_1s(void){ + for(uint8_t i=200;i>0;i--){ + 192: 89 81 ldd r24, Y+1 ; 0x01 + 194: 81 50 subi r24, 0x01 ; 1 + 196: 89 83 std Y+1, r24 ; 0x01 + 198: 89 81 ldd r24, Y+1 ; 0x01 + 19a: 88 23 and r24, r24 + 19c: c1 f7 brne .-16 ; 0x18e + lcd_5ms(); + } + } + 19e: 0f 90 pop r0 + 1a0: cf 91 pop r28 + 1a2: df 91 pop r29 + 1a4: 08 95 ret + +000001a6 : + +void lcd_instruct(uint8_t zeichen){ + 1a6: df 93 push r29 + 1a8: cf 93 push r28 + 1aa: 0f 92 push r0 + 1ac: cd b7 in r28, 0x3d ; 61 + 1ae: de b7 in r29, 0x3e ; 62 + 1b0: 89 83 std Y+1, r24 ; 0x01 + lcd_write(instruct,zeichen,0); + 1b2: 84 e0 ldi r24, 0x04 ; 4 + 1b4: 69 81 ldd r22, Y+1 ; 0x01 + 1b6: 40 e0 ldi r20, 0x00 ; 0 + 1b8: 0e 94 e2 00 call 0x1c4 ; 0x1c4 + } + 1bc: 0f 90 pop r0 + 1be: cf 91 pop r28 + 1c0: df 91 pop r29 + 1c2: 08 95 ret + +000001c4 : + +void lcd_write(uint8_t lcd_whichwrite, uint8_t zeichen, uint8_t position){ + 1c4: df 93 push r29 + 1c6: cf 93 push r28 + 1c8: 00 d0 rcall .+0 ; 0x1ca + 1ca: 00 d0 rcall .+0 ; 0x1cc + 1cc: 0f 92 push r0 + 1ce: cd b7 in r28, 0x3d ; 61 + 1d0: de b7 in r29, 0x3e ; 62 + 1d2: 89 83 std Y+1, r24 ; 0x01 + 1d4: 6a 83 std Y+2, r22 ; 0x02 + 1d6: 4b 83 std Y+3, r20 ; 0x03 + switch (lcd_whichwrite){ + 1d8: 89 81 ldd r24, Y+1 ; 0x01 + 1da: 28 2f mov r18, r24 + 1dc: 30 e0 ldi r19, 0x00 ; 0 + 1de: 3d 83 std Y+5, r19 ; 0x05 + 1e0: 2c 83 std Y+4, r18 ; 0x04 + 1e2: 8c 81 ldd r24, Y+4 ; 0x04 + 1e4: 9d 81 ldd r25, Y+5 ; 0x05 + 1e6: 84 30 cpi r24, 0x04 ; 4 + 1e8: 91 05 cpc r25, r1 + 1ea: 7c f4 brge .+30 ; 0x20a + 1ec: 2c 81 ldd r18, Y+4 ; 0x04 + 1ee: 3d 81 ldd r19, Y+5 ; 0x05 + 1f0: 22 30 cpi r18, 0x02 ; 2 + 1f2: 31 05 cpc r19, r1 + 1f4: bc f4 brge .+46 ; 0x224 + 1f6: 8c 81 ldd r24, Y+4 ; 0x04 + 1f8: 9d 81 ldd r25, Y+5 ; 0x05 + 1fa: 00 97 sbiw r24, 0x00 ; 0 + 1fc: 01 f1 breq .+64 ; 0x23e + 1fe: 2c 81 ldd r18, Y+4 ; 0x04 + 200: 3d 81 ldd r19, Y+5 ; 0x05 + 202: 21 30 cpi r18, 0x01 ; 1 + 204: 31 05 cpc r19, r1 + 206: b9 f0 breq .+46 ; 0x236 + 208: 21 c0 rjmp .+66 ; 0x24c + 20a: 8c 81 ldd r24, Y+4 ; 0x04 + 20c: 9d 81 ldd r25, Y+5 ; 0x05 + 20e: 84 30 cpi r24, 0x04 ; 4 + 210: 91 05 cpc r25, r1 + 212: e1 f4 brne .+56 ; 0x24c + case instruct : + unset_lcd_RS; + 214: a2 e3 ldi r26, 0x32 ; 50 + 216: b0 e0 ldi r27, 0x00 ; 0 + 218: e2 e3 ldi r30, 0x32 ; 50 + 21a: f0 e0 ldi r31, 0x00 ; 0 + 21c: 80 81 ld r24, Z + 21e: 87 7f andi r24, 0xF7 ; 247 + 220: 8c 93 st X, r24 + 222: 14 c0 rjmp .+40 ; 0x24c + break; + case line2: + case line1: + position = position & 0x3f; + 224: 8b 81 ldd r24, Y+3 ; 0x03 + 226: 8f 73 andi r24, 0x3F ; 63 + 228: 8b 83 std Y+3, r24 ; 0x03 + if (lcd_whichwrite == line2){ position=position + 0x40; }; + 22a: 89 81 ldd r24, Y+1 ; 0x01 + 22c: 83 30 cpi r24, 0x03 ; 3 + 22e: 19 f4 brne .+6 ; 0x236 + 230: 8b 81 ldd r24, Y+3 ; 0x03 + 232: 80 5c subi r24, 0xC0 ; 192 + 234: 8b 83 std Y+3, r24 ; 0x03 + case therepos: + lcd_instruct(lcd_mask_Write_Adress(position)); + 236: 8b 81 ldd r24, Y+3 ; 0x03 + 238: 80 68 ori r24, 0x80 ; 128 + 23a: 0e 94 d3 00 call 0x1a6 ; 0x1a6 + case here: + set_lcd_RS; + 23e: a2 e3 ldi r26, 0x32 ; 50 + 240: b0 e0 ldi r27, 0x00 ; 0 + 242: e2 e3 ldi r30, 0x32 ; 50 + 244: f0 e0 ldi r31, 0x00 ; 0 + 246: 80 81 ld r24, Z + 248: 88 60 ori r24, 0x08 ; 8 + 24a: 8c 93 st X, r24 + lcd_dataport=(lcd_dataport & ~lcd_dataport_mask) | (zeichen & lcd_dataport_mask); + lcd_dataport=(lcd_dataport & ~lcd_dataport_mask) | (zeichen & lcd_dataport_mask); + #endif + + #ifdef lcd_bus4 + zeichen = zeichen << 4; + 24c: 8a 81 ldd r24, Y+2 ; 0x02 + 24e: 82 95 swap r24 + 250: 80 7f andi r24, 0xF0 ; 240 + 252: 8a 83 std Y+2, r24 ; 0x02 + unset_lcd_E; + 254: a2 e3 ldi r26, 0x32 ; 50 + 256: b0 e0 ldi r27, 0x00 ; 0 + 258: e2 e3 ldi r30, 0x32 ; 50 + 25a: f0 e0 ldi r31, 0x00 ; 0 + 25c: 80 81 ld r24, Z + 25e: 8b 7f andi r24, 0xFB ; 251 + 260: 8c 93 st X, r24 + wait_100us(); + 262: 0e 94 a9 01 call 0x352 ; 0x352 + set_lcd_E; + 266: a2 e3 ldi r26, 0x32 ; 50 + 268: b0 e0 ldi r27, 0x00 ; 0 + 26a: e2 e3 ldi r30, 0x32 ; 50 + 26c: f0 e0 ldi r31, 0x00 ; 0 + 26e: 80 81 ld r24, Z + 270: 84 60 ori r24, 0x04 ; 4 + 272: 8c 93 st X, r24 + set_lcd_E; + 274: a2 e3 ldi r26, 0x32 ; 50 + 276: b0 e0 ldi r27, 0x00 ; 0 + 278: e2 e3 ldi r30, 0x32 ; 50 + 27a: f0 e0 ldi r31, 0x00 ; 0 + 27c: 80 81 ld r24, Z + 27e: 84 60 ori r24, 0x04 ; 4 + 280: 8c 93 st X, r24 + lcd_dataport=(lcd_dataport & ~lcd_dataport_mask) | (zeichen & lcd_dataport_mask); + 282: a8 e3 ldi r26, 0x38 ; 56 + 284: b0 e0 ldi r27, 0x00 ; 0 + 286: e8 e3 ldi r30, 0x38 ; 56 + 288: f0 e0 ldi r31, 0x00 ; 0 + 28a: 80 81 ld r24, Z + 28c: 98 2f mov r25, r24 + 28e: 9f 70 andi r25, 0x0F ; 15 + 290: 8a 81 ldd r24, Y+2 ; 0x02 + 292: 80 7f andi r24, 0xF0 ; 240 + 294: 89 2b or r24, r25 + 296: 8c 93 st X, r24 + lcd_dataport=(lcd_dataport & ~lcd_dataport_mask) | (zeichen & lcd_dataport_mask); + 298: a8 e3 ldi r26, 0x38 ; 56 + 29a: b0 e0 ldi r27, 0x00 ; 0 + 29c: e8 e3 ldi r30, 0x38 ; 56 + 29e: f0 e0 ldi r31, 0x00 ; 0 + 2a0: 80 81 ld r24, Z + 2a2: 98 2f mov r25, r24 + 2a4: 9f 70 andi r25, 0x0F ; 15 + 2a6: 8a 81 ldd r24, Y+2 ; 0x02 + 2a8: 80 7f andi r24, 0xF0 ; 240 + 2aa: 89 2b or r24, r25 + 2ac: 8c 93 st X, r24 + #endif + + unset_lcd_E; + 2ae: a2 e3 ldi r26, 0x32 ; 50 + 2b0: b0 e0 ldi r27, 0x00 ; 0 + 2b2: e2 e3 ldi r30, 0x32 ; 50 + 2b4: f0 e0 ldi r31, 0x00 ; 0 + 2b6: 80 81 ld r24, Z + 2b8: 8b 7f andi r24, 0xFB ; 251 + 2ba: 8c 93 st X, r24 + wait_100us(); + 2bc: 0e 94 a9 01 call 0x352 ; 0x352 + +} + 2c0: 0f 90 pop r0 + 2c2: 0f 90 pop r0 + 2c4: 0f 90 pop r0 + 2c6: 0f 90 pop r0 + 2c8: 0f 90 pop r0 + 2ca: cf 91 pop r28 + 2cc: df 91 pop r29 + 2ce: 08 95 ret + +000002d0 : + +void lcd_blank_line(uint8_t lcd_whichwrite) + { + 2d0: df 93 push r29 + 2d2: cf 93 push r28 + 2d4: 00 d0 rcall .+0 ; 0x2d6 + 2d6: 00 d0 rcall .+0 ; 0x2d8 + 2d8: 0f 92 push r0 + 2da: cd b7 in r28, 0x3d ; 61 + 2dc: de b7 in r29, 0x3e ; 62 + 2de: 8b 83 std Y+3, r24 ; 0x03 + uint8_t count; + uint8_t countin; + + switch (lcd_whichwrite){ + 2e0: 8b 81 ldd r24, Y+3 ; 0x03 + 2e2: 28 2f mov r18, r24 + 2e4: 30 e0 ldi r19, 0x00 ; 0 + 2e6: 3d 83 std Y+5, r19 ; 0x05 + 2e8: 2c 83 std Y+4, r18 ; 0x04 + 2ea: 8c 81 ldd r24, Y+4 ; 0x04 + 2ec: 9d 81 ldd r25, Y+5 ; 0x05 + 2ee: 83 30 cpi r24, 0x03 ; 3 + 2f0: 91 05 cpc r25, r1 + 2f2: 71 f0 breq .+28 ; 0x310 + 2f4: 2c 81 ldd r18, Y+4 ; 0x04 + 2f6: 3d 81 ldd r19, Y+5 ; 0x05 + 2f8: 24 30 cpi r18, 0x04 ; 4 + 2fa: 31 05 cpc r19, r1 + 2fc: 31 f0 breq .+12 ; 0x30a + 2fe: 8c 81 ldd r24, Y+4 ; 0x04 + 300: 9d 81 ldd r25, Y+5 ; 0x05 + 302: 82 30 cpi r24, 0x02 ; 2 + 304: 91 05 cpc r25, r1 + 306: 39 f0 breq .+14 ; 0x316 + 308: 07 c0 rjmp .+14 ; 0x318 + case instruct: + lcd_blank_line(line1); + 30a: 82 e0 ldi r24, 0x02 ; 2 + 30c: 0e 94 68 01 call 0x2d0 ; 0x2d0 + case line2: + count=0x40; + 310: 80 e4 ldi r24, 0x40 ; 64 + 312: 8a 83 std Y+2, r24 ; 0x02 + 314: 01 c0 rjmp .+2 ; 0x318 + break; + case line1: + count=0; + 316: 1a 82 std Y+2, r1 ; 0x02 + break; + } + + for (countin=count; countin < count+15; countin++){ + 318: 8a 81 ldd r24, Y+2 ; 0x02 + 31a: 89 83 std Y+1, r24 ; 0x01 + 31c: 08 c0 rjmp .+16 ; 0x32e + lcd_write(therepos, 32, countin); + 31e: 81 e0 ldi r24, 0x01 ; 1 + 320: 60 e2 ldi r22, 0x20 ; 32 + 322: 49 81 ldd r20, Y+1 ; 0x01 + 324: 0e 94 e2 00 call 0x1c4 ; 0x1c4 + case line1: + count=0; + break; + } + + for (countin=count; countin < count+15; countin++){ + 328: 89 81 ldd r24, Y+1 ; 0x01 + 32a: 8f 5f subi r24, 0xFF ; 255 + 32c: 89 83 std Y+1, r24 ; 0x01 + 32e: 89 81 ldd r24, Y+1 ; 0x01 + 330: 28 2f mov r18, r24 + 332: 30 e0 ldi r19, 0x00 ; 0 + 334: 8a 81 ldd r24, Y+2 ; 0x02 + 336: 88 2f mov r24, r24 + 338: 90 e0 ldi r25, 0x00 ; 0 + 33a: 0f 96 adiw r24, 0x0f ; 15 + 33c: 28 17 cp r18, r24 + 33e: 39 07 cpc r19, r25 + 340: 74 f3 brlt .-36 ; 0x31e + lcd_write(therepos, 32, countin); + } +} + 342: 0f 90 pop r0 + 344: 0f 90 pop r0 + 346: 0f 90 pop r0 + 348: 0f 90 pop r0 + 34a: 0f 90 pop r0 + 34c: cf 91 pop r28 + 34e: df 91 pop r29 + 350: 08 95 ret + +00000352 : +#include +#include +#include "lcd4.h" + +void wait_100us(void){ + 352: df 93 push r29 + 354: cf 93 push r28 + 356: 00 d0 rcall .+0 ; 0x358 + 358: 00 d0 rcall .+0 ; 0x35a + 35a: 0f 92 push r0 + 35c: cd b7 in r28, 0x3d ; 61 + 35e: de b7 in r29, 0x3e ; 62 + for (volatile uint8_t i=68;i--;i>0){ + 360: 84 e4 ldi r24, 0x44 ; 68 + 362: 89 83 std Y+1, r24 ; 0x01 + 364: 02 c0 rjmp .+4 ; 0x36a + i; + 366: 89 81 ldd r24, Y+1 ; 0x01 +#include +#include +#include "lcd4.h" + +void wait_100us(void){ + for (volatile uint8_t i=68;i--;i>0){ + 368: 89 81 ldd r24, Y+1 ; 0x01 + 36a: 89 81 ldd r24, Y+1 ; 0x01 + 36c: 8a 83 std Y+2, r24 ; 0x02 + 36e: 8a 81 ldd r24, Y+2 ; 0x02 + 370: 8d 83 std Y+5, r24 ; 0x05 + 372: 8d 81 ldd r24, Y+5 ; 0x05 + 374: 88 23 and r24, r24 + 376: 11 f0 breq .+4 ; 0x37c + 378: 81 e0 ldi r24, 0x01 ; 1 + 37a: 8d 83 std Y+5, r24 ; 0x05 + 37c: 9d 81 ldd r25, Y+5 ; 0x05 + 37e: 8a 81 ldd r24, Y+2 ; 0x02 + 380: 81 50 subi r24, 0x01 ; 1 + 382: 89 83 std Y+1, r24 ; 0x01 + 384: 99 23 and r25, r25 + 386: 79 f7 brne .-34 ; 0x366 + i; + } +} + 388: 0f 90 pop r0 + 38a: 0f 90 pop r0 + 38c: 0f 90 pop r0 + 38e: 0f 90 pop r0 + 390: 0f 90 pop r0 + 392: cf 91 pop r28 + 394: df 91 pop r29 + 396: 08 95 ret + +00000398
: +#include +#include +#include "lcd4.h" + +int main(void){ + 398: df 93 push r29 + 39a: cf 93 push r28 + 39c: cd b7 in r28, 0x3d ; 61 + 39e: de b7 in r29, 0x3e ; 62 + lcd_1s(); + 3a0: 0e 94 bf 00 call 0x17e ; 0x17e + lcd_init(); + 3a4: 0e 94 49 00 call 0x92 ; 0x92 + lcd_write(therepos,0x41,0x08); + 3a8: 81 e0 ldi r24, 0x01 ; 1 + 3aa: 61 e4 ldi r22, 0x41 ; 65 + 3ac: 48 e0 ldi r20, 0x08 ; 8 + 3ae: 0e 94 e2 00 call 0x1c4 ; 0x1c4 + lcd_write(here,0x42,0); + 3b2: 80 e0 ldi r24, 0x00 ; 0 + 3b4: 62 e4 ldi r22, 0x42 ; 66 + 3b6: 40 e0 ldi r20, 0x00 ; 0 + 3b8: 0e 94 e2 00 call 0x1c4 ; 0x1c4 + lcd_write(here,0x43,0); + 3bc: 80 e0 ldi r24, 0x00 ; 0 + 3be: 63 e4 ldi r22, 0x43 ; 67 + 3c0: 40 e0 ldi r20, 0x00 ; 0 + 3c2: 0e 94 e2 00 call 0x1c4 ; 0x1c4 + lcd_write(here,0x44,0); + 3c6: 80 e0 ldi r24, 0x00 ; 0 + 3c8: 64 e4 ldi r22, 0x44 ; 68 + 3ca: 40 e0 ldi r20, 0x00 ; 0 + 3cc: 0e 94 e2 00 call 0x1c4 ; 0x1c4 + lcd_1s(); + 3d0: 0e 94 bf 00 call 0x17e ; 0x17e + lcd_1s(); + 3d4: 0e 94 bf 00 call 0x17e ; 0x17e + DDRB = 0x0f; + 3d8: e7 e3 ldi r30, 0x37 ; 55 + 3da: f0 e0 ldi r31, 0x00 ; 0 + 3dc: 8f e0 ldi r24, 0x0F ; 15 + 3de: 80 83 st Z, r24 + while(1==1){ + PORTB = 0x0f; + 3e0: e8 e3 ldi r30, 0x38 ; 56 + 3e2: f0 e0 ldi r31, 0x00 ; 0 + 3e4: 8f e0 ldi r24, 0x0F ; 15 + 3e6: 80 83 st Z, r24 + lcd_1s(); + 3e8: 0e 94 bf 00 call 0x17e ; 0x17e + PORTB = 0x05; + 3ec: e8 e3 ldi r30, 0x38 ; 56 + 3ee: f0 e0 ldi r31, 0x00 ; 0 + 3f0: 85 e0 ldi r24, 0x05 ; 5 + 3f2: 80 83 st Z, r24 + lcd_1s(); + 3f4: 0e 94 bf 00 call 0x17e ; 0x17e + PORTB = 0x0A; + 3f8: e8 e3 ldi r30, 0x38 ; 56 + 3fa: f0 e0 ldi r31, 0x00 ; 0 + 3fc: 8a e0 ldi r24, 0x0A ; 10 + 3fe: 80 83 st Z, r24 + lcd_1s(); + 400: 0e 94 bf 00 call 0x17e ; 0x17e + 404: ed cf rjmp .-38 ; 0x3e0 + +00000406 <_exit>: + 406: f8 94 cli + +00000408 <__stop_program>: + 408: ff cf rjmp .-2 ; 0x408 <__stop_program> diff --git a/Libs/LCD4/Debug/LCD4.map b/Libs/LCD4/Debug/LCD4.map new file mode 100644 index 0000000..80aaf3f --- /dev/null +++ b/Libs/LCD4/Debug/LCD4.map @@ -0,0 +1,370 @@ +Archive member included because of file (symbol) + +/usr/lib/gcc/avr/4.3.2/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr5/crtm16.o (exit) +/usr/lib/gcc/avr/4.3.2/avr5/libgcc.a(_copy_data.o) + ./lcd4.o (__do_copy_data) +/usr/lib/gcc/avr/4.3.2/avr5/libgcc.a(_clear_bss.o) + ./lcd4.o (__do_clear_bss) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000400 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +LOAD /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr5/crtm16.o +LOAD ./lcd4.o +LOAD ./lcd_wait.o +LOAD ./lcdtest.o +LOAD /usr/lib/gcc/avr/4.3.2/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr5/libc.a +LOAD /usr/lib/gcc/avr/4.3.2/avr5/libgcc.a + +.hash + *(.hash) + +.dynsym + *(.dynsym) + +.dynstr + *(.dynstr) + +.gnu.version + *(.gnu.version) + +.gnu.version_d + *(.gnu.version_d) + +.gnu.version_r + *(.gnu.version_r) + +.rel.init + *(.rel.init) + +.rela.init + *(.rela.init) + +.rel.text + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + +.rela.text + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + +.rel.fini + *(.rel.fini) + +.rela.fini + *(.rela.fini) + +.rel.rodata + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + +.rela.rodata + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + +.rel.data + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + +.rela.data + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + +.rel.ctors + *(.rel.ctors) + +.rela.ctors + *(.rela.ctors) + +.rel.dtors + *(.rel.dtors) + +.rela.dtors + *(.rela.dtors) + +.rel.got + *(.rel.got) + +.rela.got + *(.rela.got) + +.rel.bss + *(.rel.bss) + +.rela.bss + *(.rela.bss) + +.rel.plt + *(.rel.plt) + +.rela.plt + *(.rela.plt) + +.text 0x00000000 0x40a + *(.vectors) + .vectors 0x00000000 0x54 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr5/crtm16.o + 0x00000000 __vectors + 0x00000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + *(.progmem*) + 0x00000054 . = ALIGN (0x2) + 0x00000054 __trampolines_start = . + *(.trampolines) + .trampolines 0x00000054 0x0 linker stubs + *(.trampolines*) + 0x00000054 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x00000054 __ctors_start = . + *(.ctors) + 0x00000054 __ctors_end = . + 0x00000054 __dtors_start = . + *(.dtors) + 0x00000054 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x00000054 0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr5/crtm16.o + 0x00000054 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x00000054 0xc /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr5/crtm16.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x00000060 0x16 /usr/lib/gcc/avr/4.3.2/avr5/libgcc.a(_copy_data.o) + 0x00000060 __do_copy_data + .init4 0x00000076 0x10 /usr/lib/gcc/avr/4.3.2/avr5/libgcc.a(_clear_bss.o) + 0x00000076 __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x00000086 0x8 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr5/crtm16.o + *(.init9) + *(.text) + .text 0x0000008e 0x4 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr5/crtm16.o + 0x0000008e __vector_1 + 0x0000008e __vector_12 + 0x0000008e __bad_interrupt + 0x0000008e __vector_6 + 0x0000008e __vector_3 + 0x0000008e __vector_11 + 0x0000008e __vector_13 + 0x0000008e __vector_17 + 0x0000008e __vector_19 + 0x0000008e __vector_7 + 0x0000008e __vector_5 + 0x0000008e __vector_4 + 0x0000008e __vector_9 + 0x0000008e __vector_2 + 0x0000008e __vector_15 + 0x0000008e __vector_8 + 0x0000008e __vector_14 + 0x0000008e __vector_10 + 0x0000008e __vector_16 + 0x0000008e __vector_18 + 0x0000008e __vector_20 + .text 0x00000092 0x2c0 ./lcd4.o + 0x000001c4 lcd_write + 0x0000017e lcd_1s + 0x000002d0 lcd_blank_line + 0x00000156 lcd_5ms + 0x000001a6 lcd_instruct + 0x00000092 lcd_init + .text 0x00000352 0x46 ./lcd_wait.o + 0x00000352 wait_100us + .text 0x00000398 0x6e ./lcdtest.o + 0x00000398 main + .text 0x00000406 0x0 /usr/lib/gcc/avr/4.3.2/avr5/libgcc.a(_exit.o) + .text 0x00000406 0x0 /usr/lib/gcc/avr/4.3.2/avr5/libgcc.a(_copy_data.o) + .text 0x00000406 0x0 /usr/lib/gcc/avr/4.3.2/avr5/libgcc.a(_clear_bss.o) + 0x00000406 . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x00000406 0x0 /usr/lib/gcc/avr/4.3.2/avr5/libgcc.a(_exit.o) + .text.libgcc 0x00000406 0x0 /usr/lib/gcc/avr/4.3.2/avr5/libgcc.a(_copy_data.o) + .text.libgcc 0x00000406 0x0 /usr/lib/gcc/avr/4.3.2/avr5/libgcc.a(_clear_bss.o) + 0x00000406 . = ALIGN (0x2) + *(.fini9) + .fini9 0x00000406 0x0 /usr/lib/gcc/avr/4.3.2/avr5/libgcc.a(_exit.o) + 0x00000406 exit + 0x00000406 _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x00000406 0x4 /usr/lib/gcc/avr/4.3.2/avr5/libgcc.a(_exit.o) + *(.fini0) + 0x0000040a _etext = . + +.data 0x00800060 0x0 load address 0x0000040a + 0x00800060 PROVIDE (__data_start, .) + *(.data) + .data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr5/crtm16.o + .data 0x00800060 0x0 ./lcd4.o + .data 0x00800060 0x0 ./lcd_wait.o + .data 0x00800060 0x0 ./lcdtest.o + .data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.2/avr5/libgcc.a(_exit.o) + .data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.2/avr5/libgcc.a(_copy_data.o) + .data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.2/avr5/libgcc.a(_clear_bss.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x00800060 . = ALIGN (0x2) + 0x00800060 _edata = . + 0x00800060 PROVIDE (__data_end, .) + +.bss 0x00800060 0x0 load address 0x0000040a + 0x00800060 PROVIDE (__bss_start, .) + *(.bss) + .bss 0x00800060 0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr5/crtm16.o + .bss 0x00800060 0x0 ./lcd4.o + .bss 0x00800060 0x0 ./lcd_wait.o + .bss 0x00800060 0x0 ./lcdtest.o + .bss 0x00800060 0x0 /usr/lib/gcc/avr/4.3.2/avr5/libgcc.a(_exit.o) + .bss 0x00800060 0x0 /usr/lib/gcc/avr/4.3.2/avr5/libgcc.a(_copy_data.o) + .bss 0x00800060 0x0 /usr/lib/gcc/avr/4.3.2/avr5/libgcc.a(_clear_bss.o) + *(.bss*) + *(COMMON) + 0x00800060 PROVIDE (__bss_end, .) + 0x0000040a __data_load_start = LOADADDR (.data) + 0x0000040a __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800060 0x0 + 0x00800060 PROVIDE (__noinit_start, .) + *(.noinit*) + 0x00800060 PROVIDE (__noinit_end, .) + 0x00800060 _end = . + 0x00800060 PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0x111c + *(.stab) + .stab 0x00000000 0x6b4 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr5/crtm16.o + .stab 0x000006b4 0x708 ./lcd4.o + 0x714 (size before relaxing) + .stab 0x00000dbc 0x180 ./lcd_wait.o + 0x348 (size before relaxing) + .stab 0x00000f3c 0x1e0 ./lcdtest.o + 0x3a8 (size before relaxing) + +.stabstr 0x00000000 0x7cb + *(.stabstr) + .stabstr 0x00000000 0x7cb /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr5/crtm16.o + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment + *(.comment) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges + *(.debug_aranges) + +.debug_pubnames + *(.debug_pubnames) + +.debug_info + *(.debug_info) + *(.gnu.linkonce.wi.*) + +.debug_abbrev + *(.debug_abbrev) + +.debug_line + *(.debug_line) + +.debug_frame + *(.debug_frame) + +.debug_str + *(.debug_str) + +.debug_loc + *(.debug_loc) + +.debug_macinfo + *(.debug_macinfo) +OUTPUT(LCD4.elf elf32-avr) +LOAD linker stubs diff --git a/Libs/LCD4/Debug/lcd4.d b/Libs/LCD4/Debug/lcd4.d new file mode 100644 index 0000000..134a475 --- /dev/null +++ b/Libs/LCD4/Debug/lcd4.d @@ -0,0 +1,3 @@ +lcd4.d lcd4.o: ../lcd4.c ../lcd4.h + +../lcd4.h: diff --git a/Libs/LCD4/Debug/lcd4.o b/Libs/LCD4/Debug/lcd4.o new file mode 100644 index 0000000..fe5e513 Binary files /dev/null and b/Libs/LCD4/Debug/lcd4.o differ diff --git a/Libs/LCD4/Debug/lcd_wait.d b/Libs/LCD4/Debug/lcd_wait.d new file mode 100644 index 0000000..680a7db --- /dev/null +++ b/Libs/LCD4/Debug/lcd_wait.d @@ -0,0 +1,3 @@ +lcd_wait.d lcd_wait.o: ../lcd_wait.c ../lcd4.h + +../lcd4.h: diff --git a/Libs/LCD4/Debug/lcd_wait.o b/Libs/LCD4/Debug/lcd_wait.o new file mode 100644 index 0000000..2a1bd3c Binary files /dev/null and b/Libs/LCD4/Debug/lcd_wait.o differ diff --git a/Libs/LCD4/Debug/lcdtest.d b/Libs/LCD4/Debug/lcdtest.d new file mode 100644 index 0000000..c4a822b --- /dev/null +++ b/Libs/LCD4/Debug/lcdtest.d @@ -0,0 +1,3 @@ +lcdtest.d lcdtest.o: ../lcdtest.c ../lcd4.h + +../lcd4.h: diff --git a/Libs/LCD4/Debug/lcdtest.o b/Libs/LCD4/Debug/lcdtest.o new file mode 100644 index 0000000..99457c2 Binary files /dev/null and b/Libs/LCD4/Debug/lcdtest.o differ diff --git a/Libs/LCD4/Debug/makefile b/Libs/LCD4/Debug/makefile new file mode 100644 index 0000000..53ee29e --- /dev/null +++ b/Libs/LCD4/Debug/makefile @@ -0,0 +1,72 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_DEPS)),) +-include $(S_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +LSS += \ +LCD4.lss \ + +SIZEDUMMY += \ +sizedummy \ + + +# All Target +all: LCD4.elf secondary-outputs + +# Tool invocations +LCD4.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: AVR C Linker' + avr-gcc -Wl,-Map,LCD4.map -mmcu=atmega16 -o"LCD4.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +LCD4.lss: LCD4.elf + @echo 'Invoking: AVR Create Extended Listing' + -avr-objdump -h -S LCD4.elf >"LCD4.lss" + @echo 'Finished building: $@' + @echo ' ' + +sizedummy: LCD4.elf + @echo 'Invoking: Print Size' + -avr-size --format=avr --mcu=atmega16 LCD4.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(OBJS)$(C_DEPS)$(ASM_DEPS)$(ELFS)$(LSS)$(S_DEPS)$(SIZEDUMMY)$(S_UPPER_DEPS) LCD4.elf + -@echo ' ' + +secondary-outputs: $(LSS) $(SIZEDUMMY) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Libs/LCD4/Debug/objects.mk b/Libs/LCD4/Debug/objects.mk new file mode 100644 index 0000000..224ef68 --- /dev/null +++ b/Libs/LCD4/Debug/objects.mk @@ -0,0 +1,7 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := diff --git a/Libs/LCD4/Debug/sources.mk b/Libs/LCD4/Debug/sources.mk new file mode 100644 index 0000000..c5a8b0c --- /dev/null +++ b/Libs/LCD4/Debug/sources.mk @@ -0,0 +1,23 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +S_SRCS := +OBJ_SRCS := +ASM_SRCS := +OBJS := +C_DEPS := +ASM_DEPS := +ELFS := +LSS := +S_DEPS := +SIZEDUMMY := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ + diff --git a/Libs/LCD4/Debug/subdir.mk b/Libs/LCD4/Debug/subdir.mk new file mode 100644 index 0000000..1f664fd --- /dev/null +++ b/Libs/LCD4/Debug/subdir.mk @@ -0,0 +1,30 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lcd4.c \ +../lcd_wait.c \ +../lcdtest.c + +OBJS += \ +./lcd4.o \ +./lcd_wait.o \ +./lcdtest.o + +C_DEPS += \ +./lcd4.d \ +./lcd_wait.d \ +./lcdtest.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: AVR Compiler' + avr-gcc -Wall -g2 -gstabs -O0 -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega16 -DF_CPU=1000000UL -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -c -o"$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Libs/LCD4/Makefile b/Libs/LCD4/Makefile new file mode 100644 index 0000000..dcac8f3 --- /dev/null +++ b/Libs/LCD4/Makefile @@ -0,0 +1,429 @@ +# Hey Emacs, this is a -*- makefile -*- +# +# WinAVR Sample makefile written by Eric B. Weddington, Jörg Wunsch, et al. +# Released to the Public Domain +# Please read the make user manual! +# +# Additional material for this makefile was submitted by: +# Tim Henigan +# Peter Fleury +# Reiner Patommel +# Sander Pool +# Frederik Rouleau +# Markus Pfaff +# +# On command line: +# +# make all = Make software. +# +# make clean = Clean out built project files. +# +# make coff = Convert ELF to AVR COFF (for use with AVR Studio 3.x or VMLAB). +# +# make extcoff = Convert ELF to AVR Extended COFF (for use with AVR Studio +# 4.07 or greater). +# +# make program = Download the hex file to the device, using avrdude. Please +# customize the avrdude settings below first! +# +# make filename.s = Just compile filename.c into the assembler code only +# +# To rebuild project do "make clean" then "make all". +# + + +# MCU name +MCU = at90s2313 + +# Output format. (can be srec, ihex, binary) +FORMAT = ihex + +# Target file name (without extension). +TARGET = lcdtest + + +# List C source files here. (C dependencies are automatically generated.) +SRC = avrmb2313_lcd.c lcd_wait.c $(TARGET).c +# lcd.c +# avrmb2313.c + + +# List Assembler source files here. +# Make them always end in a capital .S. Files ending in a lowercase .s +# will not be considered source files but generated files (assembler +# output from the compiler), and will be deleted upon "make clean"! +# Even though the DOS/Win* filesystem matches both .s and .S the same, +# it will preserve the spelling of the filenames, and gcc itself does +# care about how the name is spelled on its command-line. +ASRC = + + + +# Optimization level, can be [0, 1, 2, 3, s]. +# 0 = turn off optimization. s = optimize for size. +# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) +OPT = s + +# Debugging format. +# Native formats for AVR-GCC's -g are stabs [default], or dwarf-2. +# AVR (extended) COFF requires stabs, plus an avr-objcopy run. +DEBUG = stabs + +# List any extra directories to look for include files here. +# Each directory must be seperated by a space. +EXTRAINCDIRS = + + +# Compiler flag to set the C Standard level. +# c89 - "ANSI" C +# gnu89 - c89 plus GCC extensions +# c99 - ISO C99 standard (not yet fully implemented) +# gnu99 - c99 plus GCC extensions +CSTANDARD = -std=gnu99 + +# Place -D or -U options here +CDEFS = + +# Place -I options here +CINCS = + + +# Compiler flags. +# -g*: generate debugging information +# -O*: optimization level +# -f...: tuning, see GCC manual and avr-libc documentation +# -Wall...: warning level +# -Wa,...: tell GCC to pass this to the assembler. +# -adhlns...: create assembler listing +CFLAGS = -g$(DEBUG) +CFLAGS += $(CDEFS) $(CINCS) +CFLAGS += -O$(OPT) +CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums +CFLAGS += -Wall -Wstrict-prototypes +CFLAGS += -Wa,-adhlns=$(<:.c=.lst) +CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) +CFLAGS += $(CSTANDARD) + + + +# Assembler flags. +# -Wa,...: tell GCC to pass this to the assembler. +# -ahlms: create listing +# -gstabs: have the assembler create line number information; note that +# for use in COFF files, additional information about filenames +# and function names needs to be present in the assembler source +# files -- see avr-libc docs [FIXME: not yet described there] +ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs + + + +#Additional libraries. + +# Minimalistic printf version +PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min + +# Floating point printf version (requires MATH_LIB = -lm below) +PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt + +PRINTF_LIB = + +# Minimalistic scanf version +SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min + +# Floating point + %[ scanf version (requires MATH_LIB = -lm below) +SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt + +SCANF_LIB = + +MATH_LIB = -lm + +# External memory options + +# 64 KB of external RAM, starting after internal RAM (ATmega128!), +# used for variables (.data/.bss) and heap (malloc()). +#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff + +# 64 KB of external RAM, starting after internal RAM (ATmega128!), +# only used for heap (malloc()). +#EXTMEMOPTS = -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff + +EXTMEMOPTS = + +# Linker flags. +# -Wl,...: tell GCC to pass this to linker. +# -Map: create map file +# --cref: add cross reference to map file +LDFLAGS = -Wl,-Map=$(TARGET).map,--cref +LDFLAGS += $(EXTMEMOPTS) +LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB) + + + + +# Programming support using avrdude. Settings and variables. + +# Programming hardware: alf avr910 avrisp bascom bsd +# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 +# +# Type: avrdude -c ? +# to get a full listing. +# +AVRDUDE_PROGRAMMER = stk500 + +# com1 = serial port. Use lpt1 to connect to parallel port. +AVRDUDE_PORT = com1 # programmer connected to serial device + +AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex +#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep + + +# Uncomment the following if you want avrdude's erase cycle counter. +# Note that this counter needs to be initialized first using -Yn, +# see avrdude manual. +#AVRDUDE_ERASE_COUNTER = -y + +# Uncomment the following if you do /not/ wish a verification to be +# performed after programming the device. +#AVRDUDE_NO_VERIFY = -V + +# Increase verbosity level. Please use this when submitting bug +# reports about avrdude. See +# to submit bug reports. +#AVRDUDE_VERBOSE = -v -v + +AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) +AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY) +AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE) +AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER) + + + +# --------------------------------------------------------------------------- + +# Define directories, if needed. +DIRAVR = c:/winavr +DIRAVRBIN = $(DIRAVR)/bin +DIRAVRUTILS = $(DIRAVR)/utils/bin +DIRINC = . +DIRLIB = $(DIRAVR)/avr/lib + + +# Define programs and commands. +SHELL = sh +CC = avr-gcc +OBJCOPY = avr-objcopy +OBJDUMP = avr-objdump +SIZE = avr-size +NM = avr-nm +AVRDUDE = avrdude +REMOVE = rm -f +COPY = cp + + + + +# Define Messages +# English +MSG_ERRORS_NONE = Errors: none +MSG_BEGIN = -------- begin -------- +MSG_END = -------- end -------- +MSG_SIZE_BEFORE = Size before: +MSG_SIZE_AFTER = Size after: +MSG_COFF = Converting to AVR COFF: +MSG_EXTENDED_COFF = Converting to AVR Extended COFF: +MSG_FLASH = Creating load file for Flash: +MSG_EEPROM = Creating load file for EEPROM: +MSG_EXTENDED_LISTING = Creating Extended Listing: +MSG_SYMBOL_TABLE = Creating Symbol Table: +MSG_LINKING = Linking: +MSG_COMPILING = Compiling: +MSG_ASSEMBLING = Assembling: +MSG_CLEANING = Cleaning project: + + + + +# Define all object files. +OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) + +# Define all listing files. +LST = $(ASRC:.S=.lst) $(SRC:.c=.lst) + + +# Compiler flags to generate dependency files. +GENDEPFLAGS = -Wp,-M,-MP,-MT,$(*F).o,-MF,.dep/$(@F).d + + +# Combine all necessary flags and optional flags. +# Add target processor to flags. +ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS) +ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) + + + + + +# Default target. +all: begin gccversion sizebefore build sizeafter finished end + +build: elf hex eep lss sym extcoff + +elf: $(TARGET).elf +hex: $(TARGET).hex +eep: $(TARGET).eep +lss: $(TARGET).lss +sym: $(TARGET).sym + + + +# Eye candy. +# AVR Studio 3.x does not check make's exit code but relies on +# the following magic strings to be generated by the compile job. +begin: + @echo + @echo $(MSG_BEGIN) + +finished: + @echo $(MSG_ERRORS_NONE) + +end: + @echo $(MSG_END) + @echo + + +# Display size of file. +HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex +ELFSIZE = $(SIZE) -A $(TARGET).elf +sizebefore: + @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi + +sizeafter: + @if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi + + + +# Display compiler version information. +gccversion : + @$(CC) --version + + + +# Program the device. +program: $(TARGET).hex $(TARGET).eep + $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) + + + + +# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB. +COFFCONVERT=$(OBJCOPY) --debugging \ +--change-section-address .data-0x800000 \ +--change-section-address .bss-0x800000 \ +--change-section-address .noinit-0x800000 \ +--change-section-address .eeprom-0x810000 + + +coff: $(TARGET).elf + @echo + @echo $(MSG_COFF) $(TARGET).cof + $(COFFCONVERT) -O coff-avr $< $(TARGET).cof + + +extcoff: $(TARGET).elf + @echo + @echo $(MSG_EXTENDED_COFF) $(TARGET).cof + $(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof + + + +# Create final output files (.hex, .eep) from ELF output file. +%.hex: %.elf + @echo + @echo $(MSG_FLASH) $@ + $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ + +%.eep: %.elf + @echo + @echo $(MSG_EEPROM) $@ + -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ + --change-section-lma .eeprom=0 -O $(FORMAT) $< $@ + +# Create extended listing file from ELF output file. +%.lss: %.elf + @echo + @echo $(MSG_EXTENDED_LISTING) $@ + $(OBJDUMP) -h -S $< > $@ + +# Create a symbol table from ELF output file. +%.sym: %.elf + @echo + @echo $(MSG_SYMBOL_TABLE) $@ + $(NM) -n $< > $@ + + + +# Link: create ELF output file from object files. +.SECONDARY : $(TARGET).elf +.PRECIOUS : $(OBJ) +%.elf: $(OBJ) + @echo + @echo $(MSG_LINKING) $@ + $(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS) + + +# Compile: create object files from C source files. +%.o : %.c + @echo + @echo $(MSG_COMPILING) $< + $(CC) -c $(ALL_CFLAGS) $< -o $@ + + +# Compile: create assembler files from C source files. +%.s : %.c + $(CC) -S $(ALL_CFLAGS) $< -o $@ + + +# Assemble: create object files from assembler source files. +%.o : %.S + @echo + @echo $(MSG_ASSEMBLING) $< + $(CC) -c $(ALL_ASFLAGS) $< -o $@ + + + +# Target: clean project. +clean: begin clean_list finished end + +clean_list : + @echo + @echo $(MSG_CLEANING) + $(REMOVE) $(TARGET).hex + $(REMOVE) $(TARGET).eep + $(REMOVE) $(TARGET).obj + $(REMOVE) $(TARGET).cof + $(REMOVE) $(TARGET).elf + $(REMOVE) $(TARGET).map + $(REMOVE) $(TARGET).obj + $(REMOVE) $(TARGET).a90 + $(REMOVE) $(TARGET).sym + $(REMOVE) $(TARGET).lnk + $(REMOVE) $(TARGET).lss + $(REMOVE) $(OBJ) + $(REMOVE) $(LST) + $(REMOVE) $(SRC:.c=.s) + $(REMOVE) $(SRC:.c=.d) + $(REMOVE) .dep/* + + + +# Include the dependency files. +-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) + + +# Listing of phony targets. +.PHONY : all begin finish end sizebefore sizeafter gccversion \ +build elf hex eep lss sym coff extcoff \ +clean clean_list program + + + diff --git a/Debug/AtTiny_alarm_clock.eep b/Libs/LCD4/avrmb2313_notkermobil/LCD4.eep similarity index 100% rename from Debug/AtTiny_alarm_clock.eep rename to Libs/LCD4/avrmb2313_notkermobil/LCD4.eep diff --git a/Libs/LCD4/avrmb2313_notkermobil/LCD4.elf b/Libs/LCD4/avrmb2313_notkermobil/LCD4.elf new file mode 100644 index 0000000..f38336d Binary files /dev/null and b/Libs/LCD4/avrmb2313_notkermobil/LCD4.elf differ diff --git a/Libs/LCD4/avrmb2313_notkermobil/LCD4.hex b/Libs/LCD4/avrmb2313_notkermobil/LCD4.hex new file mode 100644 index 0000000..30a8916 --- /dev/null +++ b/Libs/LCD4/avrmb2313_notkermobil/LCD4.hex @@ -0,0 +1,65 @@ +:1000000012C02AC029C028C027C026C025C024C0CD +:1000100023C022C021C020C01FC01EC01DC01CC0E4 +:100020001BC01AC019C011241FBECFEDCDBF10E0F8 +:10003000A0E6B0E0E2EFF3E002C005900D92A0363A +:10004000B107D9F710E0A0E6B0E001C01D92A036DC +:10005000B107E1F798D1CBC1D3CFDF93CF93CDB721 +:10006000DEB7E7E3F0E08FEF8083A1E3B0E0E1E308 +:10007000F0E0808188608C93A1E3B0E0E1E3F0E000 +:10008000808184608C93E8E3F0E08FEF8083A2E3CB +:10009000B0E0E2E3F0E0808188608C93A2E3B0E01E +:1000A000E2E3F0E0808184608C931DD01CD01BD0F3 +:1000B00080E33FD018D080E33CD042D180E339D0F8 +:1000C00088E237D0A7E3B0E0E7E3F0E08081807F0B +:1000D0008C938CE02ED086E02CD082E02AD003D006 +:1000E000CF91DF910895DF93CF930F92CDB7DEB715 +:1000F00082E3898304C024D18981815089838981E5 +:100100008823C9F70F90CF91DF910895DF93CF93A4 +:100110000F92CDB7DEB788EC898304C0E4DF898114 +:100120008150898389818823C9F70F90CF91DF910E +:100130000895DF93CF930F92CDB7DEB7898384E024 +:10014000698140E004D00F90CF91DF910895DF9353 +:10015000CF9300D000D00F92CDB7DEB789836A83EA +:100160004B838981282F30E03D832C838C819D81B6 +:10017000843091057CF42C813D8122303105BCF422 +:100180008C819D810097F9F02C813D8121303105D2 +:10019000B9F020C08C819D8184309105D9F4A2E30F +:1001A000B0E0E2E3F0E08081877F8C9313C08B8125 +:1001B0008F738B838981833019F48B81805C8B836F +:1001C0008B818068B6DFA2E3B0E0E2E3F0E08081FB +:1001D00088608C93A2E3B0E0E2E3F0E08081846089 +:1001E0008C93A2E3B0E0E2E3F0E0808184608C9342 +:1001F000A8E3B0E0E8E3F0E08081982F9F708A8167 +:10020000807F892B8C93A8E3B0E0E8E3F0E0808165 +:10021000982F9F708A81807F892B8C93A2E3B0E016 +:10022000E2E3F0E080818B7F8C93A2E3B0E0E2E335 +:10023000F0E080818B7F8C9383D0E7E3F0E08081D6 +:10024000803FB9F58A818295807F8A83A2E3B0E0FE +:10025000E2E3F0E0808184608C93A2E3B0E0E2E32B +:10026000F0E0808184608C93A8E3B0E0E8E3F0E004 +:100270008081982F9F708A81807F892B8C93A8E33F +:10028000B0E0E8E3F0E08081982F9F708A81807F62 +:10029000892B8C93A2E3B0E0E2E3F0E080818B7FD6 +:1002A0008C93A2E3B0E0E2E3F0E080818B7F8C935B +:1002B00047D00F900F900F900F900F90CF91DF913C +:1002C0000895DF93CF9300D000D00F92CDB7DEB763 +:1002D0008B838B81282F30E03D832C838C819D8103 +:1002E0008330910569F02C813D812430310531F056 +:1002F0008C819D818230910531F006C082E0E1DF82 +:1003000080E48A8301C01A828A81898307C081E0E0 +:1003100060E249811CDF89818F5F89838981282F71 +:1003200030E08A81882F90E00F96281739077CF3F8 +:100330000F900F900F900F900F90CF91DF91089535 +:10034000DF93CF9300D000D00F92CDB7DEB784E417 +:10035000898302C08981898189818A838A818D8389 +:100360008D81882311F081E08D839D818A81815068 +:100370008983992379F70F900F900F900F900F902A +:10038000CF91DF910895DF93CF93CDB7DEB7BEDE77 +:1003900064DEBCDEBBDE81E061E448E0D8DEB6DED0 +:1003A000B5DE80E062E440E0D2DEB0DEAFDE80E0C9 +:1003B00063E440E0CCDEAADEA9DE80E064E440E055 +:1003C000C6DEA4DEA3DEE7E3F0E08FE08083E8E3AF +:1003D000F0E08FE080839ADEE8E3F0E085E0808360 +:1003E00095DEE8E3F0E08AE0808390DEF0CFF894D9 +:0203F000FFCF3D +:00000001FF diff --git a/Libs/LCD4/avrmb2313_notkermobil/LCD4.lss b/Libs/LCD4/avrmb2313_notkermobil/LCD4.lss new file mode 100644 index 0000000..7ed71bf --- /dev/null +++ b/Libs/LCD4/avrmb2313_notkermobil/LCD4.lss @@ -0,0 +1,727 @@ + +LCD4.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 000003f2 00000000 00000000 00000054 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .stab 00001158 00000000 00000000 00000448 2**2 + CONTENTS, READONLY, DEBUGGING + 2 .stabstr 000007ee 00000000 00000000 000015a0 2**0 + CONTENTS, READONLY, DEBUGGING +Disassembly of section .text: + +00000000 <__vectors>: + 0: 12 c0 rjmp .+36 ; 0x26 <__ctors_end> + 2: 2a c0 rjmp .+84 ; 0x58 <__bad_interrupt> + 4: 29 c0 rjmp .+82 ; 0x58 <__bad_interrupt> + 6: 28 c0 rjmp .+80 ; 0x58 <__bad_interrupt> + 8: 27 c0 rjmp .+78 ; 0x58 <__bad_interrupt> + a: 26 c0 rjmp .+76 ; 0x58 <__bad_interrupt> + c: 25 c0 rjmp .+74 ; 0x58 <__bad_interrupt> + e: 24 c0 rjmp .+72 ; 0x58 <__bad_interrupt> + 10: 23 c0 rjmp .+70 ; 0x58 <__bad_interrupt> + 12: 22 c0 rjmp .+68 ; 0x58 <__bad_interrupt> + 14: 21 c0 rjmp .+66 ; 0x58 <__bad_interrupt> + 16: 20 c0 rjmp .+64 ; 0x58 <__bad_interrupt> + 18: 1f c0 rjmp .+62 ; 0x58 <__bad_interrupt> + 1a: 1e c0 rjmp .+60 ; 0x58 <__bad_interrupt> + 1c: 1d c0 rjmp .+58 ; 0x58 <__bad_interrupt> + 1e: 1c c0 rjmp .+56 ; 0x58 <__bad_interrupt> + 20: 1b c0 rjmp .+54 ; 0x58 <__bad_interrupt> + 22: 1a c0 rjmp .+52 ; 0x58 <__bad_interrupt> + 24: 19 c0 rjmp .+50 ; 0x58 <__bad_interrupt> + +00000026 <__ctors_end>: + 26: 11 24 eor r1, r1 + 28: 1f be out 0x3f, r1 ; 63 + 2a: cf ed ldi r28, 0xDF ; 223 + 2c: cd bf out 0x3d, r28 ; 61 + +0000002e <__do_copy_data>: + 2e: 10 e0 ldi r17, 0x00 ; 0 + 30: a0 e6 ldi r26, 0x60 ; 96 + 32: b0 e0 ldi r27, 0x00 ; 0 + 34: e2 ef ldi r30, 0xF2 ; 242 + 36: f3 e0 ldi r31, 0x03 ; 3 + 38: 02 c0 rjmp .+4 ; 0x3e <__SP_H__> + +0000003a <.do_copy_data_loop>: + 3a: 05 90 lpm r0, Z+ + 3c: 0d 92 st X+, r0 + +0000003e <.do_copy_data_start>: + 3e: a0 36 cpi r26, 0x60 ; 96 + 40: b1 07 cpc r27, r17 + 42: d9 f7 brne .-10 ; 0x3a <.do_copy_data_loop> + +00000044 <__do_clear_bss>: + 44: 10 e0 ldi r17, 0x00 ; 0 + 46: a0 e6 ldi r26, 0x60 ; 96 + 48: b0 e0 ldi r27, 0x00 ; 0 + 4a: 01 c0 rjmp .+2 ; 0x4e <.do_clear_bss_start> + +0000004c <.do_clear_bss_loop>: + 4c: 1d 92 st X+, r1 + +0000004e <.do_clear_bss_start>: + 4e: a0 36 cpi r26, 0x60 ; 96 + 50: b1 07 cpc r27, r17 + 52: e1 f7 brne .-8 ; 0x4c <.do_clear_bss_loop> + 54: 98 d1 rcall .+816 ; 0x386
+ 56: cb c1 rjmp .+918 ; 0x3ee <_exit> + +00000058 <__bad_interrupt>: + 58: d3 cf rjmp .-90 ; 0x0 <__heap_end> + +0000005a : + +#define lcd_mask_Write_Adress(position) ((position & 0x7F)| lcd_SET_DD_RAM) + + + +void lcd_init(void){ + 5a: df 93 push r29 + 5c: cf 93 push r28 + 5e: cd b7 in r28, 0x3d ; 61 + 60: de b7 in r29, 0x3e ; 62 + /* setting up ports first */ + lcd_dataport_DDR=0xff; + 62: e7 e3 ldi r30, 0x37 ; 55 + 64: f0 e0 ldi r31, 0x00 ; 0 + 66: 8f ef ldi r24, 0xFF ; 255 + 68: 80 83 st Z, r24 + set_lcd_RS_DDR; + 6a: a1 e3 ldi r26, 0x31 ; 49 + 6c: b0 e0 ldi r27, 0x00 ; 0 + 6e: e1 e3 ldi r30, 0x31 ; 49 + 70: f0 e0 ldi r31, 0x00 ; 0 + 72: 80 81 ld r24, Z + 74: 88 60 ori r24, 0x08 ; 8 + 76: 8c 93 st X, r24 + set_lcd_E_DDR; + 78: a1 e3 ldi r26, 0x31 ; 49 + 7a: b0 e0 ldi r27, 0x00 ; 0 + 7c: e1 e3 ldi r30, 0x31 ; 49 + 7e: f0 e0 ldi r31, 0x00 ; 0 + 80: 80 81 ld r24, Z + 82: 84 60 ori r24, 0x04 ; 4 + 84: 8c 93 st X, r24 + /* end setting up ports */ + lcd_dataport=0xff; + 86: e8 e3 ldi r30, 0x38 ; 56 + 88: f0 e0 ldi r31, 0x00 ; 0 + 8a: 8f ef ldi r24, 0xFF ; 255 + 8c: 80 83 st Z, r24 + set_lcd_RS; + 8e: a2 e3 ldi r26, 0x32 ; 50 + 90: b0 e0 ldi r27, 0x00 ; 0 + 92: e2 e3 ldi r30, 0x32 ; 50 + 94: f0 e0 ldi r31, 0x00 ; 0 + 96: 80 81 ld r24, Z + 98: 88 60 ori r24, 0x08 ; 8 + 9a: 8c 93 st X, r24 + set_lcd_E; + 9c: a2 e3 ldi r26, 0x32 ; 50 + 9e: b0 e0 ldi r27, 0x00 ; 0 + a0: e2 e3 ldi r30, 0x32 ; 50 + a2: f0 e0 ldi r31, 0x00 ; 0 + a4: 80 81 ld r24, Z + a6: 84 60 ori r24, 0x04 ; 4 + a8: 8c 93 st X, r24 + lcd_5ms(); + aa: 1d d0 rcall .+58 ; 0xe6 + lcd_5ms(); + ac: 1c d0 rcall .+56 ; 0xe6 + lcd_5ms(); + ae: 1b d0 rcall .+54 ; 0xe6 + lcd_instruct(lcd_SET_FUNCTION_8BIT); + b0: 80 e3 ldi r24, 0x30 ; 48 + b2: 3f d0 rcall .+126 ; 0x132 + lcd_5ms(); + b4: 18 d0 rcall .+48 ; 0xe6 + lcd_instruct(lcd_SET_FUNCTION_8BIT); + b6: 80 e3 ldi r24, 0x30 ; 48 + b8: 3c d0 rcall .+120 ; 0x132 + wait_100us(); + ba: 42 d1 rcall .+644 ; 0x340 + lcd_instruct(lcd_SET_FUNCTION_8BIT); + bc: 80 e3 ldi r24, 0x30 ; 48 + be: 39 d0 rcall .+114 ; 0x132 + if (lcd_dataport_mask==0xf0){ + lcd_instruct(lcd_SET_FUNCTION_4BIT|lcd_SET_FUNCTION_2LINE|lcd_SET_FUNCTION_7X5); + c0: 88 e2 ldi r24, 0x28 ; 40 + c2: 37 d0 rcall .+110 ; 0x132 + }else{ + lcd_instruct(lcd_SET_FUNCTION_8BIT|lcd_SET_FUNCTION_2LINE|lcd_SET_FUNCTION_7X5); + } + lcd_dataport_DDR&=lcd_dataport_mask; + c4: a7 e3 ldi r26, 0x37 ; 55 + c6: b0 e0 ldi r27, 0x00 ; 0 + c8: e7 e3 ldi r30, 0x37 ; 55 + ca: f0 e0 ldi r31, 0x00 ; 0 + cc: 80 81 ld r24, Z + ce: 80 7f andi r24, 0xF0 ; 240 + d0: 8c 93 st X, r24 + lcd_instruct(lcd_DISPLAY_OO_ON|lcd_DISPLAY_OO_CURSOR_OFF); + d2: 8c e0 ldi r24, 0x0C ; 12 + d4: 2e d0 rcall .+92 ; 0x132 + lcd_instruct(lcd_ENTRY_MODE_SET|lcd_ENTRY_MODE_SET_INCREASE | lcd_ENTRY_MS_DISPLAY_NOT_S); + d6: 86 e0 ldi r24, 0x06 ; 6 + d8: 2c d0 rcall .+88 ; 0x132 + lcd_instruct(lcd_RETURN_HOME); + da: 82 e0 ldi r24, 0x02 ; 2 + dc: 2a d0 rcall .+84 ; 0x132 + lcd_5ms(); + de: 03 d0 rcall .+6 ; 0xe6 +} + e0: cf 91 pop r28 + e2: df 91 pop r29 + e4: 08 95 ret + +000000e6 : + +void lcd_5ms(void){ + e6: df 93 push r29 + e8: cf 93 push r28 + ea: 0f 92 push r0 + ec: cd b7 in r28, 0x3d ; 61 + ee: de b7 in r29, 0x3e ; 62 + for(uint8_t i=50;i>0;i--){ + f0: 82 e3 ldi r24, 0x32 ; 50 + f2: 89 83 std Y+1, r24 ; 0x01 + f4: 04 c0 rjmp .+8 ; 0xfe + wait_100us(); + f6: 24 d1 rcall .+584 ; 0x340 + lcd_instruct(lcd_RETURN_HOME); + lcd_5ms(); +} + +void lcd_5ms(void){ + for(uint8_t i=50;i>0;i--){ + f8: 89 81 ldd r24, Y+1 ; 0x01 + fa: 81 50 subi r24, 0x01 ; 1 + fc: 89 83 std Y+1, r24 ; 0x01 + fe: 89 81 ldd r24, Y+1 ; 0x01 + 100: 88 23 and r24, r24 + 102: c9 f7 brne .-14 ; 0xf6 + wait_100us(); + } + } + 104: 0f 90 pop r0 + 106: cf 91 pop r28 + 108: df 91 pop r29 + 10a: 08 95 ret + +0000010c : + +void lcd_1s(void){ + 10c: df 93 push r29 + 10e: cf 93 push r28 + 110: 0f 92 push r0 + 112: cd b7 in r28, 0x3d ; 61 + 114: de b7 in r29, 0x3e ; 62 + for(uint8_t i=200;i>0;i--){ + 116: 88 ec ldi r24, 0xC8 ; 200 + 118: 89 83 std Y+1, r24 ; 0x01 + 11a: 04 c0 rjmp .+8 ; 0x124 + lcd_5ms(); + 11c: e4 df rcall .-56 ; 0xe6 + wait_100us(); + } + } + +void lcd_1s(void){ + for(uint8_t i=200;i>0;i--){ + 11e: 89 81 ldd r24, Y+1 ; 0x01 + 120: 81 50 subi r24, 0x01 ; 1 + 122: 89 83 std Y+1, r24 ; 0x01 + 124: 89 81 ldd r24, Y+1 ; 0x01 + 126: 88 23 and r24, r24 + 128: c9 f7 brne .-14 ; 0x11c + lcd_5ms(); + } + } + 12a: 0f 90 pop r0 + 12c: cf 91 pop r28 + 12e: df 91 pop r29 + 130: 08 95 ret + +00000132 : + +void lcd_instruct(uint8_t zeichen){ + 132: df 93 push r29 + 134: cf 93 push r28 + 136: 0f 92 push r0 + 138: cd b7 in r28, 0x3d ; 61 + 13a: de b7 in r29, 0x3e ; 62 + 13c: 89 83 std Y+1, r24 ; 0x01 + lcd_write(instruct,zeichen,0); + 13e: 84 e0 ldi r24, 0x04 ; 4 + 140: 69 81 ldd r22, Y+1 ; 0x01 + 142: 40 e0 ldi r20, 0x00 ; 0 + 144: 04 d0 rcall .+8 ; 0x14e + } + 146: 0f 90 pop r0 + 148: cf 91 pop r28 + 14a: df 91 pop r29 + 14c: 08 95 ret + +0000014e : + +void lcd_write(uint8_t lcd_whichwrite, uint8_t zeichen, uint8_t position){ + 14e: df 93 push r29 + 150: cf 93 push r28 + 152: 00 d0 rcall .+0 ; 0x154 + 154: 00 d0 rcall .+0 ; 0x156 + 156: 0f 92 push r0 + 158: cd b7 in r28, 0x3d ; 61 + 15a: de b7 in r29, 0x3e ; 62 + 15c: 89 83 std Y+1, r24 ; 0x01 + 15e: 6a 83 std Y+2, r22 ; 0x02 + 160: 4b 83 std Y+3, r20 ; 0x03 + switch (lcd_whichwrite){ + 162: 89 81 ldd r24, Y+1 ; 0x01 + 164: 28 2f mov r18, r24 + 166: 30 e0 ldi r19, 0x00 ; 0 + 168: 3d 83 std Y+5, r19 ; 0x05 + 16a: 2c 83 std Y+4, r18 ; 0x04 + 16c: 8c 81 ldd r24, Y+4 ; 0x04 + 16e: 9d 81 ldd r25, Y+5 ; 0x05 + 170: 84 30 cpi r24, 0x04 ; 4 + 172: 91 05 cpc r25, r1 + 174: 7c f4 brge .+30 ; 0x194 + 176: 2c 81 ldd r18, Y+4 ; 0x04 + 178: 3d 81 ldd r19, Y+5 ; 0x05 + 17a: 22 30 cpi r18, 0x02 ; 2 + 17c: 31 05 cpc r19, r1 + 17e: bc f4 brge .+46 ; 0x1ae + 180: 8c 81 ldd r24, Y+4 ; 0x04 + 182: 9d 81 ldd r25, Y+5 ; 0x05 + 184: 00 97 sbiw r24, 0x00 ; 0 + 186: f9 f0 breq .+62 ; 0x1c6 + 188: 2c 81 ldd r18, Y+4 ; 0x04 + 18a: 3d 81 ldd r19, Y+5 ; 0x05 + 18c: 21 30 cpi r18, 0x01 ; 1 + 18e: 31 05 cpc r19, r1 + 190: b9 f0 breq .+46 ; 0x1c0 + 192: 20 c0 rjmp .+64 ; 0x1d4 + 194: 8c 81 ldd r24, Y+4 ; 0x04 + 196: 9d 81 ldd r25, Y+5 ; 0x05 + 198: 84 30 cpi r24, 0x04 ; 4 + 19a: 91 05 cpc r25, r1 + 19c: d9 f4 brne .+54 ; 0x1d4 + case instruct : + unset_lcd_RS; + 19e: a2 e3 ldi r26, 0x32 ; 50 + 1a0: b0 e0 ldi r27, 0x00 ; 0 + 1a2: e2 e3 ldi r30, 0x32 ; 50 + 1a4: f0 e0 ldi r31, 0x00 ; 0 + 1a6: 80 81 ld r24, Z + 1a8: 87 7f andi r24, 0xF7 ; 247 + 1aa: 8c 93 st X, r24 + 1ac: 13 c0 rjmp .+38 ; 0x1d4 + break; + case line2: + case line1: + position = position & 0x3f; + 1ae: 8b 81 ldd r24, Y+3 ; 0x03 + 1b0: 8f 73 andi r24, 0x3F ; 63 + 1b2: 8b 83 std Y+3, r24 ; 0x03 + if (lcd_whichwrite == line2){ position=position + 0x40; }; + 1b4: 89 81 ldd r24, Y+1 ; 0x01 + 1b6: 83 30 cpi r24, 0x03 ; 3 + 1b8: 19 f4 brne .+6 ; 0x1c0 + 1ba: 8b 81 ldd r24, Y+3 ; 0x03 + 1bc: 80 5c subi r24, 0xC0 ; 192 + 1be: 8b 83 std Y+3, r24 ; 0x03 + case therepos: + lcd_instruct(lcd_mask_Write_Adress(position)); + 1c0: 8b 81 ldd r24, Y+3 ; 0x03 + 1c2: 80 68 ori r24, 0x80 ; 128 + 1c4: b6 df rcall .-148 ; 0x132 + case here: + set_lcd_RS; + 1c6: a2 e3 ldi r26, 0x32 ; 50 + 1c8: b0 e0 ldi r27, 0x00 ; 0 + 1ca: e2 e3 ldi r30, 0x32 ; 50 + 1cc: f0 e0 ldi r31, 0x00 ; 0 + 1ce: 80 81 ld r24, Z + 1d0: 88 60 ori r24, 0x08 ; 8 + 1d2: 8c 93 st X, r24 + break; + + + } + set_lcd_E; + 1d4: a2 e3 ldi r26, 0x32 ; 50 + 1d6: b0 e0 ldi r27, 0x00 ; 0 + 1d8: e2 e3 ldi r30, 0x32 ; 50 + 1da: f0 e0 ldi r31, 0x00 ; 0 + 1dc: 80 81 ld r24, Z + 1de: 84 60 ori r24, 0x04 ; 4 + 1e0: 8c 93 st X, r24 + set_lcd_E; + 1e2: a2 e3 ldi r26, 0x32 ; 50 + 1e4: b0 e0 ldi r27, 0x00 ; 0 + 1e6: e2 e3 ldi r30, 0x32 ; 50 + 1e8: f0 e0 ldi r31, 0x00 ; 0 + 1ea: 80 81 ld r24, Z + 1ec: 84 60 ori r24, 0x04 ; 4 + 1ee: 8c 93 st X, r24 + lcd_dataport=lcd_dataport&~lcd_dataport_mask|zeichen&lcd_dataport_mask; + 1f0: a8 e3 ldi r26, 0x38 ; 56 + 1f2: b0 e0 ldi r27, 0x00 ; 0 + 1f4: e8 e3 ldi r30, 0x38 ; 56 + 1f6: f0 e0 ldi r31, 0x00 ; 0 + 1f8: 80 81 ld r24, Z + 1fa: 98 2f mov r25, r24 + 1fc: 9f 70 andi r25, 0x0F ; 15 + 1fe: 8a 81 ldd r24, Y+2 ; 0x02 + 200: 80 7f andi r24, 0xF0 ; 240 + 202: 89 2b or r24, r25 + 204: 8c 93 st X, r24 + lcd_dataport=lcd_dataport&~lcd_dataport_mask|zeichen&lcd_dataport_mask; + 206: a8 e3 ldi r26, 0x38 ; 56 + 208: b0 e0 ldi r27, 0x00 ; 0 + 20a: e8 e3 ldi r30, 0x38 ; 56 + 20c: f0 e0 ldi r31, 0x00 ; 0 + 20e: 80 81 ld r24, Z + 210: 98 2f mov r25, r24 + 212: 9f 70 andi r25, 0x0F ; 15 + 214: 8a 81 ldd r24, Y+2 ; 0x02 + 216: 80 7f andi r24, 0xF0 ; 240 + 218: 89 2b or r24, r25 + 21a: 8c 93 st X, r24 + unset_lcd_E; + 21c: a2 e3 ldi r26, 0x32 ; 50 + 21e: b0 e0 ldi r27, 0x00 ; 0 + 220: e2 e3 ldi r30, 0x32 ; 50 + 222: f0 e0 ldi r31, 0x00 ; 0 + 224: 80 81 ld r24, Z + 226: 8b 7f andi r24, 0xFB ; 251 + 228: 8c 93 st X, r24 + unset_lcd_E; + 22a: a2 e3 ldi r26, 0x32 ; 50 + 22c: b0 e0 ldi r27, 0x00 ; 0 + 22e: e2 e3 ldi r30, 0x32 ; 50 + 230: f0 e0 ldi r31, 0x00 ; 0 + 232: 80 81 ld r24, Z + 234: 8b 7f andi r24, 0xFB ; 251 + 236: 8c 93 st X, r24 + wait_100us(); + 238: 83 d0 rcall .+262 ; 0x340 + if (lcd_dataport_DDR==0xf0){ + 23a: e7 e3 ldi r30, 0x37 ; 55 + 23c: f0 e0 ldi r31, 0x00 ; 0 + 23e: 80 81 ld r24, Z + 240: 80 3f cpi r24, 0xF0 ; 240 + 242: b9 f5 brne .+110 ; 0x2b2 + zeichen=zeichen << 4; + 244: 8a 81 ldd r24, Y+2 ; 0x02 + 246: 82 95 swap r24 + 248: 80 7f andi r24, 0xF0 ; 240 + 24a: 8a 83 std Y+2, r24 ; 0x02 + set_lcd_E; + 24c: a2 e3 ldi r26, 0x32 ; 50 + 24e: b0 e0 ldi r27, 0x00 ; 0 + 250: e2 e3 ldi r30, 0x32 ; 50 + 252: f0 e0 ldi r31, 0x00 ; 0 + 254: 80 81 ld r24, Z + 256: 84 60 ori r24, 0x04 ; 4 + 258: 8c 93 st X, r24 + set_lcd_E; + 25a: a2 e3 ldi r26, 0x32 ; 50 + 25c: b0 e0 ldi r27, 0x00 ; 0 + 25e: e2 e3 ldi r30, 0x32 ; 50 + 260: f0 e0 ldi r31, 0x00 ; 0 + 262: 80 81 ld r24, Z + 264: 84 60 ori r24, 0x04 ; 4 + 266: 8c 93 st X, r24 + lcd_dataport=lcd_dataport&~lcd_dataport_mask|zeichen&lcd_dataport_mask; + 268: a8 e3 ldi r26, 0x38 ; 56 + 26a: b0 e0 ldi r27, 0x00 ; 0 + 26c: e8 e3 ldi r30, 0x38 ; 56 + 26e: f0 e0 ldi r31, 0x00 ; 0 + 270: 80 81 ld r24, Z + 272: 98 2f mov r25, r24 + 274: 9f 70 andi r25, 0x0F ; 15 + 276: 8a 81 ldd r24, Y+2 ; 0x02 + 278: 80 7f andi r24, 0xF0 ; 240 + 27a: 89 2b or r24, r25 + 27c: 8c 93 st X, r24 + lcd_dataport=lcd_dataport&~lcd_dataport_mask|zeichen&lcd_dataport_mask; + 27e: a8 e3 ldi r26, 0x38 ; 56 + 280: b0 e0 ldi r27, 0x00 ; 0 + 282: e8 e3 ldi r30, 0x38 ; 56 + 284: f0 e0 ldi r31, 0x00 ; 0 + 286: 80 81 ld r24, Z + 288: 98 2f mov r25, r24 + 28a: 9f 70 andi r25, 0x0F ; 15 + 28c: 8a 81 ldd r24, Y+2 ; 0x02 + 28e: 80 7f andi r24, 0xF0 ; 240 + 290: 89 2b or r24, r25 + 292: 8c 93 st X, r24 + unset_lcd_E; + 294: a2 e3 ldi r26, 0x32 ; 50 + 296: b0 e0 ldi r27, 0x00 ; 0 + 298: e2 e3 ldi r30, 0x32 ; 50 + 29a: f0 e0 ldi r31, 0x00 ; 0 + 29c: 80 81 ld r24, Z + 29e: 8b 7f andi r24, 0xFB ; 251 + 2a0: 8c 93 st X, r24 + unset_lcd_E; + 2a2: a2 e3 ldi r26, 0x32 ; 50 + 2a4: b0 e0 ldi r27, 0x00 ; 0 + 2a6: e2 e3 ldi r30, 0x32 ; 50 + 2a8: f0 e0 ldi r31, 0x00 ; 0 + 2aa: 80 81 ld r24, Z + 2ac: 8b 7f andi r24, 0xFB ; 251 + 2ae: 8c 93 st X, r24 + wait_100us(); + 2b0: 47 d0 rcall .+142 ; 0x340 + } +} + 2b2: 0f 90 pop r0 + 2b4: 0f 90 pop r0 + 2b6: 0f 90 pop r0 + 2b8: 0f 90 pop r0 + 2ba: 0f 90 pop r0 + 2bc: cf 91 pop r28 + 2be: df 91 pop r29 + 2c0: 08 95 ret + +000002c2 : + +void lcd_blank_line(uint8_t lcd_whichwrite) + { + 2c2: df 93 push r29 + 2c4: cf 93 push r28 + 2c6: 00 d0 rcall .+0 ; 0x2c8 + 2c8: 00 d0 rcall .+0 ; 0x2ca + 2ca: 0f 92 push r0 + 2cc: cd b7 in r28, 0x3d ; 61 + 2ce: de b7 in r29, 0x3e ; 62 + 2d0: 8b 83 std Y+3, r24 ; 0x03 + uint8_t count; + uint8_t countin; + + switch (lcd_whichwrite){ + 2d2: 8b 81 ldd r24, Y+3 ; 0x03 + 2d4: 28 2f mov r18, r24 + 2d6: 30 e0 ldi r19, 0x00 ; 0 + 2d8: 3d 83 std Y+5, r19 ; 0x05 + 2da: 2c 83 std Y+4, r18 ; 0x04 + 2dc: 8c 81 ldd r24, Y+4 ; 0x04 + 2de: 9d 81 ldd r25, Y+5 ; 0x05 + 2e0: 83 30 cpi r24, 0x03 ; 3 + 2e2: 91 05 cpc r25, r1 + 2e4: 69 f0 breq .+26 ; 0x300 + 2e6: 2c 81 ldd r18, Y+4 ; 0x04 + 2e8: 3d 81 ldd r19, Y+5 ; 0x05 + 2ea: 24 30 cpi r18, 0x04 ; 4 + 2ec: 31 05 cpc r19, r1 + 2ee: 31 f0 breq .+12 ; 0x2fc + 2f0: 8c 81 ldd r24, Y+4 ; 0x04 + 2f2: 9d 81 ldd r25, Y+5 ; 0x05 + 2f4: 82 30 cpi r24, 0x02 ; 2 + 2f6: 91 05 cpc r25, r1 + 2f8: 31 f0 breq .+12 ; 0x306 + 2fa: 06 c0 rjmp .+12 ; 0x308 + case instruct: + lcd_blank_line(line1); + 2fc: 82 e0 ldi r24, 0x02 ; 2 + 2fe: e1 df rcall .-62 ; 0x2c2 + case line2: + count=0x40; + 300: 80 e4 ldi r24, 0x40 ; 64 + 302: 8a 83 std Y+2, r24 ; 0x02 + 304: 01 c0 rjmp .+2 ; 0x308 + break; + case line1: + count=0; + 306: 1a 82 std Y+2, r1 ; 0x02 + } + + for (countin=count; countin < count+15; countin++){ + 308: 8a 81 ldd r24, Y+2 ; 0x02 + 30a: 89 83 std Y+1, r24 ; 0x01 + 30c: 07 c0 rjmp .+14 ; 0x31c + lcd_write(therepos, 32, countin); + 30e: 81 e0 ldi r24, 0x01 ; 1 + 310: 60 e2 ldi r22, 0x20 ; 32 + 312: 49 81 ldd r20, Y+1 ; 0x01 + 314: 1c df rcall .-456 ; 0x14e + break; + case line1: + count=0; + } + + for (countin=count; countin < count+15; countin++){ + 316: 89 81 ldd r24, Y+1 ; 0x01 + 318: 8f 5f subi r24, 0xFF ; 255 + 31a: 89 83 std Y+1, r24 ; 0x01 + 31c: 89 81 ldd r24, Y+1 ; 0x01 + 31e: 28 2f mov r18, r24 + 320: 30 e0 ldi r19, 0x00 ; 0 + 322: 8a 81 ldd r24, Y+2 ; 0x02 + 324: 88 2f mov r24, r24 + 326: 90 e0 ldi r25, 0x00 ; 0 + 328: 0f 96 adiw r24, 0x0f ; 15 + 32a: 28 17 cp r18, r24 + 32c: 39 07 cpc r19, r25 + 32e: 7c f3 brlt .-34 ; 0x30e + lcd_write(therepos, 32, countin); + } +} + 330: 0f 90 pop r0 + 332: 0f 90 pop r0 + 334: 0f 90 pop r0 + 336: 0f 90 pop r0 + 338: 0f 90 pop r0 + 33a: cf 91 pop r28 + 33c: df 91 pop r29 + 33e: 08 95 ret + +00000340 : +#include +#include +#include "lcd4.h" + +void wait_100us(void){ + 340: df 93 push r29 + 342: cf 93 push r28 + 344: 00 d0 rcall .+0 ; 0x346 + 346: 00 d0 rcall .+0 ; 0x348 + 348: 0f 92 push r0 + 34a: cd b7 in r28, 0x3d ; 61 + 34c: de b7 in r29, 0x3e ; 62 + for (volatile uint8_t i=68;i--;i>0){ + 34e: 84 e4 ldi r24, 0x44 ; 68 + 350: 89 83 std Y+1, r24 ; 0x01 + 352: 02 c0 rjmp .+4 ; 0x358 + i; + 354: 89 81 ldd r24, Y+1 ; 0x01 +#include +#include +#include "lcd4.h" + +void wait_100us(void){ + for (volatile uint8_t i=68;i--;i>0){ + 356: 89 81 ldd r24, Y+1 ; 0x01 + 358: 89 81 ldd r24, Y+1 ; 0x01 + 35a: 8a 83 std Y+2, r24 ; 0x02 + 35c: 8a 81 ldd r24, Y+2 ; 0x02 + 35e: 8d 83 std Y+5, r24 ; 0x05 + 360: 8d 81 ldd r24, Y+5 ; 0x05 + 362: 88 23 and r24, r24 + 364: 11 f0 breq .+4 ; 0x36a + 366: 81 e0 ldi r24, 0x01 ; 1 + 368: 8d 83 std Y+5, r24 ; 0x05 + 36a: 9d 81 ldd r25, Y+5 ; 0x05 + 36c: 8a 81 ldd r24, Y+2 ; 0x02 + 36e: 81 50 subi r24, 0x01 ; 1 + 370: 89 83 std Y+1, r24 ; 0x01 + 372: 99 23 and r25, r25 + 374: 79 f7 brne .-34 ; 0x354 + i; + } +} + 376: 0f 90 pop r0 + 378: 0f 90 pop r0 + 37a: 0f 90 pop r0 + 37c: 0f 90 pop r0 + 37e: 0f 90 pop r0 + 380: cf 91 pop r28 + 382: df 91 pop r29 + 384: 08 95 ret + +00000386
: +#include +#include +#define lcd_bus8 +#include "lcd4.h" + +int main(void){ + 386: df 93 push r29 + 388: cf 93 push r28 + 38a: cd b7 in r28, 0x3d ; 61 + 38c: de b7 in r29, 0x3e ; 62 + lcd_1s(); + 38e: be de rcall .-644 ; 0x10c + lcd_init(); + 390: 64 de rcall .-824 ; 0x5a + lcd_1s(); + 392: bc de rcall .-648 ; 0x10c + lcd_1s(); + 394: bb de rcall .-650 ; 0x10c + lcd_write(therepos,0x41,0x08); + 396: 81 e0 ldi r24, 0x01 ; 1 + 398: 61 e4 ldi r22, 0x41 ; 65 + 39a: 48 e0 ldi r20, 0x08 ; 8 + 39c: d8 de rcall .-592 ; 0x14e + lcd_1s(); + 39e: b6 de rcall .-660 ; 0x10c + lcd_1s(); + 3a0: b5 de rcall .-662 ; 0x10c + lcd_write(here,0x42,0); + 3a2: 80 e0 ldi r24, 0x00 ; 0 + 3a4: 62 e4 ldi r22, 0x42 ; 66 + 3a6: 40 e0 ldi r20, 0x00 ; 0 + 3a8: d2 de rcall .-604 ; 0x14e + lcd_1s(); + 3aa: b0 de rcall .-672 ; 0x10c + lcd_1s(); + 3ac: af de rcall .-674 ; 0x10c + lcd_write(here,0x43,0); + 3ae: 80 e0 ldi r24, 0x00 ; 0 + 3b0: 63 e4 ldi r22, 0x43 ; 67 + 3b2: 40 e0 ldi r20, 0x00 ; 0 + 3b4: cc de rcall .-616 ; 0x14e + lcd_1s(); + 3b6: aa de rcall .-684 ; 0x10c + lcd_1s(); + 3b8: a9 de rcall .-686 ; 0x10c + lcd_write(here,0x44,0); + 3ba: 80 e0 ldi r24, 0x00 ; 0 + 3bc: 64 e4 ldi r22, 0x44 ; 68 + 3be: 40 e0 ldi r20, 0x00 ; 0 + 3c0: c6 de rcall .-628 ; 0x14e + lcd_1s(); + 3c2: a4 de rcall .-696 ; 0x10c + lcd_1s(); + 3c4: a3 de rcall .-698 ; 0x10c + DDRB = 0x0f; + 3c6: e7 e3 ldi r30, 0x37 ; 55 + 3c8: f0 e0 ldi r31, 0x00 ; 0 + 3ca: 8f e0 ldi r24, 0x0F ; 15 + 3cc: 80 83 st Z, r24 + while(1==1){ + PORTB = 0x0f; + 3ce: e8 e3 ldi r30, 0x38 ; 56 + 3d0: f0 e0 ldi r31, 0x00 ; 0 + 3d2: 8f e0 ldi r24, 0x0F ; 15 + 3d4: 80 83 st Z, r24 + lcd_1s(); + 3d6: 9a de rcall .-716 ; 0x10c + PORTB = 0x05; + 3d8: e8 e3 ldi r30, 0x38 ; 56 + 3da: f0 e0 ldi r31, 0x00 ; 0 + 3dc: 85 e0 ldi r24, 0x05 ; 5 + 3de: 80 83 st Z, r24 + lcd_1s(); + 3e0: 95 de rcall .-726 ; 0x10c + PORTB = 0x0A; + 3e2: e8 e3 ldi r30, 0x38 ; 56 + 3e4: f0 e0 ldi r31, 0x00 ; 0 + 3e6: 8a e0 ldi r24, 0x0A ; 10 + 3e8: 80 83 st Z, r24 + lcd_1s(); + 3ea: 90 de rcall .-736 ; 0x10c + 3ec: f0 cf rjmp .-32 ; 0x3ce + +000003ee <_exit>: + 3ee: f8 94 cli + +000003f0 <__stop_program>: + 3f0: ff cf rjmp .-2 ; 0x3f0 <__stop_program> diff --git a/Libs/LCD4/avrmb2313_notkermobil/LCD4.map b/Libs/LCD4/avrmb2313_notkermobil/LCD4.map new file mode 100644 index 0000000..8f1bfe8 --- /dev/null +++ b/Libs/LCD4/avrmb2313_notkermobil/LCD4.map @@ -0,0 +1,368 @@ +Archive member included because of file (symbol) + +/usr/lib/gcc/avr/4.3.2/avr25/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr25/crttn2313.o (exit) +/usr/lib/gcc/avr/4.3.2/avr25/libgcc.a(_copy_data.o) + ./lcd4.o (__do_copy_data) +/usr/lib/gcc/avr/4.3.2/avr25/libgcc.a(_clear_bss.o) + ./lcd4.o (__do_clear_bss) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00002000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000400 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +LOAD /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr25/crttn2313.o +LOAD ./lcd4.o +LOAD ./lcd_wait.o +LOAD ./lcdtest.o +LOAD /usr/lib/gcc/avr/4.3.2/avr25/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr25/libc.a +LOAD /usr/lib/gcc/avr/4.3.2/avr25/libgcc.a + +.hash + *(.hash) + +.dynsym + *(.dynsym) + +.dynstr + *(.dynstr) + +.gnu.version + *(.gnu.version) + +.gnu.version_d + *(.gnu.version_d) + +.gnu.version_r + *(.gnu.version_r) + +.rel.init + *(.rel.init) + +.rela.init + *(.rela.init) + +.rel.text + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + +.rela.text + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + +.rel.fini + *(.rel.fini) + +.rela.fini + *(.rela.fini) + +.rel.rodata + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + +.rela.rodata + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + +.rel.data + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + +.rela.data + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + +.rel.ctors + *(.rel.ctors) + +.rela.ctors + *(.rela.ctors) + +.rel.dtors + *(.rel.dtors) + +.rela.dtors + *(.rela.dtors) + +.rel.got + *(.rel.got) + +.rela.got + *(.rela.got) + +.rel.bss + *(.rel.bss) + +.rela.bss + *(.rela.bss) + +.rel.plt + *(.rel.plt) + +.rela.plt + *(.rela.plt) + +.text 0x00000000 0x3f2 + *(.vectors) + .vectors 0x00000000 0x26 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr25/crttn2313.o + 0x00000000 __vectors + 0x00000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + *(.progmem*) + 0x00000026 . = ALIGN (0x2) + 0x00000026 __trampolines_start = . + *(.trampolines) + .trampolines 0x00000026 0x0 linker stubs + *(.trampolines*) + 0x00000026 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x00000026 __ctors_start = . + *(.ctors) + 0x00000026 __ctors_end = . + 0x00000026 __dtors_start = . + *(.dtors) + 0x00000026 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x00000026 0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr25/crttn2313.o + 0x00000026 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x00000026 0x8 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr25/crttn2313.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x0000002e 0x16 /usr/lib/gcc/avr/4.3.2/avr25/libgcc.a(_copy_data.o) + 0x0000002e __do_copy_data + .init4 0x00000044 0x10 /usr/lib/gcc/avr/4.3.2/avr25/libgcc.a(_clear_bss.o) + 0x00000044 __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x00000054 0x4 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr25/crttn2313.o + *(.init9) + *(.text) + .text 0x00000058 0x2 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr25/crttn2313.o + 0x00000058 __vector_1 + 0x00000058 __vector_12 + 0x00000058 __bad_interrupt + 0x00000058 __vector_6 + 0x00000058 __vector_3 + 0x00000058 __vector_11 + 0x00000058 __vector_13 + 0x00000058 __vector_17 + 0x00000058 __vector_7 + 0x00000058 __vector_5 + 0x00000058 __vector_4 + 0x00000058 __vector_9 + 0x00000058 __vector_2 + 0x00000058 __vector_15 + 0x00000058 __vector_8 + 0x00000058 __vector_14 + 0x00000058 __vector_10 + 0x00000058 __vector_16 + 0x00000058 __vector_18 + .text 0x0000005a 0x2e6 ./lcd4.o + 0x0000014e lcd_write + 0x0000010c lcd_1s + 0x000002c2 lcd_blank_line + 0x000000e6 lcd_5ms + 0x00000132 lcd_instruct + 0x0000005a lcd_init + .text 0x00000340 0x46 ./lcd_wait.o + 0x00000340 wait_100us + .text 0x00000386 0x68 ./lcdtest.o + 0x00000386 main + .text 0x000003ee 0x0 /usr/lib/gcc/avr/4.3.2/avr25/libgcc.a(_exit.o) + .text 0x000003ee 0x0 /usr/lib/gcc/avr/4.3.2/avr25/libgcc.a(_copy_data.o) + .text 0x000003ee 0x0 /usr/lib/gcc/avr/4.3.2/avr25/libgcc.a(_clear_bss.o) + 0x000003ee . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x000003ee 0x0 /usr/lib/gcc/avr/4.3.2/avr25/libgcc.a(_exit.o) + .text.libgcc 0x000003ee 0x0 /usr/lib/gcc/avr/4.3.2/avr25/libgcc.a(_copy_data.o) + .text.libgcc 0x000003ee 0x0 /usr/lib/gcc/avr/4.3.2/avr25/libgcc.a(_clear_bss.o) + 0x000003ee . = ALIGN (0x2) + *(.fini9) + .fini9 0x000003ee 0x0 /usr/lib/gcc/avr/4.3.2/avr25/libgcc.a(_exit.o) + 0x000003ee exit + 0x000003ee _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x000003ee 0x4 /usr/lib/gcc/avr/4.3.2/avr25/libgcc.a(_exit.o) + *(.fini0) + 0x000003f2 _etext = . + +.data 0x00800060 0x0 load address 0x000003f2 + 0x00800060 PROVIDE (__data_start, .) + *(.data) + .data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr25/crttn2313.o + .data 0x00800060 0x0 ./lcd4.o + .data 0x00800060 0x0 ./lcd_wait.o + .data 0x00800060 0x0 ./lcdtest.o + .data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.2/avr25/libgcc.a(_exit.o) + .data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.2/avr25/libgcc.a(_copy_data.o) + .data 0x00800060 0x0 /usr/lib/gcc/avr/4.3.2/avr25/libgcc.a(_clear_bss.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x00800060 . = ALIGN (0x2) + 0x00800060 _edata = . + 0x00800060 PROVIDE (__data_end, .) + +.bss 0x00800060 0x0 load address 0x000003f2 + 0x00800060 PROVIDE (__bss_start, .) + *(.bss) + .bss 0x00800060 0x0 /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr25/crttn2313.o + .bss 0x00800060 0x0 ./lcd4.o + .bss 0x00800060 0x0 ./lcd_wait.o + .bss 0x00800060 0x0 ./lcdtest.o + .bss 0x00800060 0x0 /usr/lib/gcc/avr/4.3.2/avr25/libgcc.a(_exit.o) + .bss 0x00800060 0x0 /usr/lib/gcc/avr/4.3.2/avr25/libgcc.a(_copy_data.o) + .bss 0x00800060 0x0 /usr/lib/gcc/avr/4.3.2/avr25/libgcc.a(_clear_bss.o) + *(.bss*) + *(COMMON) + 0x00800060 PROVIDE (__bss_end, .) + 0x000003f2 __data_load_start = LOADADDR (.data) + 0x000003f2 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800060 0x0 + 0x00800060 PROVIDE (__noinit_start, .) + *(.noinit*) + 0x00800060 PROVIDE (__noinit_end, .) + 0x00800060 _end = . + 0x00800060 PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0x1158 + *(.stab) + .stab 0x00000000 0x69c /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr25/crttn2313.o + .stab 0x0000069c 0x6fc ./lcd4.o + 0x708 (size before relaxing) + .stab 0x00000d98 0x180 ./lcd_wait.o + 0x348 (size before relaxing) + .stab 0x00000f18 0x240 ./lcdtest.o + 0x408 (size before relaxing) + +.stabstr 0x00000000 0x7ee + *(.stabstr) + .stabstr 0x00000000 0x7ee /usr/lib/gcc/avr/4.3.2/../../../avr/lib/avr25/crttn2313.o + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment + *(.comment) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges + *(.debug_aranges) + +.debug_pubnames + *(.debug_pubnames) + +.debug_info + *(.debug_info) + *(.gnu.linkonce.wi.*) + +.debug_abbrev + *(.debug_abbrev) + +.debug_line + *(.debug_line) + +.debug_frame + *(.debug_frame) + +.debug_str + *(.debug_str) + +.debug_loc + *(.debug_loc) + +.debug_macinfo + *(.debug_macinfo) +OUTPUT(LCD4.elf elf32-avr) +LOAD linker stubs diff --git a/Libs/LCD4/avrmb2313_notkermobil/lcd4.d b/Libs/LCD4/avrmb2313_notkermobil/lcd4.d new file mode 100644 index 0000000..134a475 --- /dev/null +++ b/Libs/LCD4/avrmb2313_notkermobil/lcd4.d @@ -0,0 +1,3 @@ +lcd4.d lcd4.o: ../lcd4.c ../lcd4.h + +../lcd4.h: diff --git a/Libs/LCD4/avrmb2313_notkermobil/lcd4.o b/Libs/LCD4/avrmb2313_notkermobil/lcd4.o new file mode 100644 index 0000000..1473b4d Binary files /dev/null and b/Libs/LCD4/avrmb2313_notkermobil/lcd4.o differ diff --git a/Libs/LCD4/avrmb2313_notkermobil/lcd_wait.d b/Libs/LCD4/avrmb2313_notkermobil/lcd_wait.d new file mode 100644 index 0000000..680a7db --- /dev/null +++ b/Libs/LCD4/avrmb2313_notkermobil/lcd_wait.d @@ -0,0 +1,3 @@ +lcd_wait.d lcd_wait.o: ../lcd_wait.c ../lcd4.h + +../lcd4.h: diff --git a/Libs/LCD4/avrmb2313_notkermobil/lcd_wait.o b/Libs/LCD4/avrmb2313_notkermobil/lcd_wait.o new file mode 100644 index 0000000..5d8cb96 Binary files /dev/null and b/Libs/LCD4/avrmb2313_notkermobil/lcd_wait.o differ diff --git a/Libs/LCD4/avrmb2313_notkermobil/lcdtest.d b/Libs/LCD4/avrmb2313_notkermobil/lcdtest.d new file mode 100644 index 0000000..c4a822b --- /dev/null +++ b/Libs/LCD4/avrmb2313_notkermobil/lcdtest.d @@ -0,0 +1,3 @@ +lcdtest.d lcdtest.o: ../lcdtest.c ../lcd4.h + +../lcd4.h: diff --git a/Libs/LCD4/avrmb2313_notkermobil/lcdtest.o b/Libs/LCD4/avrmb2313_notkermobil/lcdtest.o new file mode 100644 index 0000000..7ec016c Binary files /dev/null and b/Libs/LCD4/avrmb2313_notkermobil/lcdtest.o differ diff --git a/Libs/LCD4/avrmb2313_notkermobil/makefile b/Libs/LCD4/avrmb2313_notkermobil/makefile new file mode 100644 index 0000000..3eb47a8 --- /dev/null +++ b/Libs/LCD4/avrmb2313_notkermobil/makefile @@ -0,0 +1,90 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(C_DEPS)),) +-include $(C_DEPS) +endif +ifneq ($(strip $(ASM_DEPS)),) +-include $(ASM_DEPS) +endif +ifneq ($(strip $(S_DEPS)),) +-include $(S_DEPS) +endif +ifneq ($(strip $(S_UPPER_DEPS)),) +-include $(S_UPPER_DEPS) +endif +endif + +-include ../makefile.defs + +# Add inputs and outputs from these tool invocations to the build variables +LSS += \ +LCD4.lss \ + +FLASH_IMAGE += \ +LCD4.hex \ + +EEPROM_IMAGE += \ +LCD4.eep \ + +SIZEDUMMY += \ +sizedummy \ + + +# All Target +all: LCD4.elf secondary-outputs + +# Tool invocations +LCD4.elf: $(OBJS) $(USER_OBJS) + @echo 'Building target: $@' + @echo 'Invoking: AVR C Linker' + avr-gcc -Wl,-Map,LCD4.map -mmcu=attiny2313 -o"LCD4.elf" $(OBJS) $(USER_OBJS) $(LIBS) + @echo 'Finished building target: $@' + @echo ' ' + +LCD4.lss: LCD4.elf + @echo 'Invoking: AVR Create Extended Listing' + -avr-objdump -h -S LCD4.elf >"LCD4.lss" + @echo 'Finished building: $@' + @echo ' ' + +LCD4.hex: LCD4.elf + @echo 'Create Flash image (ihex format)' + -avr-objcopy -R .eeprom -O ihex LCD4.elf "LCD4.hex" + @echo 'Finished building: $@' + @echo ' ' + +LCD4.eep: LCD4.elf + @echo 'Create eeprom image (ihex format)' + -avr-objcopy -j .eeprom --no-change-warnings --change-section-lma .eeprom=0 -O ihex LCD4.elf "LCD4.eep" + @echo 'Finished building: $@' + @echo ' ' + +sizedummy: LCD4.elf + @echo 'Invoking: Print Size' + -avr-size --format=avr --mcu=attiny2313 LCD4.elf + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) $(OBJS)$(C_DEPS)$(ASM_DEPS)$(EEPROM_IMAGE)$(FLASH_IMAGE)$(ELFS)$(LSS)$(S_DEPS)$(SIZEDUMMY)$(S_UPPER_DEPS) LCD4.elf + -@echo ' ' + +secondary-outputs: $(LSS) $(FLASH_IMAGE) $(EEPROM_IMAGE) $(SIZEDUMMY) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/Libs/LCD4/avrmb2313_notkermobil/objects.mk b/Libs/LCD4/avrmb2313_notkermobil/objects.mk new file mode 100644 index 0000000..224ef68 --- /dev/null +++ b/Libs/LCD4/avrmb2313_notkermobil/objects.mk @@ -0,0 +1,7 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := diff --git a/Libs/LCD4/avrmb2313_notkermobil/sources.mk b/Libs/LCD4/avrmb2313_notkermobil/sources.mk new file mode 100644 index 0000000..875f836 --- /dev/null +++ b/Libs/LCD4/avrmb2313_notkermobil/sources.mk @@ -0,0 +1,25 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +O_SRCS := +C_SRCS := +S_UPPER_SRCS := +S_SRCS := +OBJ_SRCS := +ASM_SRCS := +OBJS := +C_DEPS := +ASM_DEPS := +EEPROM_IMAGE := +FLASH_IMAGE := +ELFS := +LSS := +S_DEPS := +SIZEDUMMY := +S_UPPER_DEPS := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +. \ + diff --git a/Libs/LCD4/avrmb2313_notkermobil/subdir.mk b/Libs/LCD4/avrmb2313_notkermobil/subdir.mk new file mode 100644 index 0000000..d06f565 --- /dev/null +++ b/Libs/LCD4/avrmb2313_notkermobil/subdir.mk @@ -0,0 +1,30 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +# Add inputs and outputs from these tool invocations to the build variables +C_SRCS += \ +../lcd4.c \ +../lcd_wait.c \ +../lcdtest.c + +OBJS += \ +./lcd4.o \ +./lcd_wait.o \ +./lcdtest.o + +C_DEPS += \ +./lcd4.d \ +./lcd_wait.d \ +./lcdtest.d + + +# Each subdirectory must supply rules for building sources it contributes +%.o: ../%.c + @echo 'Building file: $<' + @echo 'Invoking: AVR Compiler' + avr-gcc -Wall -g2 -gstabs -O0 -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=attiny2313 -DF_CPU=10000000UL -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@:%.o=%.d)" -c -o"$@" "$<" + @echo 'Finished building: $<' + @echo ' ' + + diff --git a/Libs/LCD4/lcd4.c b/Libs/LCD4/lcd4.c new file mode 100644 index 0000000..415c5e8 --- /dev/null +++ b/Libs/LCD4/lcd4.c @@ -0,0 +1,132 @@ +/************************************ +* lcd-Treiber-Bibliothek für Hitachi 44780 und kompatible +* z.B. KS0070B +* +*/ +#include +#include +#include "lcd4.h" + +/* Prototypes */ +extern void wait_100us(void); +//void lcd_init(void); +//void lcd_write(uint8_t whichwrite, uint8_t zeichen, uint8_t position); +void lcd_instruct(uint8_t zeichen); //Optimzation of Code length (costs one fuction call) + // expands to lcd_write(instruct, zeichen, 0); +// void lcd_blank_line(uint8_t lcd_whichwrite); +void lcd_preinstruct(uint8_t zeichen); //Optimzation of Code length (costs one fuction call) + // expands to lcd_write(preinstruct, zeichen, 0); +// void lcd_blank_line(uint8_t lcd_whichwrite); + +// Implementation +void lcd_5ms(void); +void lcd_1s(void); +/* end Prototypes */ + + +#define lcd_mask_Write_Adress(position) ((position & 0x7F)| lcd_SET_DD_RAM) + + + +void lcd_init(void){ + /* setting up ports first */ + lcd_dataport_DDR=0xff; + set_lcd_RS_DDR; + set_lcd_E_DDR; + /* end setting up ports */ + lcd_dataport=0xff; + set_lcd_RS; + set_lcd_E; + lcd_5ms(); + lcd_5ms(); + lcd_5ms(); + lcd_instruct(lcd_SET_FUNCTION_8BIT); + lcd_5ms(); + lcd_instruct(lcd_SET_FUNCTION_8BIT); + wait_100us(); + lcd_instruct(lcd_SET_FUNCTION_8BIT); + if (lcd_dataport_mask==0xf0){ + lcd_instruct(lcd_SET_FUNCTION_4BIT|lcd_SET_FUNCTION_2LINE|lcd_SET_FUNCTION_7X5); + }else{ + lcd_instruct(lcd_SET_FUNCTION_8BIT|lcd_SET_FUNCTION_2LINE|lcd_SET_FUNCTION_7X5); + } + lcd_dataport_DDR&=lcd_dataport_mask; + lcd_instruct(lcd_DISPLAY_OO_ON|lcd_DISPLAY_OO_CURSOR_OFF); + lcd_instruct(lcd_ENTRY_MODE_SET|lcd_ENTRY_MODE_SET_INCREASE | lcd_ENTRY_MS_DISPLAY_NOT_S); + lcd_instruct(lcd_RETURN_HOME); + lcd_5ms(); +} + +void lcd_5ms(void){ + for(uint8_t i=50;i>0;i--){ + wait_100us(); + } + } + +void lcd_1s(void){ + for(uint8_t i=200;i>0;i--){ + lcd_5ms(); + } + } + +void lcd_instruct(uint8_t zeichen){ + lcd_write(instruct,zeichen,0); + } + +void lcd_write(uint8_t lcd_whichwrite, uint8_t zeichen, uint8_t position){ + switch (lcd_whichwrite){ + case instruct : + unset_lcd_RS; + break; + case line2: + case line1: + position = position & 0x3f; + if (lcd_whichwrite == line2){ position=position + 0x40; }; + case therepos: + lcd_instruct(lcd_mask_Write_Adress(position)); + case here: + set_lcd_RS; + break; + + + } + set_lcd_E; + set_lcd_E; + lcd_dataport=lcd_dataport&~lcd_dataport_mask|zeichen&lcd_dataport_mask; + lcd_dataport=lcd_dataport&~lcd_dataport_mask|zeichen&lcd_dataport_mask; + unset_lcd_E; + unset_lcd_E; + wait_100us(); + if (lcd_dataport_DDR==0xf0){ + zeichen=zeichen << 4; + set_lcd_E; + set_lcd_E; + lcd_dataport=lcd_dataport&~lcd_dataport_mask|zeichen&lcd_dataport_mask; + lcd_dataport=lcd_dataport&~lcd_dataport_mask|zeichen&lcd_dataport_mask; + unset_lcd_E; + unset_lcd_E; + wait_100us(); + } +} + +void lcd_blank_line(uint8_t lcd_whichwrite) + { + uint8_t count; + uint8_t countin; + + switch (lcd_whichwrite){ + case instruct: + lcd_blank_line(line1); + case line2: + count=0x40; + break; + case line1: + count=0; + } + + for (countin=count; countin < count+15; countin++){ + lcd_write(therepos, 32, countin); + } +} + + diff --git a/Libs/LCD4/lcd4.c2 b/Libs/LCD4/lcd4.c2 new file mode 100644 index 0000000..6bab342 --- /dev/null +++ b/Libs/LCD4/lcd4.c2 @@ -0,0 +1,135 @@ +/************************************ +* lcd-Treiber-Bibliothek für Hitachi 44780 und kompatible +* z.B. KS0070B +* +*/ +#include +#include +#include "lcd4.h" + +/* Prototypes */ +extern void wait_100us(void); +//void lcd_init(void); +//void lcd_write(uint8_t whichwrite, uint8_t zeichen, uint8_t position); +void lcd_instruct(uint8_t zeichen); //Optimzation of Code length (costs one fuction call) + // expands to lcd_write(instruct, zeichen, 0); +// void lcd_blank_line(uint8_t lcd_whichwrite); +void lcd_preinstruct(uint8_t zeichen); //Optimzation of Code length (costs one fuction call) + // expands to lcd_write(preinstruct, zeichen, 0); +// void lcd_blank_line(uint8_t lcd_whichwrite); + +// Implementation +void lcd_5ms(void); +void lcd_1s(void); +/* end Prototypes */ + +#define lcd_mask_Write_Adress(position) ((position & 0x7F)| lcd_SET_DD_RAM) +// 4-Bit to be added, no indent +// enum whichtype{instruct, data}; +void lcd_init(void){ + /* setting up ports first */ + lcd_dataport_DDR=0xff; + lcd_dataport=0xff; + set_lcd_RS_DDR; + set_lcd_E_DDR; + /* end setting up ports */ + set_lcd_RS; + set_lcd_E; + lcd_5ms(); + lcd_5ms(); + lcd_5ms(); + lcd_instruct(lcd_SET_FUNCTION_8BIT); + lcd_5ms(); + lcd_instruct(lcd_SET_FUNCTION_8BIT); + lcd_instruct(lcd_SET_FUNCTION_8BIT); + #ifdef lcd_bus8 + lcd_preinstruct(lcd_SET_FUNCTION_8BIT|lcd_SET_FUNCTION_2LINE|lcd_SET_FUNCTION_7X5); + #endif + lcd_dataport_DDR|=lcd_dataport_mask; + #ifdef lcd_bus4 + lcd_instruct(lcd_SET_FUNCTION_4BIT|lcd_SET_FUNCTION_2LINE|lcd_SET_FUNCTION_7X5); + #endif + lcd_5ms(); + lcd_instruct(lcd_DISPLAY_OO_ON|lcd_DISPLAY_OO_CURSOR_OFF); + lcd_instruct(lcd_ENTRY_MODE_SET|lcd_ENTRY_MODE_SET_INCREASE | lcd_ENTRY_MS_DISPLAY_NOT_S); + lcd_instruct(lcd_RETURN_HOME); + lcd_5ms(); +} + +void lcd_5ms(void){ + for(uint8_t i=50;i>0;i--){ + wait_100us(); + } + } + +void lcd_1s(void){ + for(uint8_t i=200;i>0;i--){ + lcd_5ms(); + } + } + +void lcd_instruct(uint8_t zeichen){ + lcd_write(instruct,zeichen,0); + } +void lcd_preinstruct(uint8_t zeichen){ + lcd_write(preinstruct,zeichen,0); + } + +void lcd_write(uint8_t lcd_whichwrite, uint8_t zeichen, uint8_t position){ + switch (lcd_whichwrite){ + case instruct : + case preinstruct : + unset_lcd_RS; + break; + case line2: + case line1: + position = position & 0x3f; + if (lcd_whichwrite == line2){ position=position + 0x40; }; + case therepos: + lcd_instruct(lcd_mask_Write_Adress(position)); + case here: + set_lcd_RS; + break; + + + } + set_lcd_E; + asm volatile ("nop"); + lcd_dataport=( zeichen & lcd_dataport_mask); + asm volatile ("nop"); + #ifdef lcd_bus4 + if (!(lcd_whichwrite==preinstruct)){ + unset_lcd_E; + zeichen = zeichen << 4; + wait_100us(); + set_lcd_E; + asm volatile ("nop"); + lcd_dataport|=( zeichen & lcd_dataport_mask); + asm volatile ("nop"); + } + #endif + unset_lcd_E; + wait_100us(); + +} + +void lcd_blank_line(uint8_t lcd_whichwrite) + { + uint8_t count; + uint8_t countin; + + switch (lcd_whichwrite){ + case instruct: + lcd_blank_line(line1); + case line2: + count=0x40; + break; + case line1: + count=0; + break; + } + + for (countin=count; countin < count+15; countin++){ + lcd_write(therepos, 32, countin); + } +} diff --git a/Libs/LCD4/lcd4.h b/Libs/LCD4/lcd4.h new file mode 100644 index 0000000..63a0121 --- /dev/null +++ b/Libs/LCD4/lcd4.h @@ -0,0 +1,95 @@ +/* avrmb2313_lcd.h +* V 1.0 by (Hr & RJH-Systems) @ (FLG) +* 30.03.07 +* Zum Ansteuern eines zweizeiligen LCD-Displays +* Hitachi 44780 od. KS0070B +* auf dem AVR-evaluationsboard von Matze Brenner +* > www.flg-informatik.de +* 8-bit Mode +* 4-bit Mode +*/ +#ifndef avrmb2313_lcd + #define avrmb2313_lcd + #include + /* Some ports must be definded first, dont touch these for avrmb2313-project + * but set for other Designs using other out-Ports + */ + + + #ifndef lcd_bus4 + #ifndef lcd_bus8 + #define lcd_bus4 //defaults to 4-Bit + #endif + #endif + + #ifndef lcd_dataports_defined + #define lcd_dataports_defined + #include + #define lcd_dataport PORTB + #define lcd_dataport_DDR DDRB // DataDirectionRegister für lcd_datatport + //#ifdef lcd_bus8 + #define lcd_dataport_mask 0xf0 // which bits in that port (8-bit = 0xff for 8-bit operation) + //#else + // #define lcd_dataport_mask 0xf0 // which bits in that port (4-bit = 0xf0 for 4-bit operation) + // #endif + #define set_lcd_RS_DDR DDRD=(DDRD | ((uint8_t) 0x08)) // Dir-Out für lcd _RS setzen) + #define set_lcd_E_DDR DDRD=(DDRD | ((uint8_t) 0x04)) // Dir-Out für lcd _E setzen) + #define set_lcd_RS PORTD=(PORTD | ((uint8_t) 0x08)) // Bit für lcd _RS setzen) + #define unset_lcd_RS PORTD=(PORTD & ~((uint8_t) 0x08)) // Bit für lcd _RS löschen) + #define set_lcd_E PORTD=(PORTD | ((uint8_t) 0x04)) // Bit für lcd _E setzen) + #define unset_lcd_E PORTD=(PORTD & ~((uint8_t) 0x04)) // Bit für lcd _E löschen) + # + #endif + + + extern void wait_100us(void); // This function must be implemented + // Bitte eine Funktion "void wait_100us()" implementieren, die 100us wartet + // Please implement function "void wait_100us()": just waiting 100*10^(-6) s + extern void lcd_init(void); + extern void lcd_write(uint8_t lcd_whichwrite, uint8_t zeichen, uint8_t position); + enum lcd_whichwrite{here, therepos, line1, line2, instruct, preinstruct}; + extern void lcd_blank_line(uint8_t lcd_whichwrite); // line1, line2, instruct=all + extern void lcd_instruct(uint8_t zeichen); + /* possible "zeichen": + lcd_DISPLAY_CLEAR + lcd_RETURN_HOME + lcd_ENTRY_MODE_SET_INCREASE + lcd_ENTRY_MODE_SET_DECREASE + lcd_ENTRY_MODE_SET_DISPLAY_SHIFTED + lcd_ENTRY_MS_DISPLAY_NOT_S hifted + */ + extern void lcd_5ms(); //based on wait_100us + extern void lcd_1s(); //based on wait_100us + // Die Konstanten des lcd-Kontrollers local + #define lcd_DISPLAY_CLEAR 0b00000001 + #define lcd_RETURN_HOME 0b00000010 + #define lcd_ENTRY_MODE_SET 0b00000100 + #define lcd_ENTRY_MODE_SET_INCREASE 0b00000110 + #define lcd_ENTRY_MODE_SET_DECREASE 0b00000100 + #define lcd_ENTRY_MODE_SET_DISPLAY_SHIFTED 0b00000101 + #define lcd_ENTRY_MS_DISPLAY_NOT_S 0b00000100 + #define lcd_DISPLAY_OO 0b00001000 + #define lcd_DISPLAY_OO_ON 0b00001100 + #define lcd_DISPLAY_OO_OFF 0b00001000 + #define lcd_DISPLAY_OO_CURSOR_ON 0b00001010 + #define lcd_DISPLAY_OO_CURSOR_OFF 0b00001000 + #define lcd_DISPLAY_OO_BLINKING_ON 0b00001001 + #define lcd_DISPLAY_OO_BLINKING_OFF 0b00001000 + #define lcd_SHIFT 0b00010000 + #define lcd_SHIFT_DISPLAY_SHIFT 0b00011000 + #define lcd_SHIFT_CURSOR_MOVE 0b00010000 + #define lcd_SHIFT_RIGHT_SHIFT 0b00010100 + #define lcd_SHIFT_LEFT_SHIFT 0b00010000 + #define lcd_SET_FUNCTION 0b00100000 + #define lcd_SET_FUNCTION_8BIT 0b00110000 + #define lcd_SET_FUNCTION_4BIT 0b00100000 + #define lcd_SET_FUNCTION_2LINE 0b00101000 + #define lcd_SET_FUNCTION_1LINE 0b00100000 + #define lcd_SET_FUNCTION_5X10 0b00100100 + #define lcd_SET_FUNCTION_7X5 0b00100000 + #define lcd_SET_CG_RAM 0b01000000 + #define lcd_SET_DD_RAM 0b10000000 + + +#endif + diff --git a/Libs/LCD4/lcd_wait.c b/Libs/LCD4/lcd_wait.c new file mode 100644 index 0000000..3959a34 --- /dev/null +++ b/Libs/LCD4/lcd_wait.c @@ -0,0 +1,9 @@ +#include +#include +#include "lcd4.h" + +void wait_100us(void){ + for (volatile uint8_t i=68;i--;i>0){ + i; + } +} diff --git a/Libs/LCD4/lcdtest.c b/Libs/LCD4/lcdtest.c new file mode 100644 index 0000000..de2979e --- /dev/null +++ b/Libs/LCD4/lcdtest.c @@ -0,0 +1,34 @@ +#include +#include +#define lcd_bus8 +#include "lcd4.h" + +int main(void){ + lcd_1s(); + lcd_init(); + lcd_1s(); + lcd_1s(); + lcd_write(therepos,0x41,0x08); + lcd_1s(); + lcd_1s(); + lcd_write(here,0x42,0); + lcd_1s(); + lcd_1s(); + lcd_write(here,0x43,0); + lcd_1s(); + lcd_1s(); + lcd_write(here,0x44,0); + lcd_1s(); + lcd_1s(); + DDRB = 0x0f; + while(1==1){ + PORTB = 0x0f; + lcd_1s(); + PORTB = 0x05; + lcd_1s(); + PORTB = 0x0A; + lcd_1s(); + } +} + +