Skip to content
Snippets Groups Projects
Commit 5d46ca38 authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Vorbereitung 18.12.2017

parent 7fbfbe93
Branches
No related tags found
No related merge requests found
Showing
with 266 additions and 1 deletion
%.elf: %.c
avr-gcc -Wall -Os -mmcu=atmega328p $< -o $@
avr-gcc -std=c99 -Wall -Os -mmcu=atmega328p $< -o $@
%.hex: %.elf
avr-objcopy -O ihex $< $@
......
File added
20171213/photo-20171213-135353-orig.jpg

114 KiB

20171213/photo-20171213-135353.jpg

62.6 KiB

README: Schema zur Funktionsweise des Data Direction Registers (DDR) bei ATmega-Mikrocontrollern
%.elf: %.c
avr-gcc -std=c99 -Wall -Os -mmcu=atmega328p $< -o $@
%.hex: %.elf
avr-objcopy -O ihex $< $@
upload:
./upload.sh
20171218/Tower_of_Hanoi.gif

76.4 KiB

../common/Tower_of_Hanoi.jpeg
\ No newline at end of file
20171218/Tower_of_Hanoi_4.gif

193 KiB

#include <stdio.h>
int fak (int n)
{
if (n <= 0)
return 1;
else
return n * fak (n - 1);
}
int main (void)
{
for (int n = 0; n <= 5; n++)
printf ("%d\n", fak (n));
return 0;
}
#include <stdio.h>
void f (int *s0, int *s1)
{
while (*s0 >= 0)
{
int *s = s1;
while (*s >= 0)
if (*s0 == *s++)
printf ("%d ", *s0);
s0++;
}
printf ("\n");
}
int main (void)
{
int a[] = { 10, 4, 3, 7, 12, 0, 1, -1 };
int b[] = { 7, 14, 0, 8, 9, 22, 10, -1 };
f (a, b);
return 0;
}
#include <stdio.h>
void f (int *s0, int *s1)
{
while (*s0 >= 0)
{
int *s = s1;
while (*s >= 0)
if (*s0 == *s++)
printf ("%d ", *s0);
s0++;
}
printf ("\n");
}
int main (void)
{
int a[] = { 10, 4, 3, 7, 12, 0, 1 };
int b[] = { 7, 14, 0, 8, 9, 22, 10 };
f (a, b);
return 0;
}
#include <string.h>
int fun_1 (char *s)
{
int x = 0;
for (int i = 0; i < strlen (s); i++)
x += s[i];
return x;
}
int fun_2 (char *s)
{
int i = 0, x = 0;
int len = strlen (s);
while (i < len)
x += s[i++];
return x;
}
#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;
}
#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;
}
../20171211/druckknopfampel.mp4
\ No newline at end of file
#include <stdio.h>
#define DISKS 4
int n[3], tower[3][DISKS];
void display (void)
{
printf ("\n");
for (int i = 0; i < 3; i++)
{
printf ("tower %d:", i);
for (int j = 0; j < n[i]; j++)
printf (" %d", tower[i][j]);
printf ("\n");
}
}
int main (void)
{
n[0] = 0;
n[1] = 0;
n[2] = 0;
display ();
return 0;
}
#include <stdio.h>
#include <error.h>
#define DISKS 64
int n[3], tower[3][DISKS];
void display (void)
{
printf ("\n");
for (int i = 0; i < 3; i++)
{
printf ("tower %d:", i);
for (int j = 0; j < n[i]; j++)
printf (" %d", tower[i][j]);
printf ("\n");
}
}
void move (int from, int to, int disks)
{
if (disks == 1)
{
if (n[from] <= 0)
error (1, 0, "trying to move disk from empty tower");
if (n[to] > 0 && tower[to][n[to] - 1] < tower[from][n[from] - 1])
error (1, 0, "trying to move larger disk on smaller one");
tower[to][n[to]] = tower[from][n[from] - 1];
n[to]++;
n[from]--;
static int counter = 1;
if (counter++ >= 100000000)
{
display ();
counter = 1;
}
}
else
{
int help = 0 + 1 + 2 - from - to;
move (from, help, disks - 1);
move (from, to, 1);
move (help, to, disks - 1);
}
}
int main (void)
{
n[0] = DISKS;
for (int i = 0; i < DISKS; i++)
tower[0][i] = DISKS - i;
n[1] = 0;
n[2] = 0;
display ();
move (0, 2, DISKS);
display ();
return 0;
}
#include <stdio.h>
#include <error.h>
#define DISKS 32
int n[3], tower[3][DISKS];
void display (void)
{
printf ("\n");
for (int i = 0; i < 3; i++)
{
printf ("tower %d:", i);
for (int j = 0; j < n[i]; j++)
printf (" %d", tower[i][j]);
printf ("\n");
}
}
void move (int from, int to, int disks)
{
if (disks == 1)
{
if (n[from] <= 0)
error (1, 0, "trying to move disk from empty tower");
if (n[to] > 0 && tower[to][n[to] - 1] < tower[from][n[from] - 1])
error (1, 0, "trying to move larger disk on smaller one");
tower[to][n[to]] = tower[from][n[from] - 1];
n[to]++;
n[from]--;
static int counter = 1;
if (counter++ >= 100000000)
{
display ();
counter = 1;
}
}
else
{
int help = 0 + 1 + 2 - from - to;
move (from, help, disks - 1);
move (from, to, 1);
move (help, to, disks - 1);
}
}
int main (void)
{
n[0] = DISKS;
for (int i = 0; i < DISKS; i++)
tower[0][i] = DISKS - i;
n[1] = 0;
n[2] = 0;
display ();
move (0, 2, DISKS);
display ();
return 0;
}
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment