diff --git a/20231102/inttypes-03.txt b/20231102/inttypes-03.txt
new file mode 100644
index 0000000000000000000000000000000000000000..1e5fbae5ad7906da2ca56da10c0e0c98078defbe
--- /dev/null
+++ b/20231102/inttypes-03.txt
@@ -0,0 +1,21 @@
+2^14 ist nicht "2 hoch 14", sondern "2 xor-verknüpft mit 14".
+Wie rechnet man das aus?
+
+Binär rechnen:
+  14 = 15 - 1 = 1111 - 0001 = 1110
+  (dezimal)     (binär)
+
+          2 = 10
+  (dezimal)   (binär)
+
+  0010
+^ 1110
+  ----
+  1100
+
+Alternative: 2^14 ist dasselbe wie 14^2
+
+  1110
+^ 0010  <-- dieses eine Bit umklappen, die anderen beibehalten
+  ----
+  1100
diff --git a/20231109/blink-0.c b/20231109/blink-0.c
new file mode 100644
index 0000000000000000000000000000000000000000..b0022c681fd1482ed0a6d9fded7bb0a54699de32
--- /dev/null
+++ b/20231109/blink-0.c
@@ -0,0 +1,9 @@
+#include <avr/io.h>
+
+int main (void)
+{
+  DDRD = 0x40;   /* binär: 0100 0000 */
+  PORTD = 0x40;  /* binär: 0100 0000 */
+  while (1);
+  return 0;
+}
diff --git a/20231109/blink-0.hex b/20231109/blink-0.hex
new file mode 100644
index 0000000000000000000000000000000000000000..6a05b7db67b71fe56b83474cab2ab278834e3777
--- /dev/null
+++ b/20231109/blink-0.hex
@@ -0,0 +1,10 @@
+:100000000C9434000C943E000C943E000C943E0082
+:100010000C943E000C943E000C943E000C943E0068
+:100020000C943E000C943E000C943E000C943E0058
+:100030000C943E000C943E000C943E000C943E0048
+:100040000C943E000C943E000C943E000C943E0038
+:100050000C943E000C943E000C943E000C943E0028
+:100060000C943E000C943E0011241FBECFEFD8E04C
+:10007000DEBFCDBF0E9440000C9444000C940000F1
+:0C00800080E48AB98BB9FFCFF894FFCF61
+:00000001FF
diff --git a/20231109/blink-0a.c b/20231109/blink-0a.c
new file mode 100644
index 0000000000000000000000000000000000000000..97eb849a15eaf8b931d07a2378246ed0d98469d9
--- /dev/null
+++ b/20231109/blink-0a.c
@@ -0,0 +1,9 @@
+#include <avr/io.h>
+
+int main (void)
+{
+  DDRD = 0xff;   /* binär: 1111 1111 */
+  PORTD = 0x42;  /* binär: 0100 0010 */
+  while (1);
+  return 0;
+}
diff --git a/20231109/blink-1.c b/20231109/blink-1.c
new file mode 100644
index 0000000000000000000000000000000000000000..6d28dce84f94375094c98479c30a54ace1b2a9d9
--- /dev/null
+++ b/20231109/blink-1.c
@@ -0,0 +1,18 @@
+#include <avr/io.h>
+
+#define F_CPU 16000000l
+#include <util/delay.h>
+
+int main (void)
+{
+  DDRD = 0x01;
+  PORTD |= 0x01;
+  while (1)
+    {
+      _delay_ms (500);
+      PORTD &= ~0x01;
+      _delay_ms (500);
+      PORTD |= 0x01;
+    }
+  return 0;
+}
diff --git a/20231109/blink-2.c b/20231109/blink-2.c
new file mode 100644
index 0000000000000000000000000000000000000000..9389b19b1bf46d5ca90bac823e3f94269fe02878
--- /dev/null
+++ b/20231109/blink-2.c
@@ -0,0 +1,16 @@
+#include <avr/io.h>
+
+#define F_CPU 16000000l
+#include <util/delay.h>
+
+int main (void)
+{
+  DDRD = 0x02;  /* binär: 0000 0010 */
+  PORTD = 0x02;
+  while (1)
+    {
+      _delay_ms (250);
+      PORTD ^= 0x02;
+    }
+  return 0;
+}
diff --git a/20231109/blink-3.c b/20231109/blink-3.c
new file mode 100644
index 0000000000000000000000000000000000000000..5268e7977f0f2a99b2005a81a2fa7560dfea481f
--- /dev/null
+++ b/20231109/blink-3.c
@@ -0,0 +1,17 @@
+#include <avr/io.h>
+
+#define F_CPU 16000000
+#include <util/delay.h>
+
+int main (void)
+{
+  DDRD = 0x01;
+  PORTD = 0x01;
+  while (1)
+    {
+      while ((PIND & 0x02) == 0)
+        ; /* just wait */
+      PORTD ^= 0x01;
+    }
+  return 0;
+}
diff --git a/20231109/blink-4.c b/20231109/blink-4.c
new file mode 100644
index 0000000000000000000000000000000000000000..ceafab6b1e7462497fde98b7a12e72cc34132bbe
--- /dev/null
+++ b/20231109/blink-4.c
@@ -0,0 +1,18 @@
+#include <avr/io.h>
+
+#define F_CPU 16000000
+#include <util/delay.h>
+
+int main (void)
+{
+  DDRD = 0x01;   /* binär: 0000 0001 */
+  PORTD = 0x01;  /*                ^ Ouptut */
+  while (1)      /*               ^ Input   */
+    {
+      while ((PIND & 0x02) == 0)  /* binär: 0000 0010 */
+        ; /* just wait */
+      PORTD ^= 0x01;
+      _delay_ms (200);
+    }
+  return 0;
+}
diff --git a/20231109/blink-5.c b/20231109/blink-5.c
new file mode 100644
index 0000000000000000000000000000000000000000..bb755f0de02d3e224909f1d2a37789f3c14a0f03
--- /dev/null
+++ b/20231109/blink-5.c
@@ -0,0 +1,19 @@
+#include <avr/io.h>
+#include <avr/interrupt.h>
+
+ISR (TIMER0_COMPB_vect)
+{
+  PORTD ^= 0x40;
+}
+
+int main (void)
+{
+  cli ();
+  TCCR0B = (1 << CS01) | (1 << CS00);  /* Takt durch 64 dividieren */
+  TIMSK0 = 1 << OCIE0B;  /* Interrupt einschalten */
+  sei ();
+  DDRD = 0xfd;   /* binär: 1111 1101 */
+  PORTD = 0x40;  /* binär: 0100 0000 */
+  while (1);
+  return 0;
+}
diff --git a/20231109/blink-6.c b/20231109/blink-6.c
new file mode 100644
index 0000000000000000000000000000000000000000..651ab6e4ac926242337a0520c11f2bbd935bdd22
--- /dev/null
+++ b/20231109/blink-6.c
@@ -0,0 +1,22 @@
+#include <avr/io.h>
+#include <avr/interrupt.h>
+#include <stdint.h>
+
+ISR (TIMER0_COMPB_vect)
+{
+  static uint8_t counter = 0;
+  if (counter++ == 0)
+    PORTD ^= 0x40;
+}
+
+int main (void)
+{
+  cli ();
+  TCCR0B = (1 << CS01) | (1 << CS00);  /* Takt durch 64 dividieren */
+  TIMSK0 = 1 << OCIE0B;  /* Interrupt einschalten */
+  sei ();
+  DDRD = 0xfd;   /* binär: 1111 1101 */
+  PORTD = 0x40;  /* binär: 0100 0000 */
+  while (1);
+  return 0;
+}
diff --git a/20231109/blink-7.c b/20231109/blink-7.c
new file mode 100644
index 0000000000000000000000000000000000000000..7ed39822752f61b636f001b77eb3742a57e953a9
--- /dev/null
+++ b/20231109/blink-7.c
@@ -0,0 +1,20 @@
+#include <avr/io.h>
+#include <avr/interrupt.h>
+#include <stdint.h>
+
+ISR (INT0_vect)  /* PD2 */
+{
+  PORTD ^= 0x40;
+}
+
+int main (void)
+{
+  cli ();
+  EICRA = 1 << ISC00 | 1 << ISC01;  /* INT0: steigende Flanke */
+  EIMSK = 1 << INT0;  /* INT0 einschalten */
+  sei ();
+  DDRD = 0xfb;   /* binär: 1111 1011 */
+  PORTD = 0x40;  /* binär: 0100 0000 */
+  while (1);
+  return 0;
+}
diff --git a/20231109/blink-8.c b/20231109/blink-8.c
new file mode 100644
index 0000000000000000000000000000000000000000..aba94f07176a75656619d1ba09e83093cbc66c89
--- /dev/null
+++ b/20231109/blink-8.c
@@ -0,0 +1,20 @@
+#include <avr/io.h>
+#include <avr/interrupt.h>
+#include <stdint.h>
+
+ISR (INT0_vect)  /* PD2 */
+{
+  PORTD ^= 0x40;
+}
+
+int main (void)
+{
+  cli ();
+  EICRA = 1 << ISC00 | 1 << ISC01;  /* INT0: steigende Flanke */
+  EIMSK = 1 << INT0;  /* INT0 einschalten */
+  sei ();
+  DDRD = 0xff;   /* binär: 1111 1111 */
+  PORTD = 0x40;  /* binär: 0100 0000 */
+  while (1);
+  return 0;
+}
diff --git a/20231109/blink-8a.c b/20231109/blink-8a.c
new file mode 100644
index 0000000000000000000000000000000000000000..ec3b257372dce0c515ba910a01f05288d67a2ef8
--- /dev/null
+++ b/20231109/blink-8a.c
@@ -0,0 +1,25 @@
+#include <avr/io.h>
+#include <avr/interrupt.h>
+#include <stdint.h>
+
+#define F_CPU 16000000l
+#include <util/delay.h>
+
+ISR (INT0_vect)  /* PD2 */
+{
+  PORTD ^= 0x40;
+  _delay_ms (1);  /* Wartezeit zum Entprellen. --> HIER FALSCH!               */
+                  /* Warteschleifen gehören nicht in einen Interrupt-Handler! */
+}
+
+int main (void)
+{
+  cli ();
+  EICRA = 1 << ISC00 | 1 << ISC01;  /* INT0: steigende Flanke */
+  EIMSK = 1 << INT0;  /* INT0 einschalten */
+  sei ();
+  DDRD = 0xff;   /* binär: 1111 1111 */
+  PORTD = 0x40;  /* binär: 0100 0000 */
+  while (1);
+  return 0;
+}
diff --git a/20231109/blink-9.c b/20231109/blink-9.c
new file mode 100644
index 0000000000000000000000000000000000000000..4a75df075eb4aed8b23333b640a0b33aa40b9da4
--- /dev/null
+++ b/20231109/blink-9.c
@@ -0,0 +1,32 @@
+#include <avr/io.h>
+#include <avr/interrupt.h>
+#include <stdint.h>
+
+#define F_CPU 16000000l
+#include <util/delay.h>
+
+uint8_t key_pressed = 0;
+
+ISR (INT0_vect)  /* PD2 */
+{
+  key_pressed = 1;
+}
+
+int main (void)
+{
+  cli ();
+  EICRA = 1 << ISC00 | 1 << ISC01;  /* INT0: steigende Flanke */
+  EIMSK = 1 << INT0;  /* INT0 einschalten */
+  sei ();
+  DDRD = 0xfb;   /* binär: 1111 1011 */
+  PORTD = 0x44;  /* binär: 0100 0100 */
+  while (1)
+    {
+      while (!key_pressed)
+        ;  /* just wait */
+      PORTD ^= 0x40;
+      _delay_ms (1);  /* Wartezeit zum Entprellen */
+      key_pressed = 0;
+    }
+  return 0;
+}
diff --git a/20231109/blink-9.s b/20231109/blink-9.s
new file mode 100644
index 0000000000000000000000000000000000000000..43555b93ac0c0a8280ac3a0411d6c0b3462e9873
--- /dev/null
+++ b/20231109/blink-9.s
@@ -0,0 +1,84 @@
+	.file	"blink-9.c"
+__SP_H__ = 0x3e
+__SP_L__ = 0x3d
+__SREG__ = 0x3f
+__tmp_reg__ = 0
+__zero_reg__ = 1
+	.text
+.global	__vector_1
+	.type	__vector_1, @function
+__vector_1:
+	push r1
+	push r0
+	in r0,__SREG__
+	push r0                                       ; #include <avr/io.h>
+	clr __zero_reg__                              ; #include <avr/interrupt.h>
+	push r24                                      ; #include <stdint.h>
+/* prologue: Signal */                                ; 
+/* frame size = 0 */                                  ; #define F_CPU 16000000l
+/* stack size = 4 */                                  ; #include <util/delay.h>
+.L__stack_usage = 4                                   ; 
+	ldi r24,lo8(1)                                ; uint8_t key_pressed = 0;
+	sts key_pressed,r24                           ; 
+/* epilogue start */                                  ; ISR (INT0_vect)  /* PD2 */
+	pop r24                                       ; {
+	pop r0                                        ;   key_pressed = 1;
+	out __SREG__,r0                               ; }
+	pop r0                                        ; 
+	pop r1                                        ; int main (void)
+	reti                                          ; {
+	.size	__vector_1, .-__vector_1              ;   cli ();
+	.section	.text.startup,"ax",@progbits  ;   EICRA = 1 << ISC00 | 1 << ISC01;  /* INT0: steigende Flanke */
+.global	main                                          ;   EIMSK = 1 << INT0;  /* INT0 einschalten */
+	.type	main, @function                       ;   sei ();
+main:                                                 ;   DDRD = 0xfb;   /* binär: 1111 1011 */
+/* prologue: function */                              ;   PORTD = 0x44;  /* binär: 0100 0100 */
+/* frame size = 0 */                                  ;   while (1)
+/* stack size = 0 */                                  ;     {
+.L__stack_usage = 0                                   ;       while (!key_pressed)
+/* #APP */                                            ;         ;  /* just wait */
+ ;  17 "blink-9.c" 1                                  ;       PORTD ^= 0x40;
+	cli                                           ;       _delay_ms (1);  /* Wartezeit zum Entprellen */
+ ;  0 "" 2                                            ;       key_pressed = 0;
+/* #NOAPP */                                          ;     }
+	ldi r24,lo8(3)                                ;   return 0;
+	sts 105,r24                                   ; }
+	ldi r24,lo8(1)
+	out 0x1d,r24
+/* #APP */
+ ;  20 "blink-9.c" 1
+	sei
+ ;  0 "" 2
+/* #NOAPP */
+	ldi r24,lo8(-5)
+	out 0xa,r24
+	ldi r24,lo8(68)
+	out 0xb,r24
+	ldi r25,lo8(64)
+.L4:
+	lds r24,key_pressed
+	cpse r24,__zero_reg__
+	rjmp .L7
+.L6:
+	rjmp .L6
+.L7:
+	in r24,0xb
+	eor r24,r25
+	out 0xb,r24
+	ldi r30,lo8(3999)
+	ldi r31,hi8(3999)
+1:	sbiw r30,1
+	brne 1b
+	rjmp .
+	nop
+	sts key_pressed,__zero_reg__
+	rjmp .L4
+	.size	main, .-main
+.global	key_pressed
+	.section .bss
+	.type	key_pressed, @object
+	.size	key_pressed, 1
+key_pressed:
+	.zero	1
+	.ident	"GCC: (GNU) 5.4.0"
+.global __do_clear_bss
diff --git a/20231109/blink-9a.c b/20231109/blink-9a.c
new file mode 100644
index 0000000000000000000000000000000000000000..f10f04d79023de40faa312ce2249de5fcd738337
--- /dev/null
+++ b/20231109/blink-9a.c
@@ -0,0 +1,32 @@
+#include <avr/io.h>
+#include <avr/interrupt.h>
+#include <stdint.h>
+
+#define F_CPU 16000000l
+#include <util/delay.h>
+
+volatile uint8_t key_pressed = 0;
+
+ISR (INT0_vect)  /* PD2 */
+{
+  key_pressed = 1;
+}
+
+int main (void)
+{
+  cli ();
+  EICRA = 1 << ISC00 | 1 << ISC01;  /* INT0: steigende Flanke */
+  EIMSK = 1 << INT0;  /* INT0 einschalten */
+  sei ();
+  DDRD = 0xfb;   /* binär: 1111 1011 */
+  PORTD = 0x41;  /* binär: 0100 0001 */
+  while (1)
+    {
+      while (!key_pressed)
+        ;  /* just wait */
+      PORTD ^= 0x40;
+      _delay_ms (1);  /* Wartezeit zum Entprellen */
+      key_pressed = 0;
+    }
+  return 0;
+}
diff --git a/20231109/blink-9b.c b/20231109/blink-9b.c
new file mode 100644
index 0000000000000000000000000000000000000000..efa19cc5c3ebcf87a652ed64bb33a48cd24e8561
--- /dev/null
+++ b/20231109/blink-9b.c
@@ -0,0 +1,32 @@
+#include <avr/io.h>
+#include <avr/interrupt.h>
+#include <stdint.h>
+
+#define F_CPU 16000000l
+#include <util/delay.h>
+
+volatile uint8_t key_pressed = 0;
+
+ISR (INT0_vect)  /* PD2 */
+{
+  key_pressed = 1;
+}
+
+int main (void)
+{
+  cli ();
+  EICRA = 1 << ISC00 | 1 << ISC01;  /* INT0: steigende Flanke */
+  EIMSK = 1 << INT0;  /* INT0 einschalten */
+  sei ();
+  DDRD = 0xfb;   /* binär: 1111 1011 */
+  PORTD = 0x45;  /* binär: 0100 0101 */
+  while (1)
+    {
+      while (!key_pressed)
+        ;  /* just wait */
+      PORTD ^= 0x40;
+      _delay_ms (1);  /* Wartezeit zum Entprellen */
+      key_pressed = 0;
+    }
+  return 0;
+}
diff --git a/20231109/interner-pull-up-widerstand.png b/20231109/interner-pull-up-widerstand.png
new file mode 100644
index 0000000000000000000000000000000000000000..9a99aad8b8895226e27f8495ba7fc0b31615e56d
Binary files /dev/null and b/20231109/interner-pull-up-widerstand.png differ
diff --git a/20231109/pull-down-pull-up-widerstaende.xcf.gz b/20231109/pull-down-pull-up-widerstaende.xcf.gz
new file mode 100644
index 0000000000000000000000000000000000000000..d1897978ccbf256d5034aa40b12f70977681f2d6
Binary files /dev/null and b/20231109/pull-down-pull-up-widerstaende.xcf.gz differ
diff --git a/20231109/pull-down-widerstand.png b/20231109/pull-down-widerstand.png
new file mode 100644
index 0000000000000000000000000000000000000000..0c18a6d0b6a4763237c579ee787b26065f753cbc
Binary files /dev/null and b/20231109/pull-down-widerstand.png differ
diff --git a/20231109/pull-up-widerstaende-1.png b/20231109/pull-up-widerstaende-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..0a5d86ec33792a68fa9597c4bb326773b9f89db7
Binary files /dev/null and b/20231109/pull-up-widerstaende-1.png differ
diff --git a/20231109/pull-up-widerstand.png b/20231109/pull-up-widerstand.png
new file mode 100644
index 0000000000000000000000000000000000000000..70e8ca04da6eadf6a7e94715ec4ab296c1dcd394
Binary files /dev/null and b/20231109/pull-up-widerstand.png differ