From d1bbac33f9e1d8c8e33070db5370e3cd45807a70 Mon Sep 17 00:00:00 2001 From: Eggert Jung Date: Sat, 21 Sep 2019 15:03:56 +0200 Subject: [PATCH] delete compiled files --- code/build/DS3231.lst | 96 ------ code/build/DS3231.o | Bin 2656 -> 0 bytes code/build/adc 2.o | Bin 2868 -> 0 bytes code/build/adc.lst | 114 ------- code/build/adc.o | Bin 2868 -> 0 bytes code/build/i2c.lst | 185 ----------- code/build/i2c.o | Bin 2896 -> 0 bytes code/build/main.eep | 1 - code/build/main.hex | 88 ------ code/build/main.lst | 832 -------------------------------------------------- code/build/main.map | 700 ------------------------------------------ code/build/main.o | Bin 7572 -> 0 bytes code/build/print.lst | 542 -------------------------------- code/build/print.o | Bin 6784 -> 0 bytes code/build/uart 2.o | Bin 3680 -> 0 bytes code/build/uart.lst | 177 ----------- code/build/uart.o | Bin 3676 -> 0 bytes code/main.elf | Bin 15924 -> 0 bytes 18 files changed, 2735 deletions(-) delete mode 100644 code/build/DS3231.lst delete mode 100644 code/build/DS3231.o delete mode 100644 code/build/adc 2.o delete mode 100644 code/build/adc.lst delete mode 100644 code/build/adc.o delete mode 100644 code/build/i2c.lst delete mode 100644 code/build/i2c.o delete mode 100644 code/build/main.eep delete mode 100644 code/build/main.hex delete mode 100644 code/build/main.lst delete mode 100644 code/build/main.map delete mode 100644 code/build/main.o delete mode 100644 code/build/print.lst delete mode 100644 code/build/print.o delete mode 100644 code/build/uart 2.o delete mode 100644 code/build/uart.lst delete mode 100644 code/build/uart.o delete mode 100755 code/main.elf diff --git a/code/build/DS3231.lst b/code/build/DS3231.lst deleted file mode 100644 index 6d1ee46..0000000 --- a/code/build/DS3231.lst +++ /dev/null @@ -1,96 +0,0 @@ - 1 .file "DS3231.c" - 2 __SP_H__ = 0x3e - 3 __SP_L__ = 0x3d - 4 __SREG__ = 0x3f - 5 __RAMPZ__ = 0x3b - 6 __tmp_reg__ = 0 - 7 __zero_reg__ = 1 - 8 .text - 9 .Ltext0: - 10 .cfi_sections .debug_frame - 11 .global DS3231_init - 13 DS3231_init: - 14 .LFB0: - 15 .file 1 "src/DS3231.c" - 1:src/DS3231.c **** #include "i2c.h" - 2:src/DS3231.c **** #include "DS3231.h" - 3:src/DS3231.c **** #include "pinout.h" - 4:src/DS3231.c **** #include - 5:src/DS3231.c **** - 6:src/DS3231.c **** - 7:src/DS3231.c **** - 8:src/DS3231.c **** void DS3231_init(void){ - 16 .loc 1 8 0 - 17 .cfi_startproc - 18 /* prologue: function */ - 19 /* frame size = 0 */ - 20 /* stack size = 0 */ - 21 .L__stack_usage = 0 - 22 0000 0895 ret - 23 .cfi_endproc - 24 .LFE0: - 26 .global DS3231_seconds - 28 DS3231_seconds: - 29 .LFB1: - 9:src/DS3231.c **** //i2c_start(DS3231_ADDRESS); - 10:src/DS3231.c **** } - 11:src/DS3231.c **** - 12:src/DS3231.c **** - 13:src/DS3231.c **** - 14:src/DS3231.c **** int DS3231_seconds(void){ - 30 .loc 1 14 0 - 31 .cfi_startproc - 32 /* prologue: function */ - 33 /* frame size = 0 */ - 34 /* stack size = 0 */ - 35 .L__stack_usage = 0 - 15:src/DS3231.c **** - 16:src/DS3231.c **** char ret = i2c_start(DS3231_ADDRESS+I2C_WRITE); - 36 .loc 1 16 0 - 37 0002 88E6 ldi r24,lo8(104) - 38 0004 0E94 0000 call i2c_start - 39 .LVL0: - 17:src/DS3231.c **** /* - 18:src/DS3231.c **** USART_Transmit_String(" Return "); - 19:src/DS3231.c **** //putchar(ret); - 20:src/DS3231.c **** USART_Transmit_String("\n"); - 21:src/DS3231.c **** */ - 22:src/DS3231.c **** /* - 23:src/DS3231.c **** if(ret){ //failed - 24:src/DS3231.c **** PORTB |= STATUS_LED_B; - 25:src/DS3231.c **** i2c_stop(); - 26:src/DS3231.c **** }else{ - 27:src/DS3231.c **** // issuing start condition ok, device accessible - 28:src/DS3231.c **** i2c_write(0x05); // write address = 5 - 29:src/DS3231.c **** i2c_write(0x75); // ret=0 -> Ok, ret=1 -> no ACK - 30:src/DS3231.c **** i2c_stop(); - 31:src/DS3231.c **** - 32:src/DS3231.c **** i2c_start_wait(DS3231_ADDRESS+I2C_WRITE); // set device address and write mode - 33:src/DS3231.c **** i2c_write(REG_SECONDS); // write address = 5 - 34:src/DS3231.c **** i2c_rep_start(DS3231_ADDRESS+I2C_READ); // set device address and read mode - 35:src/DS3231.c **** ret = i2c_readNak(); // read one byte - 36:src/DS3231.c **** i2c_stop(); - 37:src/DS3231.c **** } - 38:src/DS3231.c **** - 39:src/DS3231.c **** return ret; - 40:src/DS3231.c **** */ - 41:src/DS3231.c **** } - 40 .loc 1 41 0 - 41 0008 0895 ret - 42 .cfi_endproc - 43 .LFE1: - 45 .Letext0: - 46 .file 2 "inc/i2c.h" -DEFINED SYMBOLS - *ABS*:00000000 DS3231.c -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccV7Y02n.s:2 *ABS*:0000003e __SP_H__ -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccV7Y02n.s:3 *ABS*:0000003d __SP_L__ -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccV7Y02n.s:4 *ABS*:0000003f __SREG__ -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccV7Y02n.s:5 *ABS*:0000003b __RAMPZ__ -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccV7Y02n.s:6 *ABS*:00000000 __tmp_reg__ -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccV7Y02n.s:7 *ABS*:00000001 __zero_reg__ -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccV7Y02n.s:13 .text:00000000 DS3231_init -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccV7Y02n.s:28 .text:00000002 DS3231_seconds - -UNDEFINED SYMBOLS -i2c_start diff --git a/code/build/DS3231.o b/code/build/DS3231.o deleted file mode 100644 index 50a84ffc0bf0c638830d7814c63617c873725b05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2656 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 BV-f%W diff --git a/code/build/adc.lst b/code/build/adc.lst deleted file mode 100644 index d5b727a..0000000 --- a/code/build/adc.lst +++ /dev/null @@ -1,114 +0,0 @@ - 1 .file "adc.c" - 2 __SP_H__ = 0x3e - 3 __SP_L__ = 0x3d - 4 __SREG__ = 0x3f - 5 __RAMPZ__ = 0x3b - 6 __tmp_reg__ = 0 - 7 __zero_reg__ = 1 - 8 .text - 9 .Ltext0: - 10 .cfi_sections .debug_frame - 11 .global adc_setup - 13 adc_setup: - 14 .LFB0: - 15 .file 1 "src/adc.c" - 1:src/adc.c **** #include "adc.h" - 2:src/adc.c **** #include "pinout.h" - 3:src/adc.c **** #include - 4:src/adc.c **** - 5:src/adc.c **** void adc_setup(void){ - 16 .loc 1 5 0 - 17 .cfi_startproc - 18 /* prologue: function */ - 19 /* frame size = 0 */ - 20 /* stack size = 0 */ - 21 .L__stack_usage = 0 - 6:src/adc.c **** ADMUX = (1 << REFS0); //Versorgungsspannung definieren - 22 .loc 1 6 0 - 23 0000 80E4 ldi r24,lo8(64) - 24 0002 8093 7C00 sts 124,r24 - 7:src/adc.c **** ADCSRA|= (1 << ADEN) //enable bit für adc - 25 .loc 1 7 0 - 26 0006 EAE7 ldi r30,lo8(122) - 27 0008 F0E0 ldi r31,0 - 28 000a 8081 ld r24,Z - 29 000c 8368 ori r24,lo8(-125) - 30 000e 8083 st Z,r24 - 31 0010 0895 ret - 32 .cfi_endproc - 33 .LFE0: - 35 .global adc_read - 37 adc_read: - 38 .LFB1: - 8:src/adc.c **** | (1 << ADPS0) //setze Prescaler für Abtastfrequenz - 9:src/adc.c **** | (1 << ADPS1) //setze Prescaler für Abtastfrequenz - 10:src/adc.c **** | (0 << ADPS2); //setze Prescaler für Abtastfrequenz - 11:src/adc.c **** } - 12:src/adc.c **** - 13:src/adc.c **** - 14:src/adc.c **** - 15:src/adc.c **** int adc_read(unsigned char adc_pin) { - 39 .loc 1 15 0 - 40 .cfi_startproc - 41 .LVL0: - 42 /* prologue: function */ - 43 /* frame size = 0 */ - 44 /* stack size = 0 */ - 45 .L__stack_usage = 0 - 16:src/adc.c **** ADMUX &= 0b11110000; //Alte Port-Select Flags löschen - 46 .loc 1 16 0 - 47 0012 9091 7C00 lds r25,124 - 48 0016 907F andi r25,lo8(-16) - 49 0018 9093 7C00 sts 124,r25 - 17:src/adc.c **** ADMUX|=adc_pin; //Neuen Eingang setzen - 50 .loc 1 17 0 - 51 001c 9091 7C00 lds r25,124 - 52 0020 982B or r25,r24 - 53 0022 9093 7C00 sts 124,r25 - 18:src/adc.c **** ADCSRA |= (1 << ADSC); // eine Wandlung "single conversion" - 54 .loc 1 18 0 - 55 0026 8091 7A00 lds r24,122 - 56 .LVL1: - 57 002a 8064 ori r24,lo8(64) - 58 002c 8093 7A00 sts 122,r24 - 59 .L4: - 19:src/adc.c **** while (ADCSRA & (1 << ADSC) ) { // auf Abschluss der Konvertierung warten - 60 .loc 1 19 0 discriminator 1 - 61 0030 8091 7A00 lds r24,122 - 62 0034 86FD sbrc r24,6 - 63 0036 00C0 rjmp .L4 - 20:src/adc.c **** } - 21:src/adc.c **** int ADCresult = ADCL; - 64 .loc 1 21 0 - 65 0038 2091 7800 lds r18,120 - 66 .LVL2: - 22:src/adc.c **** ADCresult += (ADCH << 8); - 67 .loc 1 22 0 - 68 003c 8091 7900 lds r24,121 - 69 .LVL3: - 70 0040 90E0 ldi r25,0 - 71 0042 982F mov r25,r24 - 72 0044 8827 clr r24 - 73 .LVL4: - 23:src/adc.c **** return ADCresult; - 24:src/adc.c **** } - 74 .loc 1 24 0 - 75 0046 820F add r24,r18 - 76 0048 911D adc r25,__zero_reg__ - 77 004a 0895 ret - 78 .cfi_endproc - 79 .LFE1: - 81 .Letext0: - 82 .file 2 "/usr/local/CrossPack-AVR-20131216/avr/include/stdint.h" -DEFINED SYMBOLS - *ABS*:00000000 adc.c -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccQrSfzE.s:2 *ABS*:0000003e __SP_H__ -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccQrSfzE.s:3 *ABS*:0000003d __SP_L__ -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccQrSfzE.s:4 *ABS*:0000003f __SREG__ -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccQrSfzE.s:5 *ABS*:0000003b __RAMPZ__ -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccQrSfzE.s:6 *ABS*:00000000 __tmp_reg__ -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccQrSfzE.s:7 *ABS*:00000001 __zero_reg__ -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccQrSfzE.s:13 .text:00000000 adc_setup -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccQrSfzE.s:37 .text:00000012 adc_read - -NO UNDEFINED SYMBOLS diff --git a/code/build/adc.o b/code/build/adc.o deleted file mode 100644 index 20ee721f32c7f914faecaac7ac11da0f92b2e1e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2868 zcma)8&2Lmy6hCif3L~xUl!_6NCBbKbr8 z-8a`x%$~F?ON>}@PWqO}YD(l=I44!W9(h7WrTa_w)>ZlS!Nb+=`#0*{8|mB2D_3Rt z+A>(8J1-J-SFT96+P#Hepb!3(AMBMS;LEbSdMAH#_w|vL?djY1kvE}or&QT^ZAJ4Z zVQrvFDtzT-#iVJZ5(ABPAc@3AHs9yQ4t zVJ(WPW^L(*S)R%CB6RiUE-4%!*Y{$VV9zJ_Try`Pwxj%B+P1L2_PXC_-p+!yh(6&xQ3SRRU{w! zUcT9>IL&;~>-c`jsa(t+n>(A`w|C;DiG36M^UftN-)L8wVbv9Js+C-Yhs_VF*u`8u zDm9|Ss$Ho&o-{k{n%$##cuu``-Y(jcxk7Hj&bC^W@Q@R< z+?vD5cD80`&-iv0Egq`1!vhEG?1Gt{Wx}{U-v|~OZnKK`g+)HQA9!IUfaTXaUXXR$ zVau0e(?!qq!)DO$jBQ{w%Dx+fi&2aJ?lVMGp&STSIv*_^r+BVYjmcRs9@8|{S-dEHydr&#G|C- zDjn=So-)c#CZUEhg?Q*zx{WH;Ft2j{Tw4UVj0wnFA<$k?$&j7US!{ zj_3Ow`MCbfH>iEIyBM6a7lZOO@=cp0un9Rn(%Qs5#Ktg}5fk@0h}d*Vp^4}l8AY0& zK80y8Jt;KB+{`&b8-x9gVwf`kCCK~KY)H$ - 4:src/i2c.c **** #include - 5:src/i2c.c **** - 6:src/i2c.c **** - 7:src/i2c.c **** void i2c_init(void) - 8:src/i2c.c **** { - 16 .loc 1 8 0 - 17 .cfi_startproc - 18 /* prologue: function */ - 19 /* frame size = 0 */ - 20 /* stack size = 0 */ - 21 .L__stack_usage = 0 - 9:src/i2c.c **** /* initialize TWI clock: 100 kHz clock, TWPS = 0 => prescaler = 1 */ - 10:src/i2c.c **** - 11:src/i2c.c **** TWSR = 1; /* no prescaler */ - 22 .loc 1 11 0 - 23 0000 81E0 ldi r24,lo8(1) - 24 0002 8093 B900 sts 185,r24 - 12:src/i2c.c **** TWBR = ((F_CPU/SCL_CLOCK)-16)/2; /* must be > 10 for stable operation */ - 25 .loc 1 12 0 - 26 0006 8BE4 ldi r24,lo8(75) - 27 0008 8093 B800 sts 184,r24 - 28 000c 0895 ret - 29 .cfi_endproc - 30 .LFE0: - 32 .global i2c_start - 34 i2c_start: - 35 .LFB1: - 13:src/i2c.c **** - 14:src/i2c.c **** } - 15:src/i2c.c **** - 16:src/i2c.c **** - 17:src/i2c.c **** unsigned char i2c_start(unsigned char address){ - 36 .loc 1 17 0 - 37 .cfi_startproc - 38 .LVL0: - 39 /* prologue: function */ - 40 /* frame size = 0 */ - 41 /* stack size = 0 */ - 42 .L__stack_usage = 0 - 18:src/i2c.c **** char DATA = 0b10011000; - 19:src/i2c.c **** //Send START condition - 20:src/i2c.c **** TWCR = (1<`q%7Y>Nd-K|aDq!$&n5vrc!X+m-#mnOTCo zuqGs8FcB;Sd@#NkeIfC|7YUf?f8dkPJn(?N5#p1Y`up9vcXq0nc#^Z{cRud9=iYnn z+&#bd(Ce0Ei6KjlOGgvAmlgRA&T$nmECbRfAKq;*-;zuB+RNWd?%LJgE-&Aa%UABm z^%eQ?@|9cCUcN0C?zdrW!}<}dZCEe<`e^$F*b#X*ckKtvVXJwvs)TeM%FG|zT0@ah z_}r_?lB1HfyQ+;yY$YI3%whcLzJu0<_q`P|uOelGyWO}E%w|5`dfNHfJ1G@^c zvnTev)WdPR)?MG-BeJGob?gT=BpwUH*LEejY|N4yPt?K3Q4?m97r~Y+QEUO*lDkd$ zCO9h(t)(vk6b<56Z@ad{QAW9_{BQ8r`lEN9pk26CRv47TZH0kbYnHs4I~z2^aLy~8 z%FoOn%a4tWzA`#Cy3O^@1a7rasV6{%-PWu#7c?t@SFign%5V?N z=O>G^DDYHqbZlar1r)=`3nJMwb7DqXjj&p2_+_WGi&?-gH!lh;q<^4vh9(D?26<)a<_+c2=_wOQGh?yuxDK`goRzxkmOxZU(JLL>x zNiWAM;z6$muYfGE&kyxD_E$J0^k72lsI-2No@Tz`*w)1+d$GwVgp#D}t{{);SlW!}G z{D7!$8svY)ZG+E@0aS565oj{LQRwOVenx#;;beXM4x0LQ1Di2`au~|T1e%O*4!Xf~ z{Q@PgVTD=Q@#1u(3Xrn$#Bon=yd$Jo2UY#`v0g3}Z+G z-SPf2A7GNN4a_kkVA8k9x5p%bPDs9_rHOlpgJCX1Chl_>Qo|*OMaA!A9BI~g6{^AX zI4Fv_nez!SeLdhlu;~Fnc@2)Q2{f6xC{cPsSv1cajCdCmGv9hJ_cERD1PqVrXN0XH zGY^efd9adpW>&43`O`B{&#Jd_M>6Qa3Tv58=}!UgOzF=7Z%^sG4;^~2G6AJi(?9D` zFMAT6iC^lJ&YRVtjM|m7&JO8NM)-bqD5Fj&t@p}at@4}LkIIff67!o#T|aZh;_)5XBAD16Qjnp#Pop3al?H1hLK4M4Jgi20=N*LXK1 zzg-ra2}EIG^Up%Ew}?qkf{AhMglAzP59t{&F?-}$Vm2pe7|i$yERFY`cmQ}x*vlIK1^J%FP006&bv-SOxwma%jNJvP?k8es|CDxJ^B2U3 z`5p2bVttf1wVmg4N8>H1LG6`3ehf?IRki6FHqp+_1M!cNsZH&PwzFSpXFY!dWX5UL diff --git a/code/build/main.eep b/code/build/main.eep deleted file mode 100644 index 1996e8f..0000000 --- a/code/build/main.eep +++ /dev/null @@ -1 +0,0 @@ -:00000001FF diff --git a/code/build/main.hex b/code/build/main.hex deleted file mode 100644 index 35d291e..0000000 --- a/code/build/main.hex +++ /dev/null @@ -1,88 +0,0 @@ -:100000000C9446000C94D8010C94E5010C94650006 -:100010000C9465000C9465000C9465000C946500CC -:100020000C9465000C9465000C9465000C946500BC -:100030000C9465000C9465000C9465000C949A0176 -:100040000C9465000C9465000C9465000C9465009C -:100050000C94EF010C9465000C9465000C94650001 -:100060000C9465000C9465000C9465000C9465007C -:100070000C9465000C9465000C9465000C9465006C -:100080000C9465000C9465000C94650011241FBE4F -:10009000CFEFD0E4DEBFCDBF11E0A0E0B1E0E2E100 -:1000A000F5E000E00BBF02C007900D92A834B10745 -:1000B000D9F721E0A8E4B1E001C01D92AE34B20747 -:1000C000E1F70E941F020C9487020C94000010922A -:1000D000000110920101109202011092030110928E -:1000E0000401109205010895FC01E150FF4F808149 -:1000F0008F5F808308954298E0E0F1E081918EBDAA -:100100000DB407FEFDCF81E0E630F807B9F7429A5B -:10011000089591ED980F9A3040F4DB01A050BF4F45 -:10012000E82FF0E0E35FFE4F0BC090EA980F9A31A2 -:1001300050F4DB01A050BF4FE82FF0E0EE53FF4F2B -:1001400080818C9308959FEB980F9A3140F4DB01E6 -:10015000A050BF4FE82FF0E0EE51FF4FF1CF8032BB -:1001600029F4FB01E050FF4F108208958D3229F4ED -:10017000FB01E050FF4F80E2808308950F931F93AF -:10018000CF93DF938C01C0E0D0E0BE01F8018191F4 -:100190008F010E9489002196C630D105B1F7DF9109 -:1001A000CF911F910F910C947B009FE9980F99318B -:1001B00040F4DB01A050BF4FE82FF0E0EE53FF4FBB -:1001C0000BC09EEB980F993148F4DB01A050BF4F54 -:1001D000E82FF0E0EE51FF4F80818C93089561503D -:1001E0007F4F835C9E4FFC018081FB0180830895DB -:1001F000089588E60E940401089581E08093B90083 -:100200008BE48093B800089594EA9093BC00909199 -:10021000BC0097FFFCCF9091B9008093BB0084E8AD -:100220008093BC008091BC0087FFFCCF8091B90017 -:1002300088E98093BB0084E88093BC008091BC0077 -:1002400087FFFCCF8091B90084E98093BC0080E0F7 -:10025000089580E480937C00EAE7F0E08081836881 -:100260008083089590917C00907F90937C00909182 -:100270007C00982B90937C0080917A00806480931E -:100280007A0080917A0086FDFCCF209178008091E1 -:10029000790090E0982F8827820F911D08951A9B6E -:1002A00005C0479A82B18C7F82B908954798119A08 -:1002B000089586B1089582E081B983EA84B98CE912 -:1002C00087B980EA8AB983E58CBD81E08DBD88B1AC -:1002D000887F88B9429A5D9A43988DB383608DBBBD -:1002E000E9E6F0E080818B608083E8E6F0E08081E1 -:1002F0008460808380E88093B00083E88093B100BD -:10030000809106018093B30010928000E1E8F0E054 -:1003100010828081856080838FEF90E090938900C8 -:1003200080938800EFE6F0E080818162808378949A -:100330000C9467001F920F920FB60F9211248F93A7 -:100340009F9385B192E0892785B986EE99EF9093C6 -:100350008500809384008091480190914901019625 -:1003600090934901809348010B97DCF0109249016A -:100370001092480180914A0190914B01019690930F -:100380004B0180934A0185B191E0892785B980911D -:100390004A0190914B01409724F010924B0110922A -:1003A0004A019F918F910F900FBE0F901F9018954B -:1003B0001F920F920FB60F9211248F9389B18F91D4 -:1003C0000F900FBE0F901F9018951F920F920FB6AF -:1003D0000F9211240F900FBE0F901F9018951F922F -:1003E0000F920FB60F9211240F900FBE0F901F9017 -:1003F00018958093B30008959093C5008093C4002E -:1004000088E08093C10086E08093C20008959091B7 -:10041000C00095FFFCCF8093C6000895CF93DF9373 -:10042000EC018991882319F00E940702FACFDF912D -:10043000CF9108950E94070280E090E00895CF9345 -:10044000DF9300D000D000D0CDB7DEB70E945B01B3 -:100450000E944F0186B1FE01319620E030E0E0902D -:100460004A01F0904B010091080110910901C90166 -:100470008E0D9F1DB8010E945F02865F9E4FDC01BA -:100480008C9181932F5F3F4F803271F4C9018E0DA3 -:100490009F1DB8010E945F02865F9E4FDC018C9118 -:1004A000803211F4449A03C088B1807E88B9263026 -:1004B0003105A9F6CE0101960E94BE00C9CF97FB77 -:1004C000072E16F4009407D077FD09D00E9473021E -:1004D00007FC05D03EF4909581959F4F0895709547 -:1004E00061957F4F0895AA1BBB1B51E107C0AA1F4E -:1004F000BB1FA617B70710F0A61BB70B881F991FC5 -:100500005A95A9F780959095BC01CD010895F8946E -:02051000FFCF1B -:10051200E6E6E6E6E6E67D00160046526F686520EE -:1005220020576569686E61636874656E20202020BB -:10053200012000BEF4E0E6F8B8DCB40446BCD09E6C -:10054200A4E4BA3EA07CF0C4C4D6B676E6DE06EADF -:080552006E367CFC0EFE7E00FB -:00000001FF diff --git a/code/build/main.lst b/code/build/main.lst deleted file mode 100644 index 5e84ae5..0000000 --- a/code/build/main.lst +++ /dev/null @@ -1,832 +0,0 @@ - 1 .file "main.c" - 2 __SP_H__ = 0x3e - 3 __SP_L__ = 0x3d - 4 __SREG__ = 0x3f - 5 __RAMPZ__ = 0x3b - 6 __tmp_reg__ = 0 - 7 __zero_reg__ = 1 - 8 .text - 9 .Ltext0: - 10 .cfi_sections .debug_frame - 11 .global check_dip_switches - 13 check_dip_switches: - 14 .LFB11: - 15 .file 1 "src/main.c" - 1:src/main.c **** //#define F_CPU 16000000L - 2:src/main.c **** - 3:src/main.c **** #include - 4:src/main.c **** #include - 5:src/main.c **** #include //interrupts - 6:src/main.c **** #include - 7:src/main.c **** #include "pinout.h" - 8:src/main.c **** #include "print.h" - 9:src/main.c **** #include "adc.h" - 10:src/main.c **** #include "uart.h" - 11:src/main.c **** #include "i2c.h" - 12:src/main.c **** #include "DS3231.h" - 13:src/main.c **** - 14:src/main.c **** - 15:src/main.c **** /*README - 16:src/main.c **** DIP1 aktiviert Röhren-Schaltregler - 17:src/main.c **** */ - 18:src/main.c **** - 19:src/main.c **** volatile int counter = 0; - 20:src/main.c **** char text[22] = {'F','R','o','h','e',' ',' ','W','e','i','h','n','a','c','h','t','e', 'n', ' ',' ', - 21:src/main.c **** //char text[18] = {'1','2','3','4','5','6','7','8','9','t','s','c','a','f','e',' ', ' ', ' '}; - 22:src/main.c **** int offset = 0; - 23:src/main.c **** int animationtimer = 0; - 24:src/main.c **** int stringlength = 22; - 25:src/main.c **** int duty = 125; - 26:src/main.c **** - 27:src/main.c **** - 28:src/main.c **** void check_dip_switches(void); - 29:src/main.c **** void check_buttons(void); - 30:src/main.c **** void setup(void); - 31:src/main.c **** void set_PWM_duty(int dutycycle); - 32:src/main.c **** - 33:src/main.c **** int main(void){ - 34:src/main.c **** setup(); - 35:src/main.c **** - 36:src/main.c **** while(1){ - 37:src/main.c **** //putchar('c'); - 38:src/main.c **** //_delay_ms(50); - 39:src/main.c **** - 40:src/main.c **** check_dip_switches(); - 41:src/main.c **** check_buttons(); - 42:src/main.c **** - 43:src/main.c **** - 44:src/main.c **** - 45:src/main.c **** char current_section[6]; - 46:src/main.c **** for(int i = 0; i < 6; i++){ - 47:src/main.c **** current_section[i] = text[(i+offset)%stringlength]; - 48:src/main.c **** if(text[(i+offset)%stringlength] == ' ' && text[(i+1+offset)%stringlength] == ' '){ - 49:src/main.c **** PORTC |= DOT; - 50:src/main.c **** }else{ - 51:src/main.c **** PORTC &= ~DOT; - 52:src/main.c **** } - 53:src/main.c **** } - 54:src/main.c **** - 55:src/main.c **** - 56:src/main.c **** - 57:src/main.c **** //for(int i = 0; i < 6; i++){} - 58:src/main.c **** //char test_word[6] = {'0','0','0','0','0', (char)i}; - 59:src/main.c **** print_String(current_section); - 60:src/main.c **** //i2c_start(0b00101010); - 61:src/main.c **** // current_e - 62:src/main.c **** - 63:src/main.c **** - 64:src/main.c **** - 65:src/main.c **** /* - 66:src/main.c **** for(int i = 0; i < 6; i++) - 67:src/main.c **** SR_Buffer[i] = i; - 68:src/main.c **** - 69:src/main.c **** print_SR_Buffer(); - 70:src/main.c **** */ - 71:src/main.c **** //putchar((i2c_start(0x68))+48); - 72:src/main.c **** //i2c_write(0b00101010); - 73:src/main.c **** } - 74:src/main.c **** } - 75:src/main.c **** - 76:src/main.c **** void check_dip_switches() { - 16 .loc 1 76 0 - 17 .cfi_startproc - 18 /* prologue: function */ - 19 /* frame size = 0 */ - 20 /* stack size = 0 */ - 21 .L__stack_usage = 0 - 77:src/main.c **** if (PINB & DIP_1) { - 22 .loc 1 77 0 - 23 0000 1A9B sbis 0x3,2 - 24 0002 00C0 rjmp .L2 - 78:src/main.c **** PORTC |= ENABLE_TUBE_PSU; - 25 .loc 1 78 0 - 26 0004 479A sbi 0x8,7 - 79:src/main.c **** PORTA &= ~ENABLE_TUBE_SUPPLY; - 27 .loc 1 79 0 - 28 0006 82B1 in r24,0x2 - 29 0008 8C7F andi r24,lo8(-4) - 30 000a 82B9 out 0x2,r24 - 31 000c 0895 ret - 32 .L2: - 80:src/main.c **** // PORTB |= STATUS_LED_B; - 81:src/main.c **** } else { - 82:src/main.c **** PORTC &= ~(ENABLE_TUBE_PSU); - 33 .loc 1 82 0 - 34 000e 4798 cbi 0x8,7 - 83:src/main.c **** PORTA |= (ENABLE_TUBE_SUPPLY); - 35 .loc 1 83 0 - 36 0010 119A sbi 0x2,1 - 37 0012 0895 ret - 38 .cfi_endproc - 39 .LFE11: - 41 .global check_buttons - 43 check_buttons: - 44 .LFB12: - 84:src/main.c **** // PORTB &= ~STATUS_LED_B; - 85:src/main.c **** } - 86:src/main.c **** } - 87:src/main.c **** - 88:src/main.c **** void check_buttons(){ - 45 .loc 1 88 0 - 46 .cfi_startproc - 47 /* prologue: function */ - 48 /* frame size = 0 */ - 49 /* stack size = 0 */ - 50 .L__stack_usage = 0 - 89:src/main.c **** if((PINC & BUTTON_A)){ - 51 .loc 1 89 0 - 52 0014 86B1 in r24,0x6 - 53 0016 0895 ret - 54 .cfi_endproc - 55 .LFE12: - 57 .global setup - 59 setup: - 60 .LFB13: - 90:src/main.c **** // PORTB &= ~STATUS_LED_C; - 91:src/main.c **** } - 92:src/main.c **** }; - 93:src/main.c **** - 94:src/main.c **** void setup(){ - 61 .loc 1 94 0 - 62 .cfi_startproc - 63 /* prologue: function */ - 64 /* frame size = 0 */ - 65 /* stack size = 0 */ - 66 .L__stack_usage = 0 - 95:src/main.c **** - 96:src/main.c **** DDRA = ENABLE_TUBE_SUPPLY; - 67 .loc 1 96 0 - 68 0018 82E0 ldi r24,lo8(2) - 69 001a 81B9 out 0x1,r24 - 97:src/main.c **** - 98:src/main.c **** DDRB = STATUS_LED_B - 70 .loc 1 98 0 - 71 001c 83EA ldi r24,lo8(-93) - 72 001e 84B9 out 0x4,r24 - 99:src/main.c **** | STATUS_LED_C - 100:src/main.c **** | MOSI - 101:src/main.c **** | CLK; - 102:src/main.c **** - 103:src/main.c **** DDRC = LATCH_SR - 73 .loc 1 103 0 - 74 0020 8CE9 ldi r24,lo8(-100) - 75 0022 87B9 out 0x7,r24 - 104:src/main.c **** | ENABLE_SR - 105:src/main.c **** | DOT - 106:src/main.c **** | ENABLE_TUBE_PSU; - 107:src/main.c **** - 108:src/main.c **** DDRD = RESET_SR - 76 .loc 1 108 0 - 77 0024 80EA ldi r24,lo8(-96) - 78 0026 8AB9 out 0xa,r24 - 109:src/main.c **** | TUBE_LED; - 110:src/main.c **** - 111:src/main.c **** - 112:src/main.c **** //-------------------------- - 113:src/main.c **** // SPI - 114:src/main.c **** //-------------------------- - 115:src/main.c **** SPCR = (1 << SPE) | //enable SPI - 79 .loc 1 115 0 - 80 0028 83E5 ldi r24,lo8(83) - 81 002a 8CBD out 0x2c,r24 - 116:src/main.c **** (1 << MSTR) | //SPI als Master starten - 117:src/main.c **** (1 << SPR0) | //clock-prescaler LSB - 118:src/main.c **** (1 << SPR1) | //clock-prescaler MSB - 119:src/main.c **** (0 << SPIE) | //complete transfer/ recive interrupt - 120:src/main.c **** (0 << CPOL) | - 121:src/main.c **** (0 << CPHA) | - 122:src/main.c **** (0 << DORD); //MSB first = 0 - 123:src/main.c **** SPSR = (1 << SPI2X);// | //clock- prescaler double speed - 82 .loc 1 123 0 - 83 002c 81E0 ldi r24,lo8(1) - 84 002e 8DBD out 0x2d,r24 - 124:src/main.c **** - 125:src/main.c **** PORTC &= ~LATCH_SR; //latch low, sonst startet SPI nicht - 85 .loc 1 125 0 - 86 0030 88B1 in r24,0x8 - 87 0032 887F andi r24,lo8(-8) - 88 0034 88B9 out 0x8,r24 - 126:src/main.c **** PORTC |= LATCH_SR; - 89 .loc 1 126 0 - 90 0036 429A sbi 0x8,2 - 127:src/main.c **** PORTD |= RESET_SR; //Setzte Reset auf HIGH (active LOW) - 91 .loc 1 127 0 - 92 0038 5D9A sbi 0xb,5 - 128:src/main.c **** PORTC &= ~(ENABLE_SR); //Aktiviert Shiftregister (active LOW) - 93 .loc 1 128 0 - 94 003a 4398 cbi 0x8,3 - 129:src/main.c **** - 130:src/main.c **** - 131:src/main.c **** - 132:src/main.c **** //-------------------------- - 133:src/main.c **** // Externe Interrupts - 134:src/main.c **** //-------------------------- - 135:src/main.c **** //External Interrupt Mask Register - 136:src/main.c **** - 137:src/main.c **** EIMSK |= (1 << INT0) | //Aktiviere Interrupt INT0 - 95 .loc 1 137 0 - 96 003c 8DB3 in r24,0x1d - 97 003e 8360 ori r24,lo8(3) - 98 0040 8DBB out 0x1d,r24 - 138:src/main.c **** (1 << INT1); //Aktiviere Interrupt INT1 - 139:src/main.c **** - 140:src/main.c **** //External Interrupt Control Register A - 141:src/main.c **** EICRA |= (0 << ISC10) | //Interrupt bei jedem Pegelwechsel auf INT1 - 99 .loc 1 141 0 - 100 0042 E9E6 ldi r30,lo8(105) - 101 0044 F0E0 ldi r31,0 - 102 0046 8081 ld r24,Z - 103 0048 8B60 ori r24,lo8(11) - 104 004a 8083 st Z,r24 - 142:src/main.c **** (1 << ISC11) | - 143:src/main.c **** (1 << ISC00) | //Interrupt bei jedem Pegelwechsel auf INT0 - 144:src/main.c **** (1 << ISC01); - 145:src/main.c **** //Pin Change Interrupt Control Register - 146:src/main.c **** PCICR |= (1 << PCIE2); //Enabled PCINT16-23 als mögliche Signalquelle für Interrupt - 105 .loc 1 146 0 - 106 004c E8E6 ldi r30,lo8(104) - 107 004e F0E0 ldi r31,0 - 108 0050 8081 ld r24,Z - 109 0052 8460 ori r24,lo8(4) - 110 0054 8083 st Z,r24 - 147:src/main.c **** - 148:src/main.c **** //Pin Change Mask Register 2 - 149:src/main.c **** //PCMSK2 |= (1 << PCINT18) | //PCINT18 als Signalquelle wählen - 150:src/main.c **** // (1 << PCINT19); //PCINT19 als Signalquelle wählen - 151:src/main.c **** - 152:src/main.c **** - 153:src/main.c **** //-------------------------- - 154:src/main.c **** // Timer + Zeitinterrupts - 155:src/main.c **** //-------------------------- - 156:src/main.c **** - 157:src/main.c **** //PWM-Timer - 158:src/main.c **** //OC2A set when upcounting, clear when down counting - 159:src/main.c **** TCCR2A = (1< 10){ - 308 .loc 1 217 0 - 309 00ca 0B97 sbiw r24,11 - 310 00cc 04F0 brlt .L13 - 218:src/main.c **** animationtimer= 0; - 311 .loc 1 218 0 - 312 00ce 1092 0000 sts animationtimer+1,__zero_reg__ - 313 00d2 1092 0000 sts animationtimer,__zero_reg__ - 219:src/main.c **** offset++; - 314 .loc 1 219 0 - 315 00d6 8091 0000 lds r24,offset - 316 00da 9091 0000 lds r25,offset+1 - 317 00de 0196 adiw r24,1 - 318 00e0 9093 0000 sts offset+1,r25 - 319 00e4 8093 0000 sts offset,r24 - 220:src/main.c **** PORTB ^= STATUS_LED_B; - 320 .loc 1 220 0 - 321 00e8 85B1 in r24,0x5 - 322 00ea 91E0 ldi r25,lo8(1) - 323 00ec 8927 eor r24,r25 - 324 00ee 85B9 out 0x5,r24 - 221:src/main.c **** if(offset > 15){ - 325 .loc 1 221 0 - 326 00f0 8091 0000 lds r24,offset - 327 00f4 9091 0000 lds r25,offset+1 - 328 00f8 4097 sbiw r24,16 - 329 00fa 04F0 brlt .L13 - 222:src/main.c **** offset = 0; - 330 .loc 1 222 0 - 331 00fc 1092 0000 sts offset+1,__zero_reg__ - 332 0100 1092 0000 sts offset,__zero_reg__ - 333 .L13: - 334 /* epilogue start */ - 223:src/main.c **** } - 224:src/main.c **** } - 225:src/main.c **** } - 335 .loc 1 225 0 - 336 0104 9F91 pop r25 - 337 0106 8F91 pop r24 - 338 0108 0F90 pop r0 - 339 010a 0FBE out __SREG__,r0 - 340 010c 0F90 pop r0 - 341 010e 1F90 pop r1 - 342 0110 1895 reti - 343 .cfi_endproc - 344 .LFE14: - 346 .global __vector_1 - 348 __vector_1: - 349 .LFB15: - 226:src/main.c **** - 227:src/main.c **** //Encoder rotate - 228:src/main.c **** ISR(INT0_vect) { - 350 .loc 1 228 0 - 351 .cfi_startproc - 352 0112 1F92 push r1 - 353 .LCFI8: - 354 .cfi_def_cfa_offset 3 - 355 .cfi_offset 1, -2 - 356 0114 0F92 push r0 - 357 .LCFI9: - 358 .cfi_def_cfa_offset 4 - 359 .cfi_offset 0, -3 - 360 0116 0FB6 in r0,__SREG__ - 361 0118 0F92 push r0 - 362 011a 1124 clr __zero_reg__ - 363 011c 8F93 push r24 - 364 .LCFI10: - 365 .cfi_def_cfa_offset 5 - 366 .cfi_offset 24, -4 - 367 /* prologue: Signal */ - 368 /* frame size = 0 */ - 369 /* stack size = 4 */ - 370 .L__stack_usage = 4 - 229:src/main.c **** if (PIND & ENCODER_B) { - 371 .loc 1 229 0 - 372 011e 89B1 in r24,0x9 - 373 /* epilogue start */ - 230:src/main.c **** // set_PWM_duty(duty--); - 231:src/main.c **** } else { - 232:src/main.c **** // set_PWM_duty(duty++); - 233:src/main.c **** } - 234:src/main.c **** } - 374 .loc 1 234 0 - 375 0120 8F91 pop r24 - 376 0122 0F90 pop r0 - 377 0124 0FBE out __SREG__,r0 - 378 0126 0F90 pop r0 - 379 0128 1F90 pop r1 - 380 012a 1895 reti - 381 .cfi_endproc - 382 .LFE15: - 384 .global __vector_2 - 386 __vector_2: - 387 .LFB16: - 235:src/main.c **** - 236:src/main.c **** //Encoder Button - 237:src/main.c **** ISR(INT1_vect) { - 388 .loc 1 237 0 - 389 .cfi_startproc - 390 012c 1F92 push r1 - 391 .LCFI11: - 392 .cfi_def_cfa_offset 3 - 393 .cfi_offset 1, -2 - 394 012e 0F92 push r0 - 395 .LCFI12: - 396 .cfi_def_cfa_offset 4 - 397 .cfi_offset 0, -3 - 398 0130 0FB6 in r0,__SREG__ - 399 0132 0F92 push r0 - 400 0134 1124 clr __zero_reg__ - 401 /* prologue: Signal */ - 402 /* frame size = 0 */ - 403 /* stack size = 3 */ - 404 .L__stack_usage = 3 - 405 /* epilogue start */ - 238:src/main.c **** - 239:src/main.c **** } - 406 .loc 1 239 0 - 407 0136 0F90 pop r0 - 408 0138 0FBE out __SREG__,r0 - 409 013a 0F90 pop r0 - 410 013c 1F90 pop r1 - 411 013e 1895 reti - 412 .cfi_endproc - 413 .LFE16: - 415 .global __vector_20 - 417 __vector_20: - 418 .LFB17: - 240:src/main.c **** - 241:src/main.c **** - 242:src/main.c **** ISR (USART0_RX_vect){ - 419 .loc 1 242 0 - 420 .cfi_startproc - 421 0140 1F92 push r1 - 422 .LCFI13: - 423 .cfi_def_cfa_offset 3 - 424 .cfi_offset 1, -2 - 425 0142 0F92 push r0 - 426 .LCFI14: - 427 .cfi_def_cfa_offset 4 - 428 .cfi_offset 0, -3 - 429 0144 0FB6 in r0,__SREG__ - 430 0146 0F92 push r0 - 431 0148 1124 clr __zero_reg__ - 432 /* prologue: Signal */ - 433 /* frame size = 0 */ - 434 /* stack size = 3 */ - 435 .L__stack_usage = 3 - 436 /* epilogue start */ - 243:src/main.c **** /* - 244:src/main.c **** //while ( !(UCSR0A & (1<-_Ks|Ocl${HJGYKx-rYU2?Jxb0_m1v)eCP1atvg4W4qtt^ z`Ouz+wq3jDXYagyd^FShjcYU8j!Co~D03_`^q|;==dj4^7a}wCkSHI_h&PTMA1&|8 z^zMMoz7GaQ2ZnZ`Zm0M_w(M=oY};g7ArLGNhY=;(kD$58}EQI7H(Yj5e1sgGE+%CrtNzH0UF?;WZQF1#XB zZ+&#STIv@c7EkRQ&fL6nWM*9;-}>kU%Q{F8;;C=BgupK-Po{^NBT}s&E~|jh&4+9A zC45?i6!Kj8(YUQDwp_^y*BPvE<>fofkqRBDP)hkuXX`Ahz(Fgr9lHm;F6)dN*;J9# z6gqa-jJ10KCgW&kWjKl=$LMUUi8_O<^{6SLPN+e~qaCQ435(g;i-a z7Tw;2OgO_Y0#$}w=(lnWvw92O$L;E~M1^&rsU!fY$h2#5JQTnqEsKj0cBMsF(vXeM zRU|~|RMp$M;;Rsp2epMx^e&96%;|yd%K_npuwpm*brtPzLVGxEsiNPivqei)EnJNM z#JCuR5EHWT<aZsGyK%)}Tj+T%tdVbGo`C8W)JRAuBv2bA>v$=-c|KmAcUv z2t*!Ij^jbEJn^&>t^AxL$~w~RKW7kM(0m5$ortpYDR`!lGV=M^k2g{65}kZn|MnCK z+!^GKOC`giHl0e=b|=E2?%L*LB9&?lg|GK5TC>tuUl+JAP#>668`_YpjmE>>>Gp^K z7a|sl#{FU5G*WguUJL#%M%R;cpj`ia8LscVAs?^p#F6g=Wu}*Y{rPM4+iSzHi%TjPWL#`2Upn`M5nML8*LGaM`Iy7nuy!cSR^Te z!3~kHok#`)7m08p9k-!N$5YYHc% z(Vd8Qdb17qGR=Cd7wu_#6DE_LcSqu#c9)!EvGnrQ-ezxuf382^^~GZ0^n#Ebi*$w< zx7XL{^<9zj`mhEII^*ei^Sr(e?cc|MOt~#;cSIxI?Xd6Y;R>U(bl8TJ>PjSSUnHK6 zrBuZ2(Vk%H#;A?>Q@J5BVmXFS4kV4bxj|cm)5#>}Jea~nVctY4x;bKR>WLWb=!Js~ zZ^CS$KTKP08tMcR63ZvEE78$`mEr0HTi0F|lrxky4G8ubn1fDbICN_+g;?6$e6hC% z^LL&zea@TwBnSuW))^&U*S$zzc|A~DXFRwmbElc|&5*q)nlb>3JnqK3T#Gz;jd#17 zJw;8WX9>Z*s%Z-VZF;3m#=Y2+-*_l*k*A>Xj(o2+0-t;kb zsZB9E)F%8`c87Oql#FzT{4(MF?IAlP{B5a}@MpDX5lV7{II8wYTe>qCjdvu3-@&1_ zwq#_(m}=~;F>)vwigzNHOc$q7bw}e7?G@1pe>j0Xi<8*w;=Gw!}hG>yv|gze$DMgCD%_AZAr6Hcy-ox-$#Xxf%V#M zj>5W*b{QHd(slvJW_;Tx;QJ0b#>dx?j;{q+w*eG2IElaOygVpo>lOo>{xY~Z4j@?i z?3b4U-S0-D4WKxNplS#d zY1b*proUFT2kDRNrTz5->o$O*9E)S_AzgQ?YC{{64S#ju^oLt$)*tU9x(%SHfxo{J zDAIL@A)E2t3xDjF{`hsFq<6kD{1%lW;SvWCKO4V|hk#r53Yc z$9&PGV|o$_jal~?;(G<0@$t;j@l^opTm}?1nB3nHC}N)^awBZ<76v&01;>n(mHs$x ze$bizY+NeO(@s!lKu9?<^?BmN$y^QnnYEP79w_I@J^AHqqZ21Nt_6n7y}ZznzXZ$= zVTVqf^l2#hiIeldbG@D#&)5s1Tkfo!1Gn>8n^m~w4#QRx6D9O=1k_uJth-4 zUanw{+@eY>Q6g(95&2c%dYvhELgrfWeMdP4PU4zYz++NM&V#-8DLDgPiIa%?hqjJ= zp4dA^c8fb9YhwHRP?%%xa($`IU7jxb^t-Kb8#5p-X67|aUw_eGA{b8eYzoSogCojIFz*l`&Z!#@o}29` zd1^c24|bw*5+0yOQS!I|peIm>xdhJ`_}2=9iRVyU@X5bqy{PoGXC7!jJimz9|EmhK z>pvU#ZG~y`p@EqnY)kupq3FIoHuU(~$ohw=aN}%cKCuwvRp7k)f%#73_$$#7_Z81- zV$wM%I?kC2v)}WH0chq|nEJUWl~eHm%|{srCHv=jR;2I>U>Ewm4tx!YwqFmd?Y|DJ z?c0I1eHSp}?*X@!-V44NrE)qRAf5}f;W#*6s}v6qPbv#az7u$+68{|Y#513m#3i@n zCKBRYVj6;GqtNDK*asBe2+VO&e*^e(h2MjIt-{>L*C_mV;E2L^gLf-@2lPxv`UwGV zQg|QuHiZ{KznfUC3(qWKo*{P`_#TD1j`tJ8=N#}K8~URP9|V8Kz|2+JKL`FNV$30l z=M`}V{7qse3+R0m>d{1;P?&SioTQ%&VlF|UO*M4o3VVSk8hDDr8=&X8NdL=#>y@5u zFHxBOzp60%jS&M3fZGZWgKt*&YS{D=W3D*f9SZY2-bIYQc0tef^z#Pz?ZmLB&7BG} zt|P>-e+l;ABZmD0z&|o<*f-nqJpU;%>^q^jm@Z73O(B(s{-Bh*2%LMK$J@BWC?%15Z=9 z2z-`-FHjg$C;yMcw!}P(h%?~KCt~i46$*R7uQc#Fg}IO04a_r#ZF%N!pKF{}_$F}X z5Z8z~wnyPZ;FPH+KCCeLcMQz?1#P|!{-A+>qVT=oj~n=Dg_)l(8TbzhkB46FS@iXHZ{abKU?W}4$n38%yrr`E}47Eeg*X^hHk^2xkY>C%Wa09c|$$t{t-j} Zn9_5OUpDlwC_U#~uCMC%Bc - 4:src/print.c **** #include - 5:src/print.c **** #include - 6:src/print.c **** - 7:src/print.c **** const unsigned char number_Font[10] = { 0b11011110, //0 - 8:src/print.c **** 0b00000110, //1 - 9:src/print.c **** 0b11101010, //2 - 10:src/print.c **** 0b01101110, //3 - 11:src/print.c **** 0b00110110, //4 - 12:src/print.c **** 0b01111100, //5 - 13:src/print.c **** 0b11111100, //6 - 14:src/print.c **** 0b00001110, //7 - 15:src/print.c **** 0b11111110, //8 - 16:src/print.c **** 0b01111110 //9 - 17:src/print.c **** }; - 18:src/print.c **** const unsigned char character_Font[26] = {0b10111110, //A - 19:src/print.c **** 0b11110100, //b - 20:src/print.c **** 0b11100000, //c - 21:src/print.c **** 0b11100110, //d - 22:src/print.c **** 0b11111000, //e - 23:src/print.c **** 0b10111000, //F - 24:src/print.c **** 0b11011100, //G - 25:src/print.c **** 0b10110100, //h - 26:src/print.c **** 0b00000100, //i - 27:src/print.c **** 0b01000110, //J - 28:src/print.c **** 0b10111100, //K - 29:src/print.c **** 0b11010000, //L - 30:src/print.c **** 0b10011110, //M - 31:src/print.c **** 0b10100100, //n - 32:src/print.c **** 0b11100100, //o - 33:src/print.c **** 0b10111010, //P - 34:src/print.c **** 0b00111110, //q - 35:src/print.c **** 0b10100000, //r - 36:src/print.c **** 0b01111100, //S - 37:src/print.c **** 0b11110000, //t - 38:src/print.c **** 0b11000100, //u - 39:src/print.c **** 0b11000100, //v - 40:src/print.c **** 0b11010110, //W - 41:src/print.c **** 0b10110110, //X - 42:src/print.c **** 0b01110110, //Y - 43:src/print.c **** 0b11100110 //Z - 44:src/print.c **** }; - 45:src/print.c **** const unsigned char blank = 0b00000000; //zeigt nichts an - 46:src/print.c **** const unsigned char minus = 0b00100000; //zeigt '-' an - 47:src/print.c **** const unsigned char dot = 0b00000001; //aktiviert Dezimalpunkt - 48:src/print.c **** unsigned char SR_Buffer[6] = {0b11100110, - 49:src/print.c **** 0b11100110, - 50:src/print.c **** 0b11100110, - 51:src/print.c **** 0b11100110, - 52:src/print.c **** 0b11100110, - 53:src/print.c **** 0b11100110, - 54:src/print.c **** 0b11100110, - 55:src/print.c **** 0b11100110}; - 56:src/print.c **** - 57:src/print.c **** - 58:src/print.c **** - 59:src/print.c **** void clear_SR_Buffer() { - 16 .loc 1 59 0 - 17 .cfi_startproc - 18 /* prologue: function */ - 19 /* frame size = 0 */ - 20 /* stack size = 0 */ - 21 .L__stack_usage = 0 - 22 .LVL0: - 23 .LBB2: - 60:src/print.c **** for (char i = 0; i < 6; i++) { - 61:src/print.c **** SR_Buffer[i] = blank; - 24 .loc 1 61 0 - 25 0000 1092 0000 sts SR_Buffer,__zero_reg__ - 26 .LVL1: - 27 0004 1092 0000 sts SR_Buffer+1,__zero_reg__ - 28 .LVL2: - 29 0008 1092 0000 sts SR_Buffer+2,__zero_reg__ - 30 .LVL3: - 31 000c 1092 0000 sts SR_Buffer+3,__zero_reg__ - 32 .LVL4: - 33 0010 1092 0000 sts SR_Buffer+4,__zero_reg__ - 34 .LVL5: - 35 0014 1092 0000 sts SR_Buffer+5,__zero_reg__ - 36 .LVL6: - 37 0018 0895 ret - 38 .LBE2: - 39 .cfi_endproc - 40 .LFE10: - 42 .global add_Decimal_Point_to_SR_Buffer - 44 add_Decimal_Point_to_SR_Buffer: - 45 .LFB11: - 62:src/print.c **** } - 63:src/print.c **** } - 64:src/print.c **** - 65:src/print.c **** void add_Decimal_Point_to_SR_Buffer(int pos){ - 46 .loc 1 65 0 - 47 .cfi_startproc - 48 .LVL7: - 49 /* prologue: function */ - 50 /* frame size = 0 */ - 51 /* stack size = 0 */ - 52 .L__stack_usage = 0 - 66:src/print.c **** SR_Buffer[pos-1] += dot; - 53 .loc 1 66 0 - 54 001a FC01 movw r30,r24 - 55 001c E050 subi r30,lo8(-(SR_Buffer-1)) - 56 001e F040 sbci r31,hi8(-(SR_Buffer-1)) - 57 0020 8081 ld r24,Z - 58 .LVL8: - 59 0022 8F5F subi r24,lo8(-(1)) - 60 0024 8083 st Z,r24 - 61 0026 0895 ret - 62 .cfi_endproc - 63 .LFE11: - 65 .global print_SR_Buffer - 67 print_SR_Buffer: - 68 .LFB12: - 67:src/print.c **** } - 68:src/print.c **** - 69:src/print.c **** void print_SR_Buffer() { - 69 .loc 1 69 0 - 70 .cfi_startproc - 71 /* prologue: function */ - 72 /* frame size = 0 */ - 73 /* stack size = 0 */ - 74 .L__stack_usage = 0 - 70:src/print.c **** PORTC &= ~(LATCH_SR); - 75 .loc 1 70 0 - 76 0028 4298 cbi 0x8,2 - 77 .LVL9: - 78 002a E0E0 ldi r30,lo8(SR_Buffer) - 79 002c F0E0 ldi r31,hi8(SR_Buffer) - 80 .LVL10: - 81 .L7: - 82 .LBB3: - 71:src/print.c **** - 72:src/print.c **** for (int i = 0; i < 6; i++) { - 73:src/print.c **** SPDR = SR_Buffer[i]; - 83 .loc 1 73 0 - 84 002e 8191 ld r24,Z+ - 85 .LVL11: - 86 0030 8EBD out 0x2e,r24 - 87 .L5: - 74:src/print.c **** //SPDR = 0b11100110; - 75:src/print.c **** //_delay_us(100); - 76:src/print.c **** while (!(SPSR & (1 << SPIF))); //warten auf transferabschluss - 88 .loc 1 76 0 discriminator 1 - 89 0032 0DB4 in __tmp_reg__,0x2d - 90 0034 07FE sbrs __tmp_reg__,7 - 91 0036 00C0 rjmp .L5 - 92 .LVL12: - 72:src/print.c **** for (int i = 0; i < 6; i++) { - 93 .loc 1 72 0 - 94 0038 80E0 ldi r24,hi8(SR_Buffer+6) - 95 003a E030 cpi r30,lo8(SR_Buffer+6) - 96 003c F807 cpc r31,r24 - 97 003e 01F4 brne .L7 - 98 .LBE3: - 77:src/print.c **** } - 78:src/print.c **** PORTC |= LATCH_SR; - 99 .loc 1 78 0 - 100 0040 429A sbi 0x8,2 - 101 0042 0895 ret - 102 .cfi_endproc - 103 .LFE12: - 105 .global add_ASCII_to_SR_Buffer - 107 add_ASCII_to_SR_Buffer: - 108 .LFB14: - 79:src/print.c **** //_delay_ms(1); - 80:src/print.c **** //PORTC &= ~(LATCH_SR); - 81:src/print.c **** } - 82:src/print.c **** - 83:src/print.c **** void print_String(char* string){ - 84:src/print.c **** for(int i = 0; i < 6; i++){ - 85:src/print.c **** add_ASCII_to_SR_Buffer(string[i],i); - 86:src/print.c **** } - 87:src/print.c **** print_SR_Buffer(); - 88:src/print.c **** } - 89:src/print.c **** - 90:src/print.c **** - 91:src/print.c **** void add_ASCII_to_SR_Buffer(unsigned char character, int pos) { - 109 .loc 1 91 0 - 110 .cfi_startproc - 111 .LVL13: - 112 /* prologue: function */ - 113 /* frame size = 0 */ - 114 /* stack size = 0 */ - 115 .L__stack_usage = 0 - 92:src/print.c **** int ascii_offset = 0; - 93:src/print.c **** - 94:src/print.c **** if((character > 46) && (character < 57)){ //Char ist Zahl - 116 .loc 1 94 0 - 117 0044 91ED ldi r25,lo8(-47) - 118 0046 980F add r25,r24 - 119 0048 9A30 cpi r25,lo8(10) - 120 004a 00F4 brsh .L10 - 121 .LVL14: - 95:src/print.c **** ascii_offset = 48; - 96:src/print.c **** SR_Buffer[pos] = number_Font[character - ascii_offset]; //Zieht ASCII-Offset ab, sodass Zahl mit F - 122 .loc 1 96 0 - 123 004c DB01 movw r26,r22 - 124 004e A050 subi r26,lo8(-(SR_Buffer)) - 125 0050 B040 sbci r27,hi8(-(SR_Buffer)) - 126 0052 E82F mov r30,r24 - 127 0054 F0E0 ldi r31,0 - 128 0056 E050 subi r30,lo8(-(number_Font-48)) - 129 0058 F040 sbci r31,hi8(-(number_Font-48)) - 130 005a 00C0 rjmp .L15 - 131 .LVL15: - 132 .L10: - 97:src/print.c **** }else if (character > 95 && character < 122) { //Buchstabe ist kleiner Buchstabe - 133 .loc 1 97 0 - 134 005c 90EA ldi r25,lo8(-96) - 135 005e 980F add r25,r24 - 136 0060 9A31 cpi r25,lo8(26) - 137 0062 00F4 brsh .L12 - 138 .LVL16: - 98:src/print.c **** ascii_offset = 97; - 99:src/print.c **** SR_Buffer[pos] = character_Font[character - ascii_offset]; //Zieht ASCII-Offset ab, sodass Buch - 139 .loc 1 99 0 - 140 0064 DB01 movw r26,r22 - 141 0066 A050 subi r26,lo8(-(SR_Buffer)) - 142 0068 B040 sbci r27,hi8(-(SR_Buffer)) - 143 006a E82F mov r30,r24 - 144 006c F0E0 ldi r31,0 - 145 006e E050 subi r30,lo8(-(character_Font-97)) - 146 0070 F040 sbci r31,hi8(-(character_Font-97)) - 147 .LVL17: - 148 .L15: - 149 0072 8081 ld r24,Z - 150 .LVL18: - 151 0074 8C93 st X,r24 - 152 0076 0895 ret - 153 .LVL19: - 154 .L12: - 100:src/print.c **** } else if (character > 64 && character < 91){ //Buchstabe groß Buchstabe - 155 .loc 1 100 0 - 156 0078 9FEB ldi r25,lo8(-65) - 157 007a 980F add r25,r24 - 158 007c 9A31 cpi r25,lo8(26) - 159 007e 00F4 brsh .L13 - 160 .LVL20: - 101:src/print.c **** ascii_offset = 65; - 102:src/print.c **** SR_Buffer[pos] = character_Font[character - ascii_offset]; //Zieht ASCII-Offset ab, sodass Buch - 161 .loc 1 102 0 - 162 0080 DB01 movw r26,r22 - 163 0082 A050 subi r26,lo8(-(SR_Buffer)) - 164 0084 B040 sbci r27,hi8(-(SR_Buffer)) - 165 0086 E82F mov r30,r24 - 166 0088 F0E0 ldi r31,0 - 167 008a E050 subi r30,lo8(-(character_Font-65)) - 168 008c F040 sbci r31,hi8(-(character_Font-65)) - 169 008e 00C0 rjmp .L15 - 170 .LVL21: - 171 .L13: - 103:src/print.c **** } else if (character == 32){ //Charakter ist Blank ' ' - 172 .loc 1 103 0 - 173 0090 8032 cpi r24,lo8(32) - 174 0092 01F4 brne .L14 - 104:src/print.c **** SR_Buffer[pos] = blank; - 175 .loc 1 104 0 - 176 0094 FB01 movw r30,r22 - 177 0096 E050 subi r30,lo8(-(SR_Buffer)) - 178 0098 F040 sbci r31,hi8(-(SR_Buffer)) - 179 009a 1082 st Z,__zero_reg__ - 180 009c 0895 ret - 181 .L14: - 105:src/print.c **** } else if (character == 45){ //Charakter ist Minus - - 182 .loc 1 105 0 - 183 009e 8D32 cpi r24,lo8(45) - 184 00a0 01F4 brne .L9 - 106:src/print.c **** SR_Buffer[pos] = minus; - 185 .loc 1 106 0 - 186 00a2 FB01 movw r30,r22 - 187 00a4 E050 subi r30,lo8(-(SR_Buffer)) - 188 00a6 F040 sbci r31,hi8(-(SR_Buffer)) - 189 00a8 80E2 ldi r24,lo8(32) - 190 .LVL22: - 191 00aa 8083 st Z,r24 - 192 .L9: - 193 00ac 0895 ret - 194 .cfi_endproc - 195 .LFE14: - 197 .global print_String - 199 print_String: - 200 .LFB13: - 83:src/print.c **** void print_String(char* string){ - 201 .loc 1 83 0 - 202 .cfi_startproc - 203 .LVL23: - 204 00ae 0F93 push r16 - 205 .LCFI0: - 206 .cfi_def_cfa_offset 3 - 207 .cfi_offset 16, -2 - 208 00b0 1F93 push r17 - 209 .LCFI1: - 210 .cfi_def_cfa_offset 4 - 211 .cfi_offset 17, -3 - 212 00b2 CF93 push r28 - 213 .LCFI2: - 214 .cfi_def_cfa_offset 5 - 215 .cfi_offset 28, -4 - 216 00b4 DF93 push r29 - 217 .LCFI3: - 218 .cfi_def_cfa_offset 6 - 219 .cfi_offset 29, -5 - 220 /* prologue: function */ - 221 /* frame size = 0 */ - 222 /* stack size = 4 */ - 223 .L__stack_usage = 4 - 224 00b6 8C01 movw r16,r24 - 225 .LVL24: - 226 .LBB4: - 84:src/print.c **** for(int i = 0; i < 6; i++){ - 227 .loc 1 84 0 - 228 00b8 C0E0 ldi r28,0 - 229 00ba D0E0 ldi r29,0 - 230 .LVL25: - 231 .L18: - 85:src/print.c **** add_ASCII_to_SR_Buffer(string[i],i); - 232 .loc 1 85 0 discriminator 2 - 233 00bc BE01 movw r22,r28 - 234 00be F801 movw r30,r16 - 235 00c0 8191 ld r24,Z+ - 236 00c2 8F01 movw r16,r30 - 237 00c4 0E94 0000 call add_ASCII_to_SR_Buffer - 238 .LVL26: - 84:src/print.c **** for(int i = 0; i < 6; i++){ - 239 .loc 1 84 0 discriminator 2 - 240 00c8 2196 adiw r28,1 - 241 .LVL27: - 242 00ca C630 cpi r28,6 - 243 00cc D105 cpc r29,__zero_reg__ - 244 00ce 01F4 brne .L18 - 245 /* epilogue start */ - 246 .LBE4: - 88:src/print.c **** } - 247 .loc 1 88 0 - 248 00d0 DF91 pop r29 - 249 00d2 CF91 pop r28 - 250 .LVL28: - 251 00d4 1F91 pop r17 - 252 00d6 0F91 pop r16 - 87:src/print.c **** print_SR_Buffer(); - 253 .loc 1 87 0 - 254 00d8 0C94 0000 jmp print_SR_Buffer - 255 .LVL29: - 256 .cfi_endproc - 257 .LFE13: - 259 .global add_Character_to_SR_Buffer - 261 add_Character_to_SR_Buffer: - 262 .LFB15: - 107:src/print.c **** } - 108:src/print.c **** - 109:src/print.c **** } - 110:src/print.c **** - 111:src/print.c **** void add_Character_to_SR_Buffer(unsigned char character, int pos) { - 263 .loc 1 111 0 - 264 .cfi_startproc - 265 .LVL30: - 266 /* prologue: function */ - 267 /* frame size = 0 */ - 268 /* stack size = 0 */ - 269 .L__stack_usage = 0 - 112:src/print.c **** int ascii_offset = 0; - 113:src/print.c **** - 114:src/print.c **** if (character > 96 && character < 122) { //Buchstabe ist kleiner Buchstabe - 270 .loc 1 114 0 - 271 00dc 9FE9 ldi r25,lo8(-97) - 272 00de 980F add r25,r24 - 273 00e0 9931 cpi r25,lo8(25) - 274 00e2 00F4 brsh .L20 - 275 .LVL31: - 115:src/print.c **** ascii_offset = 97; - 116:src/print.c **** SR_Buffer[pos] = character_Font[character - ascii_offset]; //Zieht ASCII-Offset ab, sodass Buch - 276 .loc 1 116 0 - 277 00e4 DB01 movw r26,r22 - 278 00e6 A050 subi r26,lo8(-(SR_Buffer)) - 279 00e8 B040 sbci r27,hi8(-(SR_Buffer)) - 280 00ea E82F mov r30,r24 - 281 00ec F0E0 ldi r31,0 - 282 00ee E050 subi r30,lo8(-(character_Font-97)) - 283 00f0 F040 sbci r31,hi8(-(character_Font-97)) - 284 00f2 00C0 rjmp .L22 - 285 .LVL32: - 286 .L20: - 117:src/print.c **** } else if (character > 65 && character < 91){ //Buchstabe groß Buchstabe - 287 .loc 1 117 0 - 288 00f4 9EEB ldi r25,lo8(-66) - 289 00f6 980F add r25,r24 - 290 00f8 9931 cpi r25,lo8(25) - 291 00fa 00F4 brsh .L19 - 292 .LVL33: - 118:src/print.c **** ascii_offset = 65; - 119:src/print.c **** SR_Buffer[pos] = character_Font[character - ascii_offset]; //Zieht ASCII-Offset ab, sodass Buch - 293 .loc 1 119 0 - 294 00fc DB01 movw r26,r22 - 295 00fe A050 subi r26,lo8(-(SR_Buffer)) - 296 0100 B040 sbci r27,hi8(-(SR_Buffer)) - 297 0102 E82F mov r30,r24 - 298 0104 F0E0 ldi r31,0 - 299 0106 E050 subi r30,lo8(-(character_Font-65)) - 300 0108 F040 sbci r31,hi8(-(character_Font-65)) - 301 .LVL34: - 302 .L22: - 303 010a 8081 ld r24,Z - 304 .LVL35: - 305 010c 8C93 st X,r24 - 306 .L19: - 307 010e 0895 ret - 308 .cfi_endproc - 309 .LFE15: - 311 .global add_Number_to_SR_Buffer - 313 add_Number_to_SR_Buffer: - 314 .LFB16: - 120:src/print.c **** } - 121:src/print.c **** - 122:src/print.c **** } - 123:src/print.c **** - 124:src/print.c **** void add_Number_to_SR_Buffer(int number, int pos) { - 315 .loc 1 124 0 - 316 .cfi_startproc - 317 .LVL36: - 318 /* prologue: function */ - 319 /* frame size = 0 */ - 320 /* stack size = 0 */ - 321 .L__stack_usage = 0 - 125:src/print.c **** SR_Buffer[pos-1] = number_Font[number]; - 322 .loc 1 125 0 - 323 0110 6050 subi r22,lo8(-(SR_Buffer-1)) - 324 0112 7040 sbci r23,hi8(-(SR_Buffer-1)) - 325 .LVL37: - 326 0114 8050 subi r24,lo8(-(number_Font)) - 327 0116 9040 sbci r25,hi8(-(number_Font)) - 328 .LVL38: - 329 0118 FC01 movw r30,r24 - 330 011a 8081 ld r24,Z - 331 .LVL39: - 332 011c FB01 movw r30,r22 - 333 .LVL40: - 334 011e 8083 st Z,r24 - 335 0120 0895 ret - 336 .cfi_endproc - 337 .LFE16: - 339 .global SR_Buffer - 340 .data - 343 SR_Buffer: - 344 0000 E6 .byte -26 - 345 0001 E6 .byte -26 - 346 0002 E6 .byte -26 - 347 0003 E6 .byte -26 - 348 0004 E6 .byte -26 - 349 0005 E6 .byte -26 - 350 .global dot - 351 .section .rodata - 354 dot: - 355 0000 01 .byte 1 - 356 .global minus - 359 minus: - 360 0001 20 .byte 32 - 361 .global blank - 364 blank: - 365 0002 00 .zero 1 - 366 .global character_Font - 369 character_Font: - 370 0003 BE .byte -66 - 371 0004 F4 .byte -12 - 372 0005 E0 .byte -32 - 373 0006 E6 .byte -26 - 374 0007 F8 .byte -8 - 375 0008 B8 .byte -72 - 376 0009 DC .byte -36 - 377 000a B4 .byte -76 - 378 000b 04 .byte 4 - 379 000c 46 .byte 70 - 380 000d BC .byte -68 - 381 000e D0 .byte -48 - 382 000f 9E .byte -98 - 383 0010 A4 .byte -92 - 384 0011 E4 .byte -28 - 385 0012 BA .byte -70 - 386 0013 3E .byte 62 - 387 0014 A0 .byte -96 - 388 0015 7C .byte 124 - 389 0016 F0 .byte -16 - 390 0017 C4 .byte -60 - 391 0018 C4 .byte -60 - 392 0019 D6 .byte -42 - 393 001a B6 .byte -74 - 394 001b 76 .byte 118 - 395 001c E6 .byte -26 - 396 .global number_Font - 399 number_Font: - 400 001d DE .byte -34 - 401 001e 06 .byte 6 - 402 001f EA .byte -22 - 403 0020 6E .byte 110 - 404 0021 36 .byte 54 - 405 0022 7C .byte 124 - 406 0023 FC .byte -4 - 407 0024 0E .byte 14 - 408 0025 FE .byte -2 - 409 0026 7E .byte 126 - 410 .text - 411 .Letext0: - 412 .file 2 "/usr/local/CrossPack-AVR-20131216/avr/include/stdint.h" -DEFINED SYMBOLS - *ABS*:00000000 print.c -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:2 *ABS*:0000003e __SP_H__ -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:3 *ABS*:0000003d __SP_L__ -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:4 *ABS*:0000003f __SREG__ -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:5 *ABS*:0000003b __RAMPZ__ -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:6 *ABS*:00000000 __tmp_reg__ -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:7 *ABS*:00000001 __zero_reg__ -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:13 .text:00000000 clear_SR_Buffer -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:343 .data:00000000 SR_Buffer -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:44 .text:0000001a add_Decimal_Point_to_SR_Buffer -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:67 .text:00000028 print_SR_Buffer -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:107 .text:00000044 add_ASCII_to_SR_Buffer -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:399 .rodata:0000001d number_Font -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:369 .rodata:00000003 character_Font -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:199 .text:000000ae print_String -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:261 .text:000000dc add_Character_to_SR_Buffer -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:313 .text:00000110 add_Number_to_SR_Buffer -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:354 .rodata:00000000 dot -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:359 .rodata:00000001 minus -/var/folders/vp/mj8sv_kj3c1gtbdcbb9v8gb80000gn/T//ccd8mofv.s:364 .rodata:00000002 blank - -UNDEFINED SYMBOLS -__do_copy_data diff --git a/code/build/print.o b/code/build/print.o deleted file mode 100644 index 7b512d42920dbd16cb5d17e9b9b000451b08a739..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6784 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 LSLYG_e2)JCM036f diff --git a/code/build/uart 2.o b/code/build/uart 2.o deleted file mode 100644 index b35dbf2974c1ad72b366eba18602596cf9ab6b41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3680 zcma)9U2GiH6+U-ny;;1@#*P6&eyRbdAwYIF4k2}ZoY*n>YiMJfI112evtEza+jw`a znb|1KOWdlB5*4Jl+Xx|n@=_H6QdOxBedt5o3aWyT@`6wwkP@jNct8S+sxL@&zwgey z>q%*=9_jA+&d)vP%(*`^d-?FwN0d@xNy#Z$l|=rM7WplVyR^eLxmWt+di!lzXul;_ z?<}K`mb&8T1L^== z)KBn}u810-Bx_<@x|7@ex#y@~!=jU@^kI6DjA#Gdo*%$+56!BdwW(R@jw5dB_-X6I z5VK(vh}uL*>Y0tX{#D;td&!77a#kR+&e;ZMN9kI6lm5EQ|1?GQsc+``vuTZ$fUOv=V37&78NnskZ-f-MCb~a{ zVS^HH*YaFj)!T}A2Zk#zT)s)LJ7FZ=YmMNV==20eTCPfFWkaVhraq|karwkYFzzmY z6Ex<$0L4TvOFsf|9yv z@QJ~lgS(663qi5gsLZvdeUVlUz5L10%i{rttBuy4JzjpsPR}!9Ql6?sGc|v18vZl$Yz>ZTs}ey9XPZHk z_ZzKxDD$mImoj;3bmDaBc%v3c3{MB;Mp%bv6L_poSN!#|Td)n4l4d%uJ|m^%gR>`kV2H;cDf4=Hz#0u6&AB75IHS4L z$g6JBm&Zs7;ScLkc?vuVVm@n8;Lnu{k$*9gf?l!0R2WJ@Yp4CGR<%@X%rs%sxI8r# z_!q2%wZF@=j22e?yJyeU8ou@C-C3wKv4PN@WQrN=D(u+*n>={(SftGizSokch&Iwj zjLua6{2nePp40Uh^r4Nt+G=F|h61+NIG`pQZ#yL1wDFq^{J;6};;?f7wclhyVc{Tb z$@(%V=6x7hAK!kqzC*xv4xrqE@DBn*);12=Vw&E@QUBQZkXhTg1g8ECJh(?-$of4G zIa%L_YvX;#`uN7Q^+mvT4xqe?ct0gDWNl5z$#{Q9JocaQur!@`3&5PiyOwkklfGwz zKqln)nc>#&O*D0J7jwq9eQf*`O`C@juRlE)k7u8~OvXElW(3e#O4e?5mRFKCT;xd+@sk;t zFQxag{)Ez=%PV}Y;m)k(l?}jrkHxgSG61m8ipZDmV1nh9J@{SC`tS9i=?QX0f7o?2 zZv3^Dko7lNLgo%xC0DR{66ER?T2;7`>)Z*vKi8wOXTXVhe^NdNz6FDKDdiu4^M2r+ zN!h+bOQloerDLU%Xz+9lCJrCfU}E$;gXHPw?gIN#%SkV79;0KJJYxOuW@(zLTGJ3|R%s8xv z{pH+00G}}W5#Th2GFu-Zv_F{m3C#VgxX7SQ7>r5MYiIP^AydyD4iOtY>!6;`embE) IYxK1L3zadf`Tzg` diff --git a/code/build/uart.lst b/code/build/uart.lst deleted file mode 100644 index f18d1e3..0000000 --- a/code/build/uart.lst +++ /dev/null @@ -1,177 +0,0 @@ - 1 .file "uart.c" - 2 __SP_H__ = 0x3e - 3 __SP_L__ = 0x3d - 4 __SREG__ = 0x3f - 5 __RAMPZ__ = 0x3b - 6 __tmp_reg__ = 0 - 7 __zero_reg__ = 1 - 8 .text - 9 .Ltext0: - 10 .cfi_sections .debug_frame - 11 .global USART_Init - 13 USART_Init: - 14 .LFB0: - 15 .file 1 "src/uart.c" - 1:src/uart.c **** #include - 2:src/uart.c **** #include "uart.h" - 3:src/uart.c **** - 4:src/uart.c **** - 5:src/uart.c **** - 6:src/uart.c **** void USART_Init(unsigned int ubrr) - 7:src/uart.c **** { - 16 .loc 1 7 0 - 17 .cfi_startproc - 18 .LVL0: - 19 /* prologue: function */ - 20 /* frame size = 0 */ - 21 /* stack size = 0 */ - 22 .L__stack_usage = 0 - 8:src/uart.c **** /*Set baud rate */ - 9:src/uart.c **** UBRR0H = ubrr>>8; - 23 .loc 1 9 0 - 24 0000 9093 C500 sts 197,r25 - 10:src/uart.c **** UBRR0L = ubrr; - 25 .loc 1 10 0 - 26 0004 8093 C400 sts 196,r24 - 11:src/uart.c **** /*Enable receiver and transmitter */ - 12:src/uart.c **** UCSR0B = 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 XFGAZStl|PugJ;cOtE+ZvmEwN^NJ6i|