diff --git a/20220531/Makefile b/20220531/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..7ae33df99f68fcf460324cfbb008f3f7a3863638 --- /dev/null +++ b/20220531/Makefile @@ -0,0 +1,8 @@ +%.elf: %.c + avr-gcc -Wall -Os -mmcu=atmega328p $< -o $@ + +%.hex: %.elf + avr-objcopy -O ihex $< $@ + +download: + ./download.sh diff --git a/20220531/blink-01.c b/20220531/blink-01.c new file mode 100644 index 0000000000000000000000000000000000000000..16f34fc9dcbc5aa686b879e0c5cf1d8c10a446ee --- /dev/null +++ b/20220531/blink-01.c @@ -0,0 +1,18 @@ +#include <avr/io.h> + +#define F_CPU 8000000 +#include <util/delay.h> + +int main (void) +{ + DDRB = 0xff; // alle 8 Ausgänge als Outputs verwenden ("pinMode" für alle 8) + PORTB = 0x20; // Bit Nr. 5 auf 1 setzen, alle anderen auf 0 ("digitalWrite" für alle 8) + while (1) + { + _delay_ms (500); + PORTB = 0x00; + _delay_ms (500); + PORTB = 0x20; + } + return 0; +} diff --git a/20220531/blink-01.hex b/20220531/blink-01.hex new file mode 100644 index 0000000000000000000000000000000000000000..c942943a9649ed82ebf4659903f1ef84e8a647f2 --- /dev/null +++ b/20220531/blink-01.hex @@ -0,0 +1,13 @@ +:100000000C9434000C943E000C943E000C943E0082 +:100010000C943E000C943E000C943E000C943E0068 +:100020000C943E000C943E000C943E000C943E0058 +:100030000C943E000C943E000C943E000C943E0048 +:100040000C943E000C943E000C943E000C943E0038 +:100050000C943E000C943E000C943E000C943E0028 +:100060000C943E000C943E0011241FBECFEFD8E04C +:10007000DEBFCDBF0E9440000C9458000C940000DD +:1000800081E080932A008BB92FEF34E39CE021506C +:1000900030409040E1F700C000001BB82FEF34E380 +:1000A0009CE0215030409040E1F700C00000EBCFD1 +:0400B000F894FFCFF2 +:00000001FF diff --git a/20220531/blink-02.c b/20220531/blink-02.c new file mode 100644 index 0000000000000000000000000000000000000000..89d606a31d6be1f192c065e0482c6a087359175c --- /dev/null +++ b/20220531/blink-02.c @@ -0,0 +1,18 @@ +#include <avr/io.h> + +#define F_CPU 8000000 +#include <util/delay.h> + +int main (void) +{ + DDRB = 0xff; // alle 8 Ausgänge als Outputs verwenden ("pinMode" für alle 8) + PORTB = 0x20; // Bit Nr. 5 auf 1 setzen, alle anderen auf 0 ("digitalWrite" für alle 8) + while (1) + { + _delay_ms (500); + PORTB = 0x10; // LED an Ausgang 12 an (Bit Nr. 4), alle anderen aus + _delay_ms (500); + PORTB = 0x20; // LED an Ausgang 13 an (Bit Nr. 5), alle anderen aus + } + return 0; +} diff --git a/20220531/blink-03.c b/20220531/blink-03.c new file mode 100644 index 0000000000000000000000000000000000000000..a7d45c2286f348cf5e7210f3a1f6febf51a0dd7c --- /dev/null +++ b/20220531/blink-03.c @@ -0,0 +1,19 @@ +#include <avr/io.h> + +#define F_CPU 8000000 +#include <util/delay.h> + +int main (void) +{ + DDRB = 0xff; // alle 8 Ausgänge als Outputs verwenden ("pinMode" für alle 8) + while (1) + { + PORTB = 0x10; // LED an Ausgang 12 an (Bit Nr. 4), alle anderen aus + _delay_ms (500); + PORTB = 0x20; // LED an Ausgang 13 an (Bit Nr. 5), alle anderen aus + _delay_ms (500); + PORTB = 0x08; // LED an Ausgang 11 an (Bit Nr. 3), alle anderen aus + _delay_ms (500); + } + return 0; +} diff --git a/20220531/blink-04.c b/20220531/blink-04.c new file mode 100644 index 0000000000000000000000000000000000000000..c9d517480e8e98f02d6b14ea3792a6c39e5c0df1 --- /dev/null +++ b/20220531/blink-04.c @@ -0,0 +1,21 @@ +#include <avr/io.h> + +#define F_CPU 8000000 +#include <util/delay.h> + +int main (void) +{ + DDRB = 0xff; // alle 8 Ausgänge als Outputs verwenden ("pinMode" für alle 8) + while (1) + { + PORTB = 0x10; // LED an Ausgang 12 an (Bit Nr. 4), alle anderen aus + _delay_ms (500); + PORTB = 0x20; // LED an Ausgang 13 an (Bit Nr. 5), alle anderen aus + _delay_ms (500); + PORTB = 0x08; // LED an Ausgang 11 an (Bit Nr. 3), alle anderen aus + _delay_ms (500); + PORTB = 0x34; // LEDs an Ausgang 11, 12 und 13 an (Bit Nr. 3, 4 und 5), alle anderen aus + _delay_ms (500); + } + return 0; +} diff --git a/20220531/blink-05.c b/20220531/blink-05.c new file mode 100644 index 0000000000000000000000000000000000000000..5395aa5f7865651b74bb6c9594185d8239a32530 --- /dev/null +++ b/20220531/blink-05.c @@ -0,0 +1,21 @@ +#include <avr/io.h> + +#define F_CPU 8000000 +#include <util/delay.h> + +int main (void) +{ + DDRB = 0xff; // alle 8 Ausgänge als Outputs verwenden ("pinMode" für alle 8) + while (1) + { + PORTB = 0x10; // rote LED an Ausgang 12 an (Bit Nr. 4), alle anderen aus + _delay_ms (500); + PORTB = 0x20; // interne gelbe LED an Ausgang 13 an (Bit Nr. 5), alle anderen aus + _delay_ms (500); + PORTB = 0x08; // grüne LED an Ausgang 11 an (Bit Nr. 3), alle anderen aus + _delay_ms (500); + PORTB = 0x38; // LEDs an Ausgang 11, 12 und 13 an (Bit Nr. 3, 4 und 5), alle anderen aus + _delay_ms (500); + } + return 0; +} diff --git a/20220531/blink-06.c b/20220531/blink-06.c new file mode 100644 index 0000000000000000000000000000000000000000..d78fef9e17a69e7bfb24c6599825775160bfb57a --- /dev/null +++ b/20220531/blink-06.c @@ -0,0 +1,23 @@ +#include <avr/io.h> + +#define F_CPU 8000000 +#include <util/delay.h> + +int main (void) +{ + DDRB = 0xff; // alle 8 Ausgänge als Outputs verwenden ("pinMode" für alle 8) + while (1) + { + PORTB = 0x10; // rote LED an Ausgang 12 an (Bit Nr. 4), alle anderen aus + _delay_ms (500); + PORTB = 0x20; // interne gelbe LED an Ausgang 13 an (Bit Nr. 5), alle anderen aus + _delay_ms (500); + PORTB = 0x08; // grüne LED an Ausgang 11 an (Bit Nr. 3), alle anderen aus + _delay_ms (500); + PORTB = 0x38; // LEDs an Ausgang 11, 12 und 13 an (Bit Nr. 3, 4 und 5), alle anderen aus + _delay_ms (500); + PORTB = 0x00; // alle LEDs aus + _delay_ms (500); + } + return 0; +} diff --git a/20220531/blink-07.c b/20220531/blink-07.c new file mode 100644 index 0000000000000000000000000000000000000000..b690476db4d29837fb8846b65388b6fd046886a5 --- /dev/null +++ b/20220531/blink-07.c @@ -0,0 +1,24 @@ +#include <avr/io.h> + +#define F_CPU 8000000 +#include <util/delay.h> + +int main (void) +{ + DDRB = 0xff; // alle 8 Ausgänge als Outputs verwenden ("pinMode" für alle 8) + while (1) + { + PORTB = 0x00; // alle LEDs aus + _delay_ms (500); + // rote LED (Ausgang 12, Bit Nr. 4) einschalten + PORTB |= 0x10; // Oder-Verknüpfung mit Maske: 0001 0000 = 0x10 + _delay_ms (500); + // interne gelbe LED (Ausgang 13, Bit Nr. 5) einschalten + PORTB |= 0x20; // Maske: 0010 0000 = 0x20 + _delay_ms (500); + // grüne LED (Ausgang 11, Bit Nr. 3) einschalten + PORTB |= 0x08; // Maske: 0000 1000 = 0x08 + _delay_ms (500); // digitalWrite (11, HIGH); + } + return 0; +} diff --git a/20220531/blink-08.c b/20220531/blink-08.c new file mode 100644 index 0000000000000000000000000000000000000000..4e7b2d693649596fa399edb5b0a182055651b548 --- /dev/null +++ b/20220531/blink-08.c @@ -0,0 +1,34 @@ +#include <avr/io.h> + +#define F_CPU 8000000 +#include <util/delay.h> + +int main (void) +{ + DDRB = 0xff; // alle 8 Ausgänge als Outputs verwenden ("pinMode" für alle 8) + while (1) + { + PORTB = 0x00; // alle LEDs aus + _delay_ms (500); + // rote LED (Ausgang 12, Bit Nr. 4) einschalten + PORTB |= 0x10; // Oder-Verknüpfung mit Maske: 0001 0000 = 0x10 + _delay_ms (500); + // interne gelbe LED (Ausgang 13, Bit Nr. 5) einschalten + PORTB |= 0x20; // Maske: 0010 0000 = 0x20 + _delay_ms (500); + // grüne LED (Ausgang 11, Bit Nr. 3) einschalten + PORTB |= 0x08; // Maske: 0000 1000 = 0x08 + _delay_ms (500); // digitalWrite (11, HIGH); + + // rote LED (Ausgang 12, Bit Nr. 4) ausschalten + PORTB &= 0xef; // Oder-Verknüpfung mit Maske: 1110 1111 = 0xef + _delay_ms (500); + // interne gelbe LED (Ausgang 13, Bit Nr. 5) ausschalten + PORTB &= 0xdf; // Maske: 1101 1111 = 0xdf + _delay_ms (500); + // grüne LED (Ausgang 11, Bit Nr. 3) ausschalten + PORTB &= 0xf7; // Maske: 1111 0111 = 0xf7 + _delay_ms (500); // digitalWrite (11, HIGH); + } + return 0; +} diff --git a/20220531/blink-asm-01.S b/20220531/blink-asm-01.S new file mode 100644 index 0000000000000000000000000000000000000000..c05515ff90129ffed09b1281786045b31d951476 --- /dev/null +++ b/20220531/blink-asm-01.S @@ -0,0 +1,40 @@ + .file "blink.c" +__SP_H__ = 0x3e +__SP_L__ = 0x3d +__SREG__ = 0x3f +__tmp_reg__ = 0 +__zero_reg__ = 1 + .section .text.startup,"ax",@progbits +.global pruzzel + .type pruzzel, @function +pruzzel: +/* prologue: function */ +/* frame size = 0 */ +/* stack size = 0 */ +.L__stack_usage = 0 + ldi r24,lo8(1) + out 0xa,r24 +.L3: + out 0xb,r24 + ldi r18,lo8(799999) + ldi r19,hi8(799999) + ldi r25,hlo8(799999) +1: subi r18,1 + sbci r19,0 + sbci r25,0 + brne 1b + rjmp . + nop + out 0xb,__zero_reg__ + ldi r18,lo8(799999) + ldi r19,hi8(799999) + ldi r25,hlo8(799999) +1: subi r18,1 + sbci r19,0 + sbci r25,0 + brne 1b + rjmp . + nop + rjmp .L3 + .size pruzzel, .-pruzzel + .ident "GCC: (GNU) 5.4.0" diff --git a/20220531/blink-asm-01.ino b/20220531/blink-asm-01.ino new file mode 100644 index 0000000000000000000000000000000000000000..7143e9c74e9a55a171d14de7123aa22deabd2019 --- /dev/null +++ b/20220531/blink-asm-01.ino @@ -0,0 +1,11 @@ +extern "C" { extern void pruzzel (); } + +void setup () +{ + pruzzel (); +} + +void loop () +{ + /* empty */ +} diff --git a/20220531/blink.c b/20220531/blink.c new file mode 100644 index 0000000000000000000000000000000000000000..3970768da6772da0ccf8cbeaccbae49c200458f0 --- /dev/null +++ b/20220531/blink.c @@ -0,0 +1,18 @@ +#include <avr/io.h> + +#define F_CPU 8000000 +#include <util/delay.h> + +int main (void) +{ + DDRD = 0x01; + PORTD = 0x01; + while (1) + { + _delay_ms (500); + PORTD = 0x00; + _delay_ms (500); + PORTD = 0x01; + } + return 0; +} diff --git a/20220531/blink.hex b/20220531/blink.hex new file mode 100644 index 0000000000000000000000000000000000000000..249b3aa15f72dc6a4f28f532fba154f486af5547 --- /dev/null +++ b/20220531/blink.hex @@ -0,0 +1,13 @@ +:100000000C9434000C943E000C943E000C943E0082 +:100010000C943E000C943E000C943E000C943E0068 +:100020000C943E000C943E000C943E000C943E0058 +:100030000C943E000C943E000C943E000C943E0048 +:100040000C943E000C943E000C943E000C943E0038 +:100050000C943E000C943E000C943E000C943E0028 +:100060000C943E000C943E0011241FBECFEFD8E04C +:10007000DEBFCDBF0E9440000C9457000C940000DE +:1000800081E08AB98BB92FEF34E39CE021503040F6 +:100090009040E1F700C000001BB82FEF34E39CE074 +:1000A000215030409040E1F700C00000EBCFF894C1 +:0200B000FFCF80 +:00000001FF diff --git a/20220531/blink.s0 b/20220531/blink.s0 new file mode 100644 index 0000000000000000000000000000000000000000..6081056bb30dbeb04b343b924e83489b7a670e0f --- /dev/null +++ b/20220531/blink.s0 @@ -0,0 +1,495 @@ + .file "blink.c" +__SP_H__ = 0x3e +__SP_L__ = 0x3d +__SREG__ = 0x3f +__tmp_reg__ = 0 +__zero_reg__ = 1 + .stabs "/home/peter/bo/2022ss/rtech/20220531/",100,0,2,.Ltext0 + .stabs "blink.c",100,0,2,.Ltext0 + .text +.Ltext0: + .stabs "gcc2_compiled.",60,0,0,0 + .stabs "int:t(0,1)=r(0,1);-32768;32767;",128,0,0,0 + .stabs "char:t(0,2)=r(0,2);0;127;",128,0,0,0 + .stabs "long int:t(0,3)=@s32;r(0,3);020000000000;017777777777;",128,0,0,0 + .stabs "unsigned int:t(0,4)=r(0,4);0;0177777;",128,0,0,0 + .stabs "long unsigned int:t(0,5)=@s32;r(0,5);0;037777777777;",128,0,0,0 + .stabs "__int128:t(0,6)=@s128;r(0,6);02000000000000000000000000000000000000000000;01777777777777777777777777777777777777777777;",128,0,0,0 + .stabs "__int128 unsigned:t(0,7)=@s128;r(0,7);0;03777777777777777777777777777777777777777777;",128,0,0,0 + .stabs "long long int:t(0,8)=@s64;r(0,8);01000000000000000000000;00777777777777777777777;",128,0,0,0 + .stabs "long long unsigned int:t(0,9)=@s64;r(0,9);0;01777777777777777777777;",128,0,0,0 + .stabs "short int:t(0,10)=r(0,10);-32768;32767;",128,0,0,0 + .stabs "short unsigned int:t(0,11)=r(0,11);0;0177777;",128,0,0,0 + .stabs "signed char:t(0,12)=@s8;r(0,12);-128;127;",128,0,0,0 + .stabs "unsigned char:t(0,13)=@s8;r(0,13);0;255;",128,0,0,0 + .stabs "float:t(0,14)=r(0,1);4;0;",128,0,0,0 + .stabs "double:t(0,15)=r(0,1);4;0;",128,0,0,0 + .stabs "long double:t(0,16)=r(0,1);4;0;",128,0,0,0 + .stabs "short _Fract:t(0,17)=r(0,1);1;0;",128,0,0,0 + .stabs "_Fract:t(0,18)=r(0,1);2;0;",128,0,0,0 + .stabs "long _Fract:t(0,19)=r(0,1);4;0;",128,0,0,0 + .stabs "long long _Fract:t(0,20)=r(0,1);8;0;",128,0,0,0 + .stabs "unsigned short _Fract:t(0,21)=r(0,1);1;0;",128,0,0,0 + .stabs "unsigned _Fract:t(0,22)=r(0,1);2;0;",128,0,0,0 + .stabs "unsigned long _Fract:t(0,23)=r(0,1);4;0;",128,0,0,0 + .stabs "unsigned long long _Fract:t(0,24)=r(0,1);8;0;",128,0,0,0 + .stabs "_Sat short _Fract:t(0,25)=r(0,1);1;0;",128,0,0,0 + .stabs "_Sat _Fract:t(0,26)=r(0,1);2;0;",128,0,0,0 + .stabs "_Sat long _Fract:t(0,27)=r(0,1);4;0;",128,0,0,0 + .stabs "_Sat long long _Fract:t(0,28)=r(0,1);8;0;",128,0,0,0 + .stabs "_Sat unsigned short _Fract:t(0,29)=r(0,1);1;0;",128,0,0,0 + .stabs "_Sat unsigned _Fract:t(0,30)=r(0,1);2;0;",128,0,0,0 + .stabs "_Sat unsigned long _Fract:t(0,31)=r(0,1);4;0;",128,0,0,0 + .stabs "_Sat unsigned long long _Fract:t(0,32)=r(0,1);8;0;",128,0,0,0 + .stabs "short _Accum:t(0,33)=r(0,1);2;0;",128,0,0,0 + .stabs "_Accum:t(0,34)=r(0,1);4;0;",128,0,0,0 + .stabs "long _Accum:t(0,35)=r(0,1);8;0;",128,0,0,0 + .stabs "long long _Accum:t(0,36)=r(0,1);8;0;",128,0,0,0 + .stabs "unsigned short _Accum:t(0,37)=r(0,1);2;0;",128,0,0,0 + .stabs "unsigned _Accum:t(0,38)=r(0,1);4;0;",128,0,0,0 + .stabs "unsigned long _Accum:t(0,39)=r(0,1);8;0;",128,0,0,0 + .stabs "unsigned long long _Accum:t(0,40)=r(0,1);8;0;",128,0,0,0 + .stabs "_Sat short _Accum:t(0,41)=r(0,1);2;0;",128,0,0,0 + .stabs "_Sat _Accum:t(0,42)=r(0,1);4;0;",128,0,0,0 + .stabs "_Sat long _Accum:t(0,43)=r(0,1);8;0;",128,0,0,0 + .stabs "_Sat long long _Accum:t(0,44)=r(0,1);8;0;",128,0,0,0 + .stabs "_Sat unsigned short _Accum:t(0,45)=r(0,1);2;0;",128,0,0,0 + .stabs "_Sat unsigned _Accum:t(0,46)=r(0,1);4;0;",128,0,0,0 + .stabs "_Sat unsigned long _Accum:t(0,47)=r(0,1);8;0;",128,0,0,0 + .stabs "_Sat unsigned long long _Accum:t(0,48)=r(0,1);8;0;",128,0,0,0 + .stabs "void:t(0,49)=(0,49)",128,0,0,0 + .stabs "/usr/lib/avr/include/avr/io.h",130,0,0,0 + .stabs "/usr/lib/avr/include/avr/sfr_defs.h",130,0,0,0 + .stabs "/usr/lib/avr/include/inttypes.h",130,0,0,0 + .stabs "/usr/lib/gcc/avr/5.4.0/include/stdint.h",130,0,0,0 + .stabs "/usr/lib/avr/include/stdint.h",130,0,0,0 + .stabs "int8_t:t(5,1)=(0,12)",128,0,125,0 + .stabs "uint8_t:t(5,2)=(0,13)",128,0,126,0 + .stabs "int16_t:t(5,3)=(0,1)",128,0,127,0 + .stabs "uint16_t:t(5,4)=(0,4)",128,0,128,0 + .stabs "int32_t:t(5,5)=(0,3)",128,0,129,0 + .stabs "uint32_t:t(5,6)=(0,5)",128,0,130,0 + .stabs "int64_t:t(5,7)=(0,8)",128,0,132,0 + .stabs "uint64_t:t(5,8)=(0,9)",128,0,133,0 + .stabs "intptr_t:t(5,9)=(5,3)",128,0,146,0 + .stabs "uintptr_t:t(5,10)=(5,4)",128,0,151,0 + .stabs "int_least8_t:t(5,11)=(5,1)",128,0,163,0 + .stabs "uint_least8_t:t(5,12)=(5,2)",128,0,168,0 + .stabs "int_least16_t:t(5,13)=(5,3)",128,0,173,0 + .stabs "uint_least16_t:t(5,14)=(5,4)",128,0,178,0 + .stabs "int_least32_t:t(5,15)=(5,5)",128,0,183,0 + .stabs "uint_least32_t:t(5,16)=(5,6)",128,0,188,0 + .stabs "int_least64_t:t(5,17)=(5,7)",128,0,196,0 + .stabs "uint_least64_t:t(5,18)=(5,8)",128,0,203,0 + .stabs "int_fast8_t:t(5,19)=(5,1)",128,0,217,0 + .stabs "uint_fast8_t:t(5,20)=(5,2)",128,0,222,0 + .stabs "int_fast16_t:t(5,21)=(5,3)",128,0,227,0 + .stabs "uint_fast16_t:t(5,22)=(5,4)",128,0,232,0 + .stabs "int_fast32_t:t(5,23)=(5,5)",128,0,237,0 + .stabs "uint_fast32_t:t(5,24)=(5,6)",128,0,242,0 + .stabs "int_fast64_t:t(5,25)=(5,7)",128,0,250,0 + .stabs "uint_fast64_t:t(5,26)=(5,8)",128,0,257,0 + .stabs "intmax_t:t(5,27)=(5,7)",128,0,277,0 + .stabs "uintmax_t:t(5,28)=(5,8)",128,0,282,0 + .stabn 162,0,0,0 + .stabn 162,0,0,0 + .stabs "int_farptr_t:t(3,1)=(5,5)",128,0,77,0 + .stabs "uint_farptr_t:t(3,2)=(5,6)",128,0,81,0 + .stabn 162,0,0,0 + .stabn 162,0,0,0 + .stabs "/usr/lib/avr/include/avr/fuse.h",130,0,0,0 + .stabs "__fuse_t:t(6,1)=(6,2)=s3low:(0,13),0,8;high:(0,13),8,8;extended:(0,13),16,8;;",128,0,244,0 + .stabn 162,0,0,0 + .stabn 162,0,0,0 +.global __mulsf3 +.global __ltsf2 +.global __gtsf2 +.global __fixunssfsi + .stabs "main:F(0,1)",36,0,6,main +.global main + .type main, @function +main: + .stabd 46,0,0 + .stabn 68,0,7,.LM0-.LFBB1 +.LM0: +.LFBB1: + push r28 + push r29 + in r28,__SP_L__ + in r29,__SP_H__ + sbiw r28,28 + in __tmp_reg__,__SREG__ + cli + out __SP_H__,r29 + out __SREG__,__tmp_reg__ + out __SP_L__,r28 +/* prologue: function */ +/* frame size = 28 */ +/* stack size = 30 */ +.L__stack_usage = 30 + .stabn 68,0,8,.LM1-.LFBB1 +.LM1: + ldi r24,lo8(42) + ldi r25,0 + ldi r18,lo8(1) + movw r30,r24 + st Z,r18 + .stabn 68,0,9,.LM2-.LFBB1 +.LM2: + ldi r24,lo8(43) + ldi r25,0 + ldi r18,lo8(1) + movw r30,r24 + st Z,r18 +.L18: + ldi r24,0 + ldi r25,0 + ldi r26,lo8(-6) + ldi r27,lo8(67) + std Y+1,r24 + std Y+2,r25 + std Y+3,r26 + std Y+4,r27 +.LBB18: +.LBB19: + .stabs "/usr/lib/avr/include/util/delay.h",132,0,0,.Ltext1 +.Ltext1: + .stabn 68,0,191,.LM3-.LFBB1 +.LM3: + ldi r18,0 + ldi r19,0 + ldi r20,lo8(-6) + ldi r21,lo8(68) + ldd r22,Y+1 + ldd r23,Y+2 + ldd r24,Y+3 + ldd r25,Y+4 + call __mulsf3 + movw r26,r24 + movw r24,r22 + std Y+19,r24 + std Y+20,r25 + std Y+21,r26 + std Y+22,r27 + .stabn 68,0,192,.LM4-.LFBB1 +.LM4: + ldi r18,0 + ldi r19,0 + ldi r20,lo8(-128) + ldi r21,lo8(63) + ldd r22,Y+19 + ldd r23,Y+20 + ldd r24,Y+21 + ldd r25,Y+22 + call __ltsf2 + tst r24 + brge .L23 + .stabn 68,0,193,.LM5-.LFBB1 +.LM5: + ldi r24,lo8(1) + ldi r25,0 + std Y+24,r25 + std Y+23,r24 + rjmp .L4 +.L23: + .stabn 68,0,194,.LM6-.LFBB1 +.LM6: + ldi r18,0 + ldi r19,lo8(-1) + ldi r20,lo8(127) + ldi r21,lo8(71) + ldd r22,Y+19 + ldd r23,Y+20 + ldd r24,Y+21 + ldd r25,Y+22 + call __gtsf2 + cp __zero_reg__,r24 + brge .L24 + .stabn 68,0,197,.LM7-.LFBB1 +.LM7: + ldi r18,0 + ldi r19,0 + ldi r20,lo8(32) + ldi r21,lo8(65) + ldd r22,Y+1 + ldd r23,Y+2 + ldd r24,Y+3 + ldd r25,Y+4 + call __mulsf3 + movw r26,r24 + movw r24,r22 + movw r22,r24 + movw r24,r26 + call __fixunssfsi + movw r26,r24 + movw r24,r22 + std Y+24,r25 + std Y+23,r24 + rjmp .L7 +.L8: + ldi r24,lo8(-56) + ldi r25,0 + std Y+26,r25 + std Y+25,r24 +.LBB20: +.LBB21: + .stabs "/usr/lib/avr/include/util/delay_basic.h",132,0,0,.Ltext2 +.Ltext2: + .stabn 68,0,105,.LM8-.LFBB1 +.LM8: + ldd r24,Y+25 + ldd r25,Y+26 +/* #APP */ + ; 105 "/usr/lib/avr/include/util/delay_basic.h" 1 + 1: sbiw r24,1 + brne 1b + ; 0 "" 2 +/* #NOAPP */ + std Y+26,r25 + std Y+25,r24 +.LBE21: +.LBE20: + .stabs "/usr/lib/avr/include/util/delay.h",132,0,0,.Ltext3 +.Ltext3: + .stabn 68,0,202,.LM9-.LFBB1 +.LM9: + ldd r24,Y+23 + ldd r25,Y+24 + sbiw r24,1 + std Y+24,r25 + std Y+23,r24 +.L7: + .stabn 68,0,198,.LM10-.LFBB1 +.LM10: + ldd r24,Y+23 + ldd r25,Y+24 + or r24,r25 + brne .L8 + rjmp .L9 +.L24: + .stabn 68,0,207,.LM11-.LFBB1 +.LM11: + ldd r22,Y+19 + ldd r23,Y+20 + ldd r24,Y+21 + ldd r25,Y+22 + call __fixunssfsi + movw r26,r24 + movw r24,r22 + std Y+24,r25 + std Y+23,r24 +.L4: + ldd r24,Y+23 + ldd r25,Y+24 + std Y+28,r25 + std Y+27,r24 +.LBB22: +.LBB23: + .stabs "/usr/lib/avr/include/util/delay_basic.h",132,0,0,.Ltext4 +.Ltext4: + .stabn 68,0,105,.LM12-.LFBB1 +.LM12: + ldd r24,Y+27 + ldd r25,Y+28 +/* #APP */ + ; 105 "/usr/lib/avr/include/util/delay_basic.h" 1 + 1: sbiw r24,1 + brne 1b + ; 0 "" 2 +/* #NOAPP */ + std Y+28,r25 + std Y+27,r24 +.L9: +.LBE23: +.LBE22: +.LBE19: +.LBE18: + .stabs "blink.c",132,0,0,.Ltext5 +.Ltext5: + .stabn 68,0,13,.LM13-.LFBB1 +.LM13: + ldi r24,lo8(43) + ldi r25,0 + movw r30,r24 + st Z,__zero_reg__ + ldi r24,0 + ldi r25,0 + ldi r26,lo8(-6) + ldi r27,lo8(67) + std Y+5,r24 + std Y+6,r25 + std Y+7,r26 + std Y+8,r27 +.LBB24: +.LBB25: + .stabs "/usr/lib/avr/include/util/delay.h",132,0,0,.Ltext6 +.Ltext6: + .stabn 68,0,191,.LM14-.LFBB1 +.LM14: + ldi r18,0 + ldi r19,0 + ldi r20,lo8(-6) + ldi r21,lo8(68) + ldd r22,Y+5 + ldd r23,Y+6 + ldd r24,Y+7 + ldd r25,Y+8 + call __mulsf3 + movw r26,r24 + movw r24,r22 + std Y+9,r24 + std Y+10,r25 + std Y+11,r26 + std Y+12,r27 + .stabn 68,0,192,.LM15-.LFBB1 +.LM15: + ldi r18,0 + ldi r19,0 + ldi r20,lo8(-128) + ldi r21,lo8(63) + ldd r22,Y+9 + ldd r23,Y+10 + ldd r24,Y+11 + ldd r25,Y+12 + call __ltsf2 + tst r24 + brge .L25 + .stabn 68,0,193,.LM16-.LFBB1 +.LM16: + ldi r24,lo8(1) + ldi r25,0 + std Y+14,r25 + std Y+13,r24 + rjmp .L12 +.L25: + .stabn 68,0,194,.LM17-.LFBB1 +.LM17: + ldi r18,0 + ldi r19,lo8(-1) + ldi r20,lo8(127) + ldi r21,lo8(71) + ldd r22,Y+9 + ldd r23,Y+10 + ldd r24,Y+11 + ldd r25,Y+12 + call __gtsf2 + cp __zero_reg__,r24 + brge .L26 + .stabn 68,0,197,.LM18-.LFBB1 +.LM18: + ldi r18,0 + ldi r19,0 + ldi r20,lo8(32) + ldi r21,lo8(65) + ldd r22,Y+5 + ldd r23,Y+6 + ldd r24,Y+7 + ldd r25,Y+8 + call __mulsf3 + movw r26,r24 + movw r24,r22 + movw r22,r24 + movw r24,r26 + call __fixunssfsi + movw r26,r24 + movw r24,r22 + std Y+14,r25 + std Y+13,r24 + rjmp .L15 +.L16: + ldi r24,lo8(-56) + ldi r25,0 + std Y+16,r25 + std Y+15,r24 +.LBB26: +.LBB27: + .stabs "/usr/lib/avr/include/util/delay_basic.h",132,0,0,.Ltext7 +.Ltext7: + .stabn 68,0,105,.LM19-.LFBB1 +.LM19: + ldd r24,Y+15 + ldd r25,Y+16 +/* #APP */ + ; 105 "/usr/lib/avr/include/util/delay_basic.h" 1 + 1: sbiw r24,1 + brne 1b + ; 0 "" 2 +/* #NOAPP */ + std Y+16,r25 + std Y+15,r24 +.LBE27: +.LBE26: + .stabs "/usr/lib/avr/include/util/delay.h",132,0,0,.Ltext8 +.Ltext8: + .stabn 68,0,202,.LM20-.LFBB1 +.LM20: + ldd r24,Y+13 + ldd r25,Y+14 + sbiw r24,1 + std Y+14,r25 + std Y+13,r24 +.L15: + .stabn 68,0,198,.LM21-.LFBB1 +.LM21: + ldd r24,Y+13 + ldd r25,Y+14 + or r24,r25 + brne .L16 + rjmp .L17 +.L26: + .stabn 68,0,207,.LM22-.LFBB1 +.LM22: + ldd r22,Y+9 + ldd r23,Y+10 + ldd r24,Y+11 + ldd r25,Y+12 + call __fixunssfsi + movw r26,r24 + movw r24,r22 + std Y+14,r25 + std Y+13,r24 +.L12: + ldd r24,Y+13 + ldd r25,Y+14 + std Y+18,r25 + std Y+17,r24 +.LBB28: +.LBB29: + .stabs "/usr/lib/avr/include/util/delay_basic.h",132,0,0,.Ltext9 +.Ltext9: + .stabn 68,0,105,.LM23-.LFBB1 +.LM23: + ldd r24,Y+17 + ldd r25,Y+18 +/* #APP */ + ; 105 "/usr/lib/avr/include/util/delay_basic.h" 1 + 1: sbiw r24,1 + brne 1b + ; 0 "" 2 +/* #NOAPP */ + std Y+18,r25 + std Y+17,r24 +.L17: +.LBE29: +.LBE28: +.LBE25: +.LBE24: + .stabs "blink.c",132,0,0,.Ltext10 +.Ltext10: + .stabn 68,0,15,.LM24-.LFBB1 +.LM24: + ldi r24,lo8(43) + ldi r25,0 + ldi r18,lo8(1) + movw r30,r24 + st Z,r18 + .stabn 68,0,16,.LM25-.LFBB1 +.LM25: + rjmp .L18 + .size main, .-main +.Lscope1: + .stabs "",36,0,0,.Lscope1-.LFBB1 + .stabd 78,0,0 + .stabs "",100,0,0,.Letext0 +.Letext0: + .ident "GCC: (GNU) 5.4.0" diff --git a/20220531/blink.ss b/20220531/blink.ss new file mode 100644 index 0000000000000000000000000000000000000000..69d0101cf145b2483cacd58405d5e84cc437134b --- /dev/null +++ b/20220531/blink.ss @@ -0,0 +1,40 @@ + .file "blink.c" +__SP_H__ = 0x3e +__SP_L__ = 0x3d +__SREG__ = 0x3f +__tmp_reg__ = 0 +__zero_reg__ = 1 + .section .text.startup,"ax",@progbits +.global main + .type main, @function +main: +/* prologue: function */ +/* frame size = 0 */ +/* stack size = 0 */ +.L__stack_usage = 0 + ldi r24,lo8(1) + out 0xa,r24 +.L3: + out 0xb,r24 + ldi r18,lo8(799999) + ldi r19,hi8(799999) + ldi r25,hlo8(799999) +1: subi r18,1 + sbci r19,0 + sbci r25,0 + brne 1b + rjmp . + nop + out 0xb,__zero_reg__ + ldi r18,lo8(799999) + ldi r19,hi8(799999) + ldi r25,hlo8(799999) +1: subi r18,1 + sbci r19,0 + sbci r25,0 + brne 1b + rjmp . + nop + rjmp .L3 + .size main, .-main + .ident "GCC: (GNU) 5.4.0" diff --git a/20220531/download.sh b/20220531/download.sh new file mode 100755 index 0000000000000000000000000000000000000000..770c3b5dca74ac09778be055c9d6f5adb0df293b --- /dev/null +++ b/20220531/download.sh @@ -0,0 +1,3 @@ +port=$(ls -rt /dev/ttyACM* | tail -1) +echo avrdude -P $port -c arduino -p m328p -U flash:w:$(ls -rt *.hex | tail -1) +avrdude -P $port -c arduino -p m328p -U flash:w:$(ls -rt *.hex | tail -1) 2>/dev/null diff --git a/20220531/rtech-20220531.txt b/20220531/rtech-20220531.txt new file mode 100644 index 0000000000000000000000000000000000000000..c1288d395115ac5d82f875897edbf792efccb736 --- /dev/null +++ b/20220531/rtech-20220531.txt @@ -0,0 +1,4 @@ +Aus dem Datenblatt des ATMega 328P, Seite 615, erfahren wir: + + Die Variable DDRD liegt an Speicherzelle 0x2a. + Die Variable PORTD liegt an Speicherzelle 0x2b. diff --git a/20220531/variables-00.c b/20220531/variables-00.c new file mode 100644 index 0000000000000000000000000000000000000000..75aed61bc741c075328db2fb6cd607868c2b2e50 --- /dev/null +++ b/20220531/variables-00.c @@ -0,0 +1,9 @@ +#include <stdint.h> + +uint8_t x = 3; + +int main (void) +{ + x = 7; + return 0; +} diff --git a/20220531/variables-00.s b/20220531/variables-00.s new file mode 100644 index 0000000000000000000000000000000000000000..72ee0f4e5ef30630867cb765f6a103a4be737146 --- /dev/null +++ b/20220531/variables-00.s @@ -0,0 +1,28 @@ + .file "variables-00.c" +__SP_H__ = 0x3e +__SP_L__ = 0x3d +__SREG__ = 0x3f +__tmp_reg__ = 0 +__zero_reg__ = 1 + .section .text.startup,"ax",@progbits +.global main + .type main, @function +main: +/* prologue: function */ +/* frame size = 0 */ +/* stack size = 0 */ +.L__stack_usage = 0 + ldi r24,lo8(7) ; #include <stdint.h> + sts x,r24 ; + ldi r24,0 ; uint8_t x = 3; + ldi r25,0 ; + ret ; int main (void) + .size main, .-main ; { +.global x ; x = 7; + .data ; return 0; + .type x, @object ; } + .size x, 1 +x: + .byte 3 + .ident "GCC: (GNU) 5.4.0" +.global __do_copy_data diff --git a/20220531/variables-01.c b/20220531/variables-01.c new file mode 100644 index 0000000000000000000000000000000000000000..e8cdc4ecedbcc164f2f6f2f4983c80728a33efb4 --- /dev/null +++ b/20220531/variables-01.c @@ -0,0 +1,9 @@ +#include <stdint.h> + +uint8_t x = 3; + +int main (void) +{ + x = 7; + return 1; +} diff --git a/20220531/variables-01.s b/20220531/variables-01.s new file mode 100644 index 0000000000000000000000000000000000000000..d1b522d016898e9578ae33848302b1b91f84e7d4 --- /dev/null +++ b/20220531/variables-01.s @@ -0,0 +1,28 @@ + .file "variables-01.c" +__SP_H__ = 0x3e +__SP_L__ = 0x3d +__SREG__ = 0x3f +__tmp_reg__ = 0 +__zero_reg__ = 1 + .section .text.startup,"ax",@progbits +.global main + .type main, @function +main: +/* prologue: function */ +/* frame size = 0 */ +/* stack size = 0 */ +.L__stack_usage = 0 ; #include <stdint.h> + ldi r24,lo8(7) ; + sts x,r24 ; uint8_t x = 3; + ldi r24,lo8(1) ; + ldi r25,0 ; int main (void) + ret ; { + .size main, .-main ; x = 7; +.global x ; return 1; + .data ; } + .type x, @object + .size x, 1 +x: + .byte 3 + .ident "GCC: (GNU) 5.4.0" +.global __do_copy_data diff --git a/20220531/variables-02.c b/20220531/variables-02.c new file mode 100644 index 0000000000000000000000000000000000000000..7d536c93c646bec30aa1158d565e47e330effa2b --- /dev/null +++ b/20220531/variables-02.c @@ -0,0 +1,9 @@ +#include <stdint.h> + +uint8_t x = 3; + +int main (void) +{ + x = 7; + return 1117; +} diff --git a/20220531/variables-02.s b/20220531/variables-02.s new file mode 100644 index 0000000000000000000000000000000000000000..6815502b2762cf6f982a4705a999955fbaa4045c --- /dev/null +++ b/20220531/variables-02.s @@ -0,0 +1,29 @@ + .file "variables-02.c" +__SP_H__ = 0x3e +__SP_L__ = 0x3d +__SREG__ = 0x3f +__tmp_reg__ = 0 +__zero_reg__ = 1 + .section .text.startup,"ax",@progbits +.global main + .type main, @function +main: +/* prologue: function */ +/* frame size = 0 */ +/* stack size = 0 */ +.L__stack_usage = 0 ; #include <stdint.h> + ldi r24,lo8(7) ; + sts x,r24 ; uint8_t x = 3; + ldi r24,lo8(93) ; + ldi r25,lo8(4) ; int main (void) + ret ; { + .size main, .-main ; x = 7; +.global x ; return 1117; + .data ; } + .type x, @object + .size x, 1 +x: + .byte 3 ; 4 * 256 + 93 = 1117 + .ident "GCC: (GNU) 5.4.0" ; daher: 4 nach r25, 93 nach r24 +.global __do_copy_data +