<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=172.26.42.160</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=172.26.42.160"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/172.26.42.160"/>
	<updated>2026-04-11T03:16:27Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Logische_Verkn%C3%BCpfungen&amp;diff=103915</id>
		<title>Logische Verknüpfungen</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Logische_Verkn%C3%BCpfungen&amp;diff=103915"/>
		<updated>2021-02-08T07:14:48Z</updated>

		<summary type="html">&lt;p&gt;172.26.42.160: /* XOR */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====UND====&lt;br /&gt;
&amp;lt;font size=&amp;quot;9&amp;quot;&amp;gt;&amp;lt;/FONT&amp;gt;(Konjunktion)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x = a \wedge b&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;[[Bild:AND.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; style=&amp;quot;width:200px&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;a&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;b&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;x&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
====ODER====&lt;br /&gt;
Verknüpfung (Disjunktion)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x = a \vee b&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Bild:ODER.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; style=&amp;quot;width:200px&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;a&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;b&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;x&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
====NICHT====&lt;br /&gt;
Verknüpfung (Negation)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x = \overline{a}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Bild:NOT.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; style=&amp;quot;width:200px&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;a&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;x&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
====NAND====&lt;br /&gt;
Verknüpfung&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x = \overline{a \wedge b}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Bild:NAND.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; style=&amp;quot;width:200px&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;a&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;b&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;x&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====NOR====&lt;br /&gt;
Verknüpfung (Konjunktion)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x = \overline{a \vee b}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Bild:NOR.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; style=&amp;quot;width:200px&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;a&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;b&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;x&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
====XOR====&lt;br /&gt;
Exklusiv-ODER-Verknüpfung (Antivalenz)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x = (a \wedge \overline{b}) \vee (\overline{a} \wedge b)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Bild:XOR.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; style=&amp;quot;width:200px&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;a&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;b&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;x&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
====XNOR====&lt;br /&gt;
Exklusiv-NOR-Verknüpfung (Äquivalenz)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x = (a \wedge b) \vee (\overline{a} \wedge \overline{b})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Bild:XNOR.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;a&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;b&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;x&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sperrgatter&#039;&#039;&#039; (Inhibition)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x = \overline{a} \wedge b&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Bild:Inhibition.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;a&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;b&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;x&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Subjunktion&#039;&#039;&#039; (Implikation)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x = \overline{a} \vee b&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Bild:Implikation.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;a&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;b&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;x&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Grundlagen]]&lt;/div&gt;</summary>
		<author><name>172.26.42.160</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Logische_Verkn%C3%BCpfungen&amp;diff=103914</id>
		<title>Logische Verknüpfungen</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Logische_Verkn%C3%BCpfungen&amp;diff=103914"/>
		<updated>2021-02-08T07:14:41Z</updated>

		<summary type="html">&lt;p&gt;172.26.42.160: /* NOR */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;====UND====&lt;br /&gt;
&amp;lt;font size=&amp;quot;9&amp;quot;&amp;gt;&amp;lt;/FONT&amp;gt;(Konjunktion)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x = a \wedge b&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
   &amp;lt;td&amp;gt;[[Bild:AND.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; style=&amp;quot;width:200px&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;a&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;b&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;x&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
====ODER====&lt;br /&gt;
Verknüpfung (Disjunktion)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x = a \vee b&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Bild:ODER.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; style=&amp;quot;width:200px&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;a&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;b&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;x&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
====NICHT====&lt;br /&gt;
Verknüpfung (Negation)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x = \overline{a}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Bild:NOT.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; style=&amp;quot;width:200px&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;a&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;x&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
====NAND====&lt;br /&gt;
Verknüpfung&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x = \overline{a \wedge b}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Bild:NAND.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; style=&amp;quot;width:200px&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;a&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;b&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;x&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====NOR====&lt;br /&gt;
Verknüpfung (Konjunktion)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x = \overline{a \vee b}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Bild:NOR.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; style=&amp;quot;width:200px&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;a&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;b&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;x&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
====XOR====&lt;br /&gt;
Exklusiv-ODER-Verknüpfung (Antivalenz)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x = (a \wedge \overline{b}) \vee (\overline{a} \wedge b)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Bild:XOR.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;a&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;b&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;x&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
====XNOR====&lt;br /&gt;
Exklusiv-NOR-Verknüpfung (Äquivalenz)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x = (a \wedge b) \vee (\overline{a} \wedge \overline{b})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Bild:XNOR.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;a&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;b&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;x&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Sperrgatter&#039;&#039;&#039; (Inhibition)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x = \overline{a} \wedge b&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Bild:Inhibition.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;a&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;b&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;x&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Subjunktion&#039;&#039;&#039; (Implikation)&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;x = \overline{a} \vee b&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Bild:Implikation.png]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;a&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;b&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt; &#039;&#039;&#039;x&#039;&#039;&#039; &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;0&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Grundlagen]]&lt;/div&gt;</summary>
		<author><name>172.26.42.160</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=UPlay_Basic_Interpreter_per_XMC2Go&amp;diff=103860</id>
		<title>UPlay Basic Interpreter per XMC2Go</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=UPlay_Basic_Interpreter_per_XMC2Go&amp;diff=103860"/>
		<updated>2021-02-06T20:22:53Z</updated>

		<summary type="html">&lt;p&gt;172.26.42.160: /* Syntax */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;von [[Benutzer:derexponent]] (Becker Uwe)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Laut Wikipedia gibt es die Programmiersprache &amp;quot;BASIC&amp;quot; jetzt über 50 Jahre. Dem einfachen Syntaxaufbau mag es geschuldet sein,&lt;br /&gt;
dass auch heute noch neue Projekte damit realisiert werden.&lt;br /&gt;
&lt;br /&gt;
Auch ich habe mit Basic ein paar Jahre programmiert und obwohl höhere Programmiersprachen viele Vorteile besitzen,&lt;br /&gt;
kann man dennoch auch mit Basic einiges anfangen.&lt;br /&gt;
&lt;br /&gt;
Dieses Projekt zeigt einen Basic-Interpreter, der auf einem 32Bit ARM-M0 System von Infineon läuft und mit dem der User,&lt;br /&gt;
mit Hilfe von ein paar Buttons und einem Graphic-LCD, einfache Spiele und Anwendungen selbst erstellen kann.&lt;br /&gt;
&lt;br /&gt;
Das ganze habe ich &amp;lt;b&amp;gt;&amp;quot;uPlay&amp;quot;&amp;lt;/b&amp;gt; getauft...abgeleitet von dem benutzten Basic-Interpreter &amp;quot;uBasic&amp;quot; und als&lt;br /&gt;
batteriebetriebenen kleinen &amp;quot;Handheld&amp;quot; designed.&lt;br /&gt;
&lt;br /&gt;
[[Datei:UPlay.jpg|miniatur|Fertig aufgebautes uPlay]]&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
&lt;br /&gt;
Das &amp;lt;b&amp;gt;&amp;quot;uPlay&amp;quot;&amp;lt;/b&amp;gt; basiert auf dem Basic-Interpreter &amp;quot;uBasic&amp;quot; von Adam Dunkels der von mir etwas &amp;quot;erweitert&amp;quot; wurde. Als CPU-Board kommt&lt;br /&gt;
ein XMC-2Go von Infineon mit dem XMC1100 Prozessor zum Einsatz. Als Display habe ich ein 84x48 Pixel Grafik-Display benutzt und&lt;br /&gt;
zur Eingabe gibt es 5 Buttons. Die Hardwarekosten für einen Nachbau belaufen sich auf etwa 15 EUR.&lt;br /&gt;
Der Aufbau der Hardware sollte an einem regnerischen Wochenende erledigt sein.&lt;br /&gt;
&lt;br /&gt;
*Kostengünstiges CPU Board (ca. 6 EUR)&lt;br /&gt;
*Kostengünstiges Grafik-Display (ca. 5 EUR)&lt;br /&gt;
*Einfacher Hardwareaufbau&lt;br /&gt;
*Eigene Basic-Programme können als Ascii-File per UART vom PC geladen werden&lt;br /&gt;
*Kleine Abmessungen&lt;br /&gt;
*Batteriebetrieb möglich&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
Als Minimalhardware wird eigentlich nur eine CPU benötigt, wenn das Basic-Programm im Flash vorhanden ist&lt;br /&gt;
und man kein Display zur Ausgabe benötigt.&lt;br /&gt;
&lt;br /&gt;
Mehr &amp;quot;Spaß&amp;quot; bringt es natürlich, wenn man ein Display benutzen kann und zur Eingabe ein paar Buttons vorhanden sind.&lt;br /&gt;
In dieser Beschreibung gehe ich davon aus, das die Hardware so aufgebaut wird, wie im Schaltplan beschrieben.&lt;br /&gt;
Es kann aber auch eine andere Kombination gewählt werden, wenn die Software entsprechend angepasst wird.&lt;br /&gt;
&lt;br /&gt;
=== CPU/BOARD ===&lt;br /&gt;
&lt;br /&gt;
Wie schon geschrieben habe ich das ganze für das XMC2-2Go Board von Infineon und die XMC1100 CPU programmiert.&lt;br /&gt;
Prinzipiell kann hier auch jede andere CPU benutzt werden, solange genug RAM für das Basic-Programm vorhanden ist&lt;br /&gt;
und sie schnell genug ist um die Anwendung auch in einer vernünftigen Zykluszeit abzuarbeiten.&lt;br /&gt;
&lt;br /&gt;
Hier ein paar Eckdaten der XMC1100 :&lt;br /&gt;
&lt;br /&gt;
*CPU : 32bit ARM-M0&lt;br /&gt;
*Clock : 32 MHz&lt;br /&gt;
*Flash : 64 kByte&lt;br /&gt;
*Ram : 16 kByte&lt;br /&gt;
&lt;br /&gt;
Mit dieser CPU liegt die Zykluszeit von einer Basic-Zeile (je nach Umfang) bei ca. 500 us.&lt;br /&gt;
&lt;br /&gt;
Am XMC-2Go Board sind nur 14 GPIO-Pins an Pfostenleisten zugänglich, was den Einsatz der restlichen Hardware&lt;br /&gt;
natürlich einschränkt. Aber wie an dem Projekt zu sehen ist, reicht es trotzdem für alle Funktionen.&lt;br /&gt;
&lt;br /&gt;
*Manual vom XMC-2Go&amp;lt;ref&amp;gt;http://www.infineon.com/dgdl/Board_Users_Manual_XMC_2Go_Kit_with_XMC1100_R1.0.pdf?folderId=db3a30433580b3710135a47f3eb76c98&amp;amp;fileId=db3a3043444ee5dc014453d6c75078c6&amp;amp;ack=t&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Datenblatt vom XMC1100&amp;lt;ref&amp;gt;http://www.infineon.com/dgdl/xmc1100_ds_v1.2_2013_12.pdf?folderId=db3a30433580b3710135a47f3eb76c98&amp;amp;fileId=db3a30433d1d0bbe013d256b60160b7f&amp;amp;ack=t&amp;lt;/ref&amp;gt;&lt;br /&gt;
*RefManual vom XMC1100&amp;lt;ref&amp;gt;http://www.infineon.com/dgdl/xmc1100_rm_v1+0_2013_03.pdf?folderId=db3a30433580b3710135a47f3eb76c98&amp;amp;fileId=db3a30433cfb5caa013d1600856033eb&amp;amp;ack=t&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DISPLAY ===&lt;br /&gt;
&lt;br /&gt;
Als Display habe ich das vom Nokia Handy 5110 benutzt. Das ist günstig zu bekommen, hat eine Auflösung von 84x48 Pixel&lt;br /&gt;
und wird per SPI-Schnittstelle betrieben. Als LCD-Controller ist ein PCD8544 verbaut.&lt;br /&gt;
&lt;br /&gt;
Ein weiterer Vorteil von dem Display ist, das für einen kompletten Refresh vom Grafik-Inhalt nur 504 Bytes Daten&lt;br /&gt;
übertragen werden müssen. Bei der max SPI-Frq die das Display mitmacht (4MHz), dauert das rechnerisch nur 1ms.&lt;br /&gt;
&lt;br /&gt;
Zum Betrieb des Displays werden 5 GPIO Pins benötigt :&lt;br /&gt;
&lt;br /&gt;
*MOSI  = P0.7&lt;br /&gt;
*CLK   = P0.8&lt;br /&gt;
*CS    = P0.9&lt;br /&gt;
*D/C   = P0.14&lt;br /&gt;
*RESET = P0.15&lt;br /&gt;
&lt;br /&gt;
Um Strom zu sparen, habe ich die Hintergrundbeleuchtung per Jumper abschaltbar gemacht.&lt;br /&gt;
&lt;br /&gt;
*Datenblatt vom PCD8544 &amp;lt;ref&amp;gt;https://www.sparkfun.com/datasheets/LCD/Monochrome/Nokia5110.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Bezugsquelle vom Nokia5110 Display &amp;lt;ref&amp;gt;https://www.sparkfun.com/products/10168&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Break-Button ===&lt;br /&gt;
&lt;br /&gt;
Der MISO Pin der SPI-Schnittstelle wird für das Display nicht benötigt. Damit dieser PIN nicht unbenutzt bleibt, habe ich daran&lt;br /&gt;
einen &amp;quot;Break-Button&amp;quot; angeschlossen mit dem man ein laufendes Basic-Programm abbrechen kann.&lt;br /&gt;
&lt;br /&gt;
Der Pin hat einen internen PullUp, es reicht also einen Taster gegen GND einzubauen.&lt;br /&gt;
&lt;br /&gt;
Der Status vom Button wird automatisch bei jedem refresh vom Display abgefragt. Falls er nicht betätigt ist,&lt;br /&gt;
ist der Rückgabewert 0xFF. Falls er betätigt ist, wird eine 0x00 zurückgeliefert.&lt;br /&gt;
&lt;br /&gt;
*Break-Button = P0.6&lt;br /&gt;
&lt;br /&gt;
=== ADC ===&lt;br /&gt;
&lt;br /&gt;
Einen Pin der CPU habe ich als 10bit ADC-Eingang initialisiert. Dieser kann vom Basic-Programm aus abgefragt werden.&lt;br /&gt;
In wie weit man das in seiner Anwendung benutzen will, bleibt jedem selbst überlassen.&lt;br /&gt;
&lt;br /&gt;
Im &amp;lt;b&amp;gt;&amp;quot;uPlay&amp;quot;&amp;lt;/b&amp;gt; wird der ADC nicht benutzt und ist nur im Schaltplan vorhanden.&lt;br /&gt;
&lt;br /&gt;
Beim abfragen vom Basic-Programm aus wird ein Integer Wert von 0...1023 zurückgeliefert,&lt;br /&gt;
was einer Spannung von 0 bis 3,3V entspricht.&lt;br /&gt;
&lt;br /&gt;
Die Umrechnungsformel &amp;quot;ADC-&amp;gt;VOLT&amp;quot; lautet demnach : Spannung = 3,3V / 1023 x ADC_WERT&lt;br /&gt;
&lt;br /&gt;
*ADC-0 = P2.6&lt;br /&gt;
&lt;br /&gt;
=== GPIOs ===&lt;br /&gt;
&lt;br /&gt;
Von den 14 Pins des XMC-2Go sind 7 vom Display und ADC belegt, bleiben also noch 7 GPIOs übrig.&lt;br /&gt;
Um Spiele zu realisieren braucht man mindestens 5 Buttons &amp;quot;Steuerkreuz + Enter&amp;quot; als Eingabe.&lt;br /&gt;
&lt;br /&gt;
Ich habe das &amp;lt;b&amp;gt;&amp;quot;uPlay&amp;quot;&amp;lt;/b&amp;gt; also mit 5 Inputs und 2 Outputs designed. Wer das ganze Projekt für andere Zwecke&lt;br /&gt;
benutzen will, kann das natürlich abändern wie er lustig ist.&lt;br /&gt;
&lt;br /&gt;
Beachtet werden muss nur, das nicht jeder Pin vom XMC-2Go als Ausgang geschaltet werden kann :&lt;br /&gt;
&lt;br /&gt;
*P0.0  = STD_IN / STD_OUT&lt;br /&gt;
*P0.5  = STD_IN / STD_OUT&lt;br /&gt;
*P2.0  = STD_IN / STD_OUT / ADC_IN&lt;br /&gt;
*P2.7  = STD_IN / ADC_IN&lt;br /&gt;
*P2.9  = STD_IN / ADC_IN&lt;br /&gt;
*P2.10 = STD_IN / STD_OUT / ADC_IN&lt;br /&gt;
*P2.11 = STD_IN / STD_OUT / ADC_IN&lt;br /&gt;
&lt;br /&gt;
==== INPUTS ====&lt;br /&gt;
&lt;br /&gt;
Damit User-Eingaben ausgewertet werden können, habe ich 5 Buttons angeschlossen. 4 Als &amp;quot;Steuerkreuz&amp;quot; und 1 &amp;quot;Enter&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Per Software sind die PullUps der CPU aktiviert also reichen Taster gegen GND zum schalten.&lt;br /&gt;
Daraus folgt, das ein nicht betätigter Button eine &amp;quot;1&amp;quot; beim einlesen vom Basic-Programm zurückliefert&lt;br /&gt;
und ein gedrückter Button eine &amp;quot;0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*Button-0 (UP)    = P2.10  &lt;br /&gt;
*Button-1 (DOWN)  = P0.0&lt;br /&gt;
*Button-2 (LEFT)  = P2.9&lt;br /&gt;
*Button-3 (RIGHT) = P2.11&lt;br /&gt;
*Button-4 (ENTER) = P2.7&lt;br /&gt;
&lt;br /&gt;
==== OUTPUTS ====&lt;br /&gt;
&lt;br /&gt;
Zwei der GPIO-Pins habe ich als Digital-Ausgang initialisiert, um z.B. eine LED oder ein Piepser&lt;br /&gt;
anzuschließen.&lt;br /&gt;
&lt;br /&gt;
Die Outputs sind als PushPull geschaltet.&lt;br /&gt;
Im &amp;lt;b&amp;gt;&amp;quot;uPlay&amp;quot;&amp;lt;/b&amp;gt; werden die Outputs nicht benutzt und sind nur im Schaltplan vorhanden.&lt;br /&gt;
(laut Datenblatt sind die PortPins nur bis max 10mA belastbar)&lt;br /&gt;
&lt;br /&gt;
*Output-0 = P0.5&lt;br /&gt;
*Output-1 = P2.0&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
Die UART vom XMX-2Go Board wird benötigt um Basic-Programme nachzuladen.&lt;br /&gt;
Sie wird auch im laufenden Basic-Programm als Standardausgabe der &amp;quot;PRINT&amp;quot; Befehle benutzt.&lt;br /&gt;
&lt;br /&gt;
Die Schnittstelle wird mit 115200 Baud initialisiert mit dem Frame-Parameter &amp;quot;8N1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*TXD = P2.1&lt;br /&gt;
*RXD = P2.2&lt;br /&gt;
&lt;br /&gt;
=== Spannung/Strom ===&lt;br /&gt;
&lt;br /&gt;
Als Spannungsversorgung ist eine 3V Lithium Knopfzelle mit 550mAh vorgesehen (CR-2450).&lt;br /&gt;
Wenn der USB Stecker an den PC angeschlossen ist, wird das Board per USB versorgt.&lt;br /&gt;
&lt;br /&gt;
Eigentlich sollte man am Board, wenn es per USB versorgt wird, keine externe Spannung&lt;br /&gt;
an die Stiftleiste anlegen. Ich habe aus dem Grund zum Schutz eine Diode vor der Batterie vorgesehen.&lt;br /&gt;
Ein Jumper zum trennen der Batterie ist auch vorhanden (weil diese trotz Diode leergesaugt wird).&lt;br /&gt;
&lt;br /&gt;
Die Stromaufnahme vom Board+Display (ohne Hintergrundbeleuchtung) beträgt ca. 9 mA.&lt;br /&gt;
&lt;br /&gt;
== Entwicklungsumgebung ==&lt;br /&gt;
&lt;br /&gt;
Als Entwicklungsumgebung habe ich KEIL uVision5 benutzt. Davon gibt es eine kostenlose&lt;br /&gt;
Version zum download die auch das XMC-2Go Board unterstützt.&lt;br /&gt;
Die max. 32k Flash Einschränkung ist für dieses Projekt nicht relevant.&lt;br /&gt;
&lt;br /&gt;
Unter dem gleichen Link wie uVision gibt es auch den USB-Treiber für das Debug-Interface&lt;br /&gt;
von Segger &amp;quot;JLink&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*KEIL uVision5 &amp;lt;ref&amp;gt;http://www2.keil.com/infineon/mdk/&amp;lt;/ref&amp;gt;&lt;br /&gt;
*Installationsanleitung &amp;lt;ref&amp;gt;http://mikrocontroller.bplaced.net/wordpress/?page_id=580&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== uPlay ==&lt;br /&gt;
&lt;br /&gt;
Die Software besteht im Prinzip aus zwei Teilen :&lt;br /&gt;
&lt;br /&gt;
1. Dem &amp;lt;b&amp;gt;&amp;quot;uPlay&amp;quot;&amp;lt;/b&amp;gt; System das die angeschlossene Hardware kontrolliert&lt;br /&gt;
(LCD, Buttons, UART usw). Über dieses System kann ein Basic-Programm&lt;br /&gt;
per UART nachgeladen werden und dieses startet dann auch den Basic-Interpreter.&lt;br /&gt;
&lt;br /&gt;
2. Dem Basic-Interpreter &amp;quot;uBasic&amp;quot; der ein Basic-Program das im RAM liegt&lt;br /&gt;
übersetzt und abarbeitet.&lt;br /&gt;
&lt;br /&gt;
=== Startmenu/Kommunikation ===&lt;br /&gt;
&lt;br /&gt;
Nach dem PowerOn vom &amp;lt;b&amp;gt;&amp;quot;uPlay&amp;quot;&amp;lt;/b&amp;gt; steht das System im &amp;quot;Standby-Mode&amp;quot; und es wird&lt;br /&gt;
ein Menu auf dem Display angezeigt.&lt;br /&gt;
&lt;br /&gt;
Man kann hier entweder ein Basic-Programm aus dem internen Flash der CPU starten oder&lt;br /&gt;
ein schon geladenes Programm aus dem RAM. Die Auswahl erfolgt durch die Buttons &amp;quot;Left/Right/Enter&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Zur Demo habe ich eine Version von dem Spiel &amp;quot;Snake&amp;quot; programmiert und als Basic-Programm ins Flash gepackt.&lt;br /&gt;
Das Programm liegt als Quellcode in der Datei : &amp;quot;bas_snake.h&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Alternativ kann auch eine UART Verbindung aufgebaut werden. Mit dem UART-Befehl &amp;quot;HELP&amp;quot;&lt;br /&gt;
kann man die Versions-Nummer vom &amp;quot;uPlay&amp;quot; und vom &amp;quot;uBasic&amp;quot; auslesen.&lt;br /&gt;
&lt;br /&gt;
=== Basic-Programm download ===&lt;br /&gt;
&lt;br /&gt;
Um ein Basic-Programm zum &amp;lt;b&amp;gt;&amp;quot;uPlay&amp;quot;&amp;lt;/b&amp;gt; zu senden, muss dieses zuerst im &amp;quot;Standby-Mode&amp;quot; stehen.&lt;br /&gt;
Danach kann mit dem UART-Befehl &amp;quot;LOAD&amp;quot; in den &amp;quot;Load-Mode&amp;quot; gewechselt werden.&lt;br /&gt;
(Es wird jetzt auf die Übertragung von einem Basic-Programm gewartet)&lt;br /&gt;
&lt;br /&gt;
Während der Übertragung wird die Anzahl der empfangenen Zeilen auf dem Display angezeigt.&lt;br /&gt;
Um das Ende der Übertragung zu signalisieren muss ein &amp;quot;END&amp;quot; übertragen werden.&lt;br /&gt;
Damit wird wieder in den &amp;quot;Standby-Mode&amp;quot; gewechselt.&lt;br /&gt;
&lt;br /&gt;
Das Programm steht jetzt im RAM und kann entweder mit dem UART-Befehl &amp;quot;RUN&amp;quot; oder über&lt;br /&gt;
die Buttons gestartet werden.&lt;br /&gt;
&lt;br /&gt;
Hinweis : das Basic-Programm wird solange abgearbeitet, bis es zu dem Basic-Befehl &amp;quot;END&amp;quot; kommt&lt;br /&gt;
oder der &amp;quot;Break-Button&amp;quot; betätigt wird.&lt;br /&gt;
&lt;br /&gt;
Hier ein Bild wie ein Download per UART und die Ausgabe dazu aussieht.&lt;br /&gt;
Das ganze funktioniert auch nur mit dem reinen XMC-2Go (also auch ohne Display und Buttons).&lt;br /&gt;
&lt;br /&gt;
[[Datei:Terminal_Test.jpg|center|miniatur|Test per Terminal-Programm]]&lt;br /&gt;
&lt;br /&gt;
=== Status-LEDs ===&lt;br /&gt;
&lt;br /&gt;
Die beiden LEDs auf dem XMC-2Go zeigen den aktuellen Status vom System an :&lt;br /&gt;
&lt;br /&gt;
*LED1 blinkt zyklisch einmal pro Sekunde (Heartbeat)&lt;br /&gt;
*LED2 blinkt 3mal pro Sekunde wenn ein Basic-Programm abgearbeitet wird&lt;br /&gt;
&lt;br /&gt;
=== DISPLAY ===&lt;br /&gt;
&lt;br /&gt;
Für das Display gibt es einen 504 Byte großen Graphic-Puffer im RAM (84 x 48 Pixel).&lt;br /&gt;
Die Befehle aus dem Basic-Programm schreiben/lesen in diesen Puffer&lt;br /&gt;
und alle 100ms wird der komplette Inhalt vom Puffer zum Display gesendet.&lt;br /&gt;
&lt;br /&gt;
Im Moment ist nur eine Schriftart implementiert in der Größe 6x8 Pixel.&lt;br /&gt;
Damit passen 6 Zeilen auf das Display mit je 14 Zeichen.&lt;br /&gt;
&lt;br /&gt;
=== ADC ===&lt;br /&gt;
&lt;br /&gt;
Der ADC wird im Single-Conversation-Mode betrieben, wird also bei jedem Aufruf&lt;br /&gt;
vom Basic-Programm aus neu gestartet.&lt;br /&gt;
&lt;br /&gt;
=== GPIOs ===&lt;br /&gt;
&lt;br /&gt;
Die Basic-Befehle für Digital-IN, Digital-OUT werden direkt an die entsprechenden&lt;br /&gt;
GPIOs weitergegeben.&lt;br /&gt;
&lt;br /&gt;
Durch die relativ langsame Zykluszeit vom Basic-Programm ist ein entprellen&lt;br /&gt;
der Eingänge nicht notwendig. (zumindest denke ich das :-)&lt;br /&gt;
&lt;br /&gt;
=== UART ===&lt;br /&gt;
&lt;br /&gt;
Die UART ist die standard Ausgabe der &amp;quot;PRINT&amp;quot;-Befehle vom Basic-Programm aus.&lt;br /&gt;
&lt;br /&gt;
Ein &amp;quot;10 PRINT 123&amp;quot; sendet also den String &amp;quot;123&amp;quot; über die UART.&lt;br /&gt;
Als Stringendekennung wird ein CarriageReturn+Linefeed (0x0D,0x0A) angehängt.&lt;br /&gt;
&lt;br /&gt;
Beim senden von Daten vom PC an das &amp;lt;b&amp;gt;&amp;quot;uPlay&amp;quot;&amp;lt;/b&amp;gt; muss der PC ein CarriageReturn (0x0D)&lt;br /&gt;
am Ende von jedem String anhängen.&lt;br /&gt;
&lt;br /&gt;
== uBasic ==&lt;br /&gt;
&lt;br /&gt;
Der Basic-Interpreter von Adam Dunkels ist sehr einfach aufgebaut und die Funktionsweise&lt;br /&gt;
ist auch ohne Dokumentation leicht per Debugger zu verstehen.&lt;br /&gt;
&lt;br /&gt;
*uBascic von Adam Dunkels&amp;lt;ref&amp;gt;http://dunkels.com/adam/ubasic/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieser Interpreter wurde schon von vielen als Basis benutzt. Bekannt aus diesem Forum&lt;br /&gt;
sind z.B. die Portierungen für den AVR von Rene Boellhoff und Uwe Berger.&lt;br /&gt;
&lt;br /&gt;
*AVR-Basic&amp;lt;ref&amp;gt;http://www.mikrocontroller.net/svnbrowser/avr-basic/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ich selbst habe nur mit der original Version von Adam Dunkels gearbeitet und wollte&lt;br /&gt;
diese so wenig wie möglich abändern um den einfachen Aufbau nicht zu verlieren.&lt;br /&gt;
&lt;br /&gt;
Der Interpreter besteht nur aus 4 Files :&lt;br /&gt;
Dem &amp;quot;uBasic.c.+h&amp;quot; File und dem &amp;quot;Tokenizer.c+h&amp;quot; File.&lt;br /&gt;
&lt;br /&gt;
Im &amp;quot;Tokenizer&amp;quot; sind alle Basic-Sprachbefehle hinterlegt. Dieser liefert beim Aufruf der Funktion &amp;quot;get_next_token&amp;quot;&lt;br /&gt;
zurück, um welchen Befehl oder welches Zeichen es sich im geladenen Basic-Programm gerade handelt.&lt;br /&gt;
Der Rückgabewert besteht aus einem einzelnen Bytewert, dem &amp;quot;Token&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Um z.B. die Basic-Zeile &amp;quot;10 PRINT a&amp;quot; zu zerlegen, müsste man den Tokenizer 3mal aufrufen&lt;br /&gt;
und dieser würde 3 Tokens zurückliefert mit den Namen : &amp;quot;LINENUM&amp;quot; , &amp;quot;PRINT&amp;quot; , &amp;quot;VARIABLE&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Das &amp;quot;uBasic&amp;quot; kümmert sich um das aufrufen vom Tokenizer und entscheidet je nach empfangenen Token&lt;br /&gt;
was daraufhin gemacht werden soll. Hier sind die Funktionen aller Basic-Befehle &amp;quot;ausprogrammiert&amp;quot; das bedeutet&lt;br /&gt;
in unserem Beispiel würde die Funktion &amp;quot;print&amp;quot; angesprungen werden, der Inhalt der Variable &amp;quot;a&amp;quot;&lt;br /&gt;
würde ausgelesen und per UART versendet werden.&lt;br /&gt;
&lt;br /&gt;
Das ganze ist recht simpel gestrickt und kann dementsprechend leicht geändert und angepasst werden.&lt;br /&gt;
&lt;br /&gt;
=== Anpassungen ===&lt;br /&gt;
&lt;br /&gt;
Die ersten Änderungen die ich am uBasic gemacht habe, waren reine Bugfixes :&lt;br /&gt;
*Der Variablen Name &amp;quot;a&amp;quot; konnte nicht benutzt werden&lt;br /&gt;
*Die Funktion &amp;quot;IF/THEN/ELSE&amp;quot; hat nicht richtig gearbeitet&lt;br /&gt;
&lt;br /&gt;
Als zweiten Schritt habe ich das uBasic etwas &amp;quot;erweitert&amp;quot; :&lt;br /&gt;
*Keine Unterscheidung zwischen Groß- und Kleinschreibung der Basic-Befehle (z.B. &amp;quot;10 IF a&amp;gt;5 Then goto 100 else GoSub 200&amp;quot;) &lt;br /&gt;
*Bei der IF-Anweisung kann das THEN entfallen (z.B. &amp;quot;10 IF a&amp;gt;5 GOTO 100&amp;quot;)&lt;br /&gt;
*Variablen und Ausdrücke können negativ sein (z.B. &amp;quot;10 a = -5&amp;quot;)&lt;br /&gt;
*Den Wertebereich der Variabeln von char auf int vergrößert&lt;br /&gt;
*Die FOR/NEXT-Schleife so angepasst, das sie auch decrementieren kann (z.B. &amp;quot;10 FOR a=8 TO 2&amp;quot;)&lt;br /&gt;
*Die FOR/NEXT-Schleife um &amp;quot;STEP&amp;quot; erweitert. (z.B. &amp;quot;10 FOR a=2 TO 13 STEP 3&amp;quot;)&lt;br /&gt;
*Den Befehl &amp;quot;REM&amp;quot; hinzugefügt für Bemerkungstexte (z.B. &amp;quot;10 REM -BEISPIELPROGRAMM-&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Der dritte Schritt war das vergrößern vom Basic-Sprachumfang um die angeschlossene Hardware zu steuern.&lt;br /&gt;
Dazu gehören folgende Punkte :&lt;br /&gt;
*System-Befehle : PAUSE / CLRTIC / GETTIC&lt;br /&gt;
*LCD-Befehle : INVERSE / CLS / LCD / SETPX / CLRPX / GETPX / LINE / RECT / FILL / CIRCLE / CLRCOLL / GETCOLL&lt;br /&gt;
*GPIO-Befehle : IN / OUT&lt;br /&gt;
*ADC-Befehle : ADC&lt;br /&gt;
&lt;br /&gt;
=== Verbesserungen ===&lt;br /&gt;
&lt;br /&gt;
Hier wäre eigentlich die Arbeit am Basic-Interpreter fertig gewesen (und hat auch soweit funktioniert)&lt;br /&gt;
wenn nicht die Durchlaufzeit der Basic-Programme erbärmlich langsam gewesen wäre.&lt;br /&gt;
&lt;br /&gt;
Der Tokenizer der das Basic-Ascii-Programm durchackert muss jedes einzelne Zeichen untersuchen&lt;br /&gt;
um aus dem String &amp;quot;print&amp;quot; (in allen möglichen Schreibweisen) das Token &amp;quot;PRINT&amp;quot; zu ermitteln.&lt;br /&gt;
Und das bei jedem Durchlauf obwohl sich der Befehl nie mehr ändert.&lt;br /&gt;
&lt;br /&gt;
Auch das Suchen der Zeilen-Nummern bei &amp;quot;GOTO/GOSUB/NEXT/RETURN&amp;quot; verbraucht immens viel zeit,&lt;br /&gt;
weil jedes Mal von der ersten Zeile des Basic-Programmes aus gesucht wird.&lt;br /&gt;
&lt;br /&gt;
Ich habe mich darauf hin entschlossen diese zwei Sachen zu verbessern und einen &amp;quot;Pre-Parser&amp;quot; einzubauen,&lt;br /&gt;
der vor dem eigentlichen Programmstart einmal abgearbeitet wird. Dieser Eingriff ändert die Original-Version&lt;br /&gt;
nur minimal aber das Ergebnis ist um ein vielfaches besser.&lt;br /&gt;
&lt;br /&gt;
Der Pre-Parser ist 3 Teilig aufgebaut und hat folgende Aufgaben :&lt;br /&gt;
&lt;br /&gt;
==== 1. Schritt : Ersetzung aller Basic-Keywords ====&lt;br /&gt;
Zuerst wird das komplette Basic-Programm nach Ascii-Keywords durchsucht (z.B. &amp;quot;PRINT&amp;quot; oder &amp;quot;GOTO&amp;quot;)&lt;br /&gt;
und durch einen zwei Byte Hex-Code ersetzt. Da jedes Keyword mindestens zwei Zeichen lang sein muss,&lt;br /&gt;
ist das kein Problem. Das erste Byte ist eine Kennungs-ID mit dem Wert 0x01. An dieser Kennung&lt;br /&gt;
erkennt der Parser später das es sich um eine Ersetzung handelt. Das zweite Byte ist direkt die&lt;br /&gt;
Array-Nummer vom gefundenen Keyword. Das bedeutet der Parser muss später nicht mit einer For-Schleife&lt;br /&gt;
das passende Keyword suchen, sondern kann direkt mit der Array-Nummer arbeiten.&lt;br /&gt;
(damit es zu keiner Verwechslung mit anderen Ascii-Zeichen kommt, wird zusätzlich das Bit7 gesetzt)&lt;br /&gt;
&lt;br /&gt;
==== 2. Schritt : Speichern der Sprungziele ====&lt;br /&gt;
In diesem Schritt wird das Basic-Programm nach Keywords durchsucht, die ein Sprung zur folge haben&lt;br /&gt;
(also &amp;quot;GOTO&amp;quot;,&amp;quot;GOSUB&amp;quot;,&amp;quot;FOR&amp;quot;). Bei so einem Keyword, wird das Sprungziel (bzw. Rücksprungziel)&lt;br /&gt;
als Zeilen-Nummer in einem Array gespeichert. Doppelte Einträge werden abgefangen.&lt;br /&gt;
&lt;br /&gt;
==== 3. Schritt : Suchen der Pointer-Adressen der Sprungziele ====&lt;br /&gt;
Hier wird das Programm noch mal durchsucht und zwar um rauszufinden welche Programm-Adresse welchem&lt;br /&gt;
Sprungziel entspricht. Es werden also zu allen gefundenen Sprungzielen die passenden Einsprungadressen gespeichert.&lt;br /&gt;
Später im eigentlichen Programmlauf wird dann z.B. bei einem &amp;quot;GOTO 100&amp;quot; im Array nachgesehen welche Pointeradresse&lt;br /&gt;
die Zeilen-Nummer 100 hat und es wird direkt dort mit dem Programmlauf weitergemacht.&lt;br /&gt;
&lt;br /&gt;
==== Ergebnis ====&lt;br /&gt;
&lt;br /&gt;
Das Ergebnis vom Pre-Parsing ist eine enorme Geschwindigkeitsverbesserung im Vergleich zur Ur-Version von Adam Dunkels.&lt;br /&gt;
hier eine Vergleichsmessung mit zwei For-Schleifen die 1000 mal eine Subroutine mit einer Print-Anweisung aufrufen :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10 REM =============&lt;br /&gt;
15 REM Speed-Test&lt;br /&gt;
20 REM =============&lt;br /&gt;
25 PRINT &amp;quot;Start&amp;quot;&lt;br /&gt;
30 CLRTIC&lt;br /&gt;
35 FOR n = 0 to 10&lt;br /&gt;
40 FOR m = 0 to 100&lt;br /&gt;
45 GOSUB 100&lt;br /&gt;
50 NEXT m&lt;br /&gt;
55 NEXT n&lt;br /&gt;
60 GETTIC a&lt;br /&gt;
65 PRINT &amp;quot;Stop&amp;quot;&lt;br /&gt;
70 PRINT a,&amp;quot;ms&amp;quot;&lt;br /&gt;
75 END&lt;br /&gt;
80 REM --------------&lt;br /&gt;
100 PRINT n,m&lt;br /&gt;
110 RETURN&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dieses Programm dauert ohne Pre-Parser 45 Sekunden und mit Pre-Parser nur noch 1,8 Sekunden !&lt;br /&gt;
Das ist 25 mal so schnell. Mit dieser Geschwindigkeit lassen sich auch kleine Spiele realisieren.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
Hier eine kurz Zusammenfassung über die Syntax vom uBasic :&lt;br /&gt;
&lt;br /&gt;
*Jede Zeile muss mit einer eindeutigen Zeilen-Nummer beginnen&lt;br /&gt;
*In jeder Zeile darf nur ein Befehl stehen (Ausnahme : IF/ELSE)&lt;br /&gt;
*Variablen-Namen bestehen aus einem einzelnen Kleinbuchstaben&lt;br /&gt;
*Es dürfen nur Ganzzahlen verwendet werden (-99999 bis 99999)&lt;br /&gt;
*Sprungziele müssen aus reinen Zahlen bestehen (keine Variablen oder Rechnungen)&lt;br /&gt;
*Strings werden in Anführungszeichen gefasst (z.B. 10 PRINT &amp;quot;Hallo&amp;quot;)&lt;br /&gt;
*Rechenoperatoren : -,+,*,/,%&lt;br /&gt;
*Vergleichsoperatoren : =,&amp;lt;,&amp;gt;&lt;br /&gt;
*Logik-Operationen : &amp;amp;,|&lt;br /&gt;
*Klammern : (,)&lt;br /&gt;
&lt;br /&gt;
Es folgt eine Liste aller im Moment unterstützten Basic-Keywords :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;uBasic-Keywords&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! Grundbefehle || Bedeutung || Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| REM || Kommentar || 10 REM Testprogramm&lt;br /&gt;
|-&lt;br /&gt;
| LET || Variablenzuweisung &amp;lt;br/&amp;gt; (optional) || 10 LET a=5 &amp;lt;br/&amp;gt; 20 b = -4&lt;br /&gt;
|-&lt;br /&gt;
| PRINT || Ausgabe per UART || 10 PRINT &amp;quot;Hallo&amp;quot; &amp;lt;br/&amp;gt; 20 PRINT 123&lt;br /&gt;
|-&lt;br /&gt;
| IF/THEN/ELSE || Bedingung &amp;lt;br/&amp;gt; (THEN ist optional) || 10 IF a&amp;gt;3 THEN PRINT b &amp;lt;br/&amp;gt; 20 IF a&amp;gt;5 PRINT &amp;quot;NEIN&amp;quot; ELSE GOTO 100&lt;br /&gt;
|-&lt;br /&gt;
| FOR/TO/STEP/NEXT || Schleife &amp;lt;br/&amp;gt; (STEP ist optional) || 10 FOR i=2 TO 20 STEP 5 &amp;lt;br/&amp;gt; 20 PRINT i &amp;lt;br/&amp;gt; 30 NEXT i&lt;br /&gt;
|-&lt;br /&gt;
| GOTO || Sprung || 10 GOTO 100&lt;br /&gt;
|-&lt;br /&gt;
| GOSUB/RETURN || Sprung mit &amp;lt;br/&amp;gt; Rücksprung || 10 IF a&amp;gt;3 GOSUB 1000 &amp;lt;br/&amp;gt; 20 PRINT &amp;quot;nach Return&amp;quot; &amp;lt;br/&amp;gt; 30 END &amp;lt;br/&amp;gt; 1000 PRINT &amp;quot;Subroutine&amp;quot; &amp;lt;br/&amp;gt; 1010 RETURN&lt;br /&gt;
|-&lt;br /&gt;
| END || Ende vom Basic Programm || 10 PRINT a &amp;lt;br/&amp;gt; 20 END&lt;br /&gt;
|-&lt;br /&gt;
! System-Befehle || Bedeutung || Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| PAUSE || Pause &amp;lt;br/&amp;gt; (Zeit in ms) || 10 PAUSE 100&lt;br /&gt;
|-&lt;br /&gt;
| CLRTIC || löschen vom Timer || 10 CLRTIC&lt;br /&gt;
|-&lt;br /&gt;
| GETTIC || auslesen vom Timer &amp;lt;br/&amp;gt; (Zeit in ms) || 10 GETTIC a &amp;lt;br/&amp;gt; 20 PRINT a&lt;br /&gt;
|-&lt;br /&gt;
! LCD-Befehle || Bedeutung || Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| INVERSE || Mode der Ausgabe &amp;lt;br/&amp;gt; 0=normal &amp;lt;br/&amp;gt; 1=invers || 10 INVERS 0&lt;br /&gt;
|-&lt;br /&gt;
| CLS || ClearScreen || 10 CLS&lt;br /&gt;
|-&lt;br /&gt;
| LCD || Ausgabe auf LCD &amp;lt;br/&amp;gt; (an x,y Position) || 10 LCD x,y,&amp;quot;Hallo&amp;quot; &amp;lt;br/&amp;gt; 20 LCD 0,0,123&lt;br /&gt;
|-&lt;br /&gt;
| SETPX || setzen eines Pixels &amp;lt;br/&amp;gt; (an x,y Position) || 10 SETPX x,y&lt;br /&gt;
|-&lt;br /&gt;
| CLRPX || löschen eines Pixels &amp;lt;br/&amp;gt; (an x,y Position) || 10 CLRPX x,y&lt;br /&gt;
|-&lt;br /&gt;
| GETPX || auslesen eines Pixels &amp;lt;br/&amp;gt; (an x,y Position, Wert=[0,1]) || 10 GETPX a=x,y &amp;lt;br/&amp;gt; 20 PRINT a&lt;br /&gt;
|-&lt;br /&gt;
| LINE || zeichnen einer Line &amp;lt;br/&amp;gt; (von x,y nach a,b) || 10 LINE x,y,a,b&lt;br /&gt;
|-&lt;br /&gt;
| RECT || zeichnen eines Rechtecks &amp;lt;br/&amp;gt; (von x,y nach a,b) || 10 RECT x,y,a,b&lt;br /&gt;
|-&lt;br /&gt;
| FILL || füllen eines Rechtecks &amp;lt;br/&amp;gt; (von x,y nach a,b) || 10 FILL x,y,a,b&lt;br /&gt;
|-&lt;br /&gt;
| CIRCLE || zeichnen eines Kreises &amp;lt;br/&amp;gt; (an x,y mit Radius r) || 10 CIRCLE x,y,r&lt;br /&gt;
|-&lt;br /&gt;
| CLRCOLL || loeschen vom Kollisions Ergebnis &amp;lt;br/&amp;gt; vor einer Zeichenoperation || 10 CLRCOLL &amp;lt;br/&amp;gt; 20 SETPX 5,6&lt;br /&gt;
|-&lt;br /&gt;
| GETCOLL || auslesen vom Kollisions Ergebnis &amp;lt;br/&amp;gt; nach einer Zeichenoperation &amp;lt;br/&amp;gt; (1=kollision) || 10 CLRCOLL &amp;lt;br/&amp;gt; 20 SETPX 5,6 &amp;lt;br/&amp;gt; 30 GETCOLL a &amp;lt;br/&amp;gt; 40 PRINT a&lt;br /&gt;
|-&lt;br /&gt;
! GPIO-Befehle || Bedeutung || Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| IN || einlesen eines Input-Kanals &amp;lt;br/&amp;gt; (c=Channel [0...4], Wert=[0,1])  || 10 IN a=c &amp;lt;br/&amp;gt; 20 PRINT a&lt;br /&gt;
|-&lt;br /&gt;
| OUT || setzen eines Output-Kanals &amp;lt;br/&amp;gt; (c=Channel [0...1], Wert=[0,1,2]) || 10 OUT c,1&lt;br /&gt;
|-&lt;br /&gt;
! ADC-Befehle || Bedeutung || Beispiel&lt;br /&gt;
|-&lt;br /&gt;
| ADC || einlesen eines ADC-Kanals &amp;lt;br/&amp;gt; (c=Channel [0], Wert=[0...1023]) || 10 ADC a=c &amp;lt;br/&amp;gt; 20 PRINT a&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Befehlsbeschreibungen ===&lt;br /&gt;
&lt;br /&gt;
Die meisten Befehle sollten man auch ohne Beschreibung verstehen. Hier ein paar Hinweise für Befehle&lt;br /&gt;
die ich mir selbst ausgedacht habe und deren Funktionsweise nicht so offensichtlich sind :&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;PRINT&amp;quot; ====&lt;br /&gt;
Beim &amp;quot;PRINT&amp;quot; können mehrere Ausgaben hintereinander gehängt werden z.B. &amp;lt;10 PRINT &amp;quot;Zeit=&amp;quot; a &amp;quot;ms&amp;quot;&amp;gt; ergibt &amp;quot;Zeit=123ms&amp;quot;.&lt;br /&gt;
Mit einem &amp;quot;,&amp;quot; kann ein Space als Trennzeichen eingefügt werden &amp;lt;10 PRINT &amp;quot;Zeit=&amp;quot;,a,&amp;quot;ms&amp;quot;&amp;gt; ergibt &amp;quot;Zeit = 123ms&amp;quot;.&lt;br /&gt;
Ein &amp;quot;;&amp;quot; am Zeilenende verhindert das senden vom Linefeed.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;CLRTIC&amp;quot;,&amp;quot;GETTIC&amp;quot; ====&lt;br /&gt;
Der Befehl &amp;quot;GETTIC&amp;quot; liefert die Zeit in ms die seit dem letzten &amp;quot;CLRTIC&amp;quot; vergangen ist. Die Zeitmessung&lt;br /&gt;
ist nicht besonders genau, weil der interne Quarz der CPU nicht sehr exakt läuft.&lt;br /&gt;
&lt;br /&gt;
Dieser Befehl kann auch als &amp;quot;Zufallsgenerator&amp;quot; missbraucht werden. z.B. durch Auswertung vom niederwertigsten Bit&lt;br /&gt;
beim einlesen von GETTIC (da die Umlaufzeit nie 100% gleich ist.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;IN&amp;quot; ====&lt;br /&gt;
Der Befehl &amp;quot;IN&amp;quot; erwartet eine Kanal-Nummer, um die 5 verschiedenen INPUT-Pins zu unterscheiden.&lt;br /&gt;
Ein &amp;quot;10 IN a=0&amp;quot; ließt also den INPUT-Pin mit der Kanal-Nr &amp;quot;0&amp;quot; ein.&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;OUT&amp;quot; ====&lt;br /&gt;
Der Befehlt &amp;quot;OUT&amp;quot; erwartet wie &amp;quot;IN&amp;quot; eine Kanal-Nummer und zusätzlich den Pegel auf den geschaltet werden soll.&lt;br /&gt;
Wobei &amp;quot;0=Lo_Pegel&amp;quot;, &amp;quot;1=Hi_Pegel&amp;quot;, &amp;quot;2=Pegel_toggeln&amp;quot; entspricht&lt;br /&gt;
&lt;br /&gt;
==== &amp;quot;CRLCOLL&amp;quot;,&amp;quot;GETCOLL&amp;quot; ====&lt;br /&gt;
Um eine Kollision beim zeichnen zu erkennen, muss der Kollisionsmerker zuerst gelöscht werden mit &amp;quot;CLRCOLL&amp;quot;&lt;br /&gt;
und nach dem zeichnen kann dann das Ergebnis per &amp;quot;GETCOLL&amp;quot; ausgelesen werden.&lt;br /&gt;
Eine Kollision hat dann stattgefunden, wenn ein Pixel auf dem LCD gesetzt wurde, das vorher schon gesetzt war.&lt;br /&gt;
&lt;br /&gt;
=== Standalone Version ===&lt;br /&gt;
&lt;br /&gt;
Wer den reinen Basic-Interpreter benutzen will (z.B. auf einer anderen CPU) kann das relativ einfach machen.&lt;br /&gt;
&lt;br /&gt;
==== 1. Einbinden der Files ====&lt;br /&gt;
Man braucht die 4 Files (uBasic.c+h, Tokenizer.c+h) die man in sein Projekt einbinden muss.&lt;br /&gt;
Diese befinden sich im uPlay-Projekt im Unterordner &amp;quot;uBasic&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== 2. RAM-Puffer ====&lt;br /&gt;
Dann wird zum speichern von einem Basic-Programm ein RAM-Buffer benötigt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
char ram_buffer[1024]; // 1k Puffer fuer Basic-Programm&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesen RAM-Buffer muss man irgendwie das Basic-Programm bekommen&lt;br /&gt;
(z.B. durch kopieren aus dem Flash, oder per UART von einem PC usw)&lt;br /&gt;
&lt;br /&gt;
==== 3. Notwendige Funktionen ====&lt;br /&gt;
Was jetzt noch fehlt sind die Funktionen die vom Basic-Programm aus&lt;br /&gt;
aufgerufen werden können und die Hardware betreffen.&lt;br /&gt;
&lt;br /&gt;
Dazu sind diese Prototypen (und die entsprechenden Funktionen) notwendig :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void XMC2GO_Systic_Pause_ms(uint32_t ms);&lt;br /&gt;
void XMC2GO_Systic_ClrTic(void);&lt;br /&gt;
uint16_t XMC2GO_Systic_GetTic(void);&lt;br /&gt;
void XMC2GO_LCD_Inverse(uint8_t mode);&lt;br /&gt;
void XMC2GO_LCD_Clear(void);&lt;br /&gt;
void XMC2GO_LCD_SetPixel(uint8_t xpos, uint8_t ypos);&lt;br /&gt;
void XMC2GO_LCD_ClearPixel(uint8_t xpos, uint8_t ypos);&lt;br /&gt;
uint8_t XMC2GO_LCD_ReadPixel(uint8_t xpos, uint8_t ypos);&lt;br /&gt;
void XMC2GO_LCD_DrawLine(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2);&lt;br /&gt;
void XMC2GO_LCD_DrawRect(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2);&lt;br /&gt;
void XMC2GO_LCD_DrawFill(uint8_t x1, uint8_t y1, uint8_t x2, uint8_t y2);&lt;br /&gt;
void XMC2GO_LCD_DrawCircle(uint8_t x0, uint8_t y0, uint8_t radius);&lt;br /&gt;
void XMC2GO_LCD_DrawString(uint8_t x, uint8_t y,char *ptr, UB_Font *font);&lt;br /&gt;
void XMC2GO_LCD_ClearCollision(void);&lt;br /&gt;
uint8_t XMC2GO_LCD_GetCollision(void);&lt;br /&gt;
uint8_t XMC2GO_DIn_Read(uint8_t din_name);&lt;br /&gt;
void XMC2GO_DOut_Lo(uint8_t dout_name);&lt;br /&gt;
void XMC2GO_DOut_Hi(uint8_t dout_name);&lt;br /&gt;
void XMC2GO_DOut_Toggle(uint8_t dout_name);&lt;br /&gt;
uint16_t XMC2GO_Adc_Read(uint8_t adc_nr);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Natürlich müssen nicht alle Funktionen benutzt werden. Wer z.B. gar kein LCD anschließen will,&lt;br /&gt;
kann alle Befehle die das LCD betreffen aus dem Quellcode löschen.&lt;br /&gt;
&lt;br /&gt;
==== 4. Interpreter starten ====&lt;br /&gt;
Zum Schluss muss der Interpreter gestartet werden, dazu sind eigentlich nur 5 Zeilen Code notwendig :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// init vom Basic-Programm (und start vom Pre-Compiler)&lt;br /&gt;
ubasic_init(ram_buffer);&lt;br /&gt;
&lt;br /&gt;
if(!ubasic_failed()) {&lt;br /&gt;
  // abarbeiten vom Basic-Programm&lt;br /&gt;
  do {&lt;br /&gt;
    ubasic_run();&lt;br /&gt;
  } while(!ubasic_finished()); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Für den Fall eines Endlosprogrammes z.B. (&amp;quot;10 GOTO 10&amp;quot;) sollte man&lt;br /&gt;
noch eine Möglichkeit finden die DO-WHILE zu beenden.&lt;br /&gt;
&lt;br /&gt;
=== Einschränkungen ===&lt;br /&gt;
&lt;br /&gt;
Natürlich gibt es bei einer so einfachen Umsetzung eines Basic-Interpreters&lt;br /&gt;
einige Einschränkungen :&lt;br /&gt;
&lt;br /&gt;
*Wegen dem Pre-Parser muss das Basic-Programm im RAM liegen&lt;br /&gt;
*Nur 26 Variabeln nutzbar (a...z)&lt;br /&gt;
*Keine &amp;quot;Float&amp;quot; Unterstützung&lt;br /&gt;
*Systembedingt keine sehr hohe Abarbeitungsgeschwindigkeit&lt;br /&gt;
&lt;br /&gt;
== Nachbau ==&lt;br /&gt;
&lt;br /&gt;
Mit Hilfe vom Schaltplan sollte ein Nachbau eigentlich keine Probleme machen,&lt;br /&gt;
so viele Bauteile sind es ja nicht.&lt;br /&gt;
&lt;br /&gt;
Hier ein paar Bilder von meinem Aufbau :&lt;br /&gt;
&lt;br /&gt;
=== Größe ===&lt;br /&gt;
&lt;br /&gt;
Die Platine hat die Abmessungen : 42mm x 70mm.&lt;br /&gt;
&lt;br /&gt;
=== Platzierung ===&lt;br /&gt;
&lt;br /&gt;
Die obere Hälfte nimmt das Display ein. Dadurch das es gesockelt ist, bleibt&lt;br /&gt;
unter dem Display genug Platz für das XMC-2Go und der Batterie bzw dem Batteriehalter.&lt;br /&gt;
&lt;br /&gt;
Auf der unteren Hälfte sind die 6 Buttons verteilt. Rechts habe ich (liegend) die zwei&lt;br /&gt;
Jumper für die Hintergrundbeleuchtung und die Batterie angebracht.&lt;br /&gt;
&lt;br /&gt;
Die Kondensatoren und die Pins für die 3 nicht benötigten GPIOs (2xOUT, 1xADC) habe ich&lt;br /&gt;
der einfachheit halber gar nicht bestückt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:UPlay Aufbau.jpg|center|miniatur|Platzierung der Bauteile]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=== XMC-2Go ===&lt;br /&gt;
&lt;br /&gt;
Die freie Höhe unter dem Display ist begrenzt. Man kann das XMC-2Go entweder direkt auf die Platine löten&lt;br /&gt;
oder (wie ich) die Leisten von IC-Sockeln benutzen um das Board trennbar zu halten.&lt;br /&gt;
&lt;br /&gt;
Da ich die Sockel vor dem Aufbau vom &amp;lt;b&amp;gt;&amp;quot;uPlay&amp;quot;&amp;lt;/b&amp;gt; schon in das XMC-2Go gelötet hatte und ich die nicht mehr&lt;br /&gt;
rauslöten wollte, hab ich in meiner Version das ganze &amp;quot;über Kopf&amp;quot; montiert. Das sieht zwar etwas komisch aus&lt;br /&gt;
aber funktioniert genauso.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Xmc2go.jpg|center|miniatur|XMC 2Go]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:Xmc2go montiert.jpg|center|miniatur|uPlay mit XMC 2Go]]&lt;br /&gt;
&lt;br /&gt;
=== Display ===&lt;br /&gt;
&lt;br /&gt;
Das Display verdeckt, nach dem es aufgesteckt ist, das XMC-2Go und die Batterie.&lt;br /&gt;
&lt;br /&gt;
[[Datei:UPlay komplett.jpg|center|miniatur|Das fertige uPlay]]&lt;br /&gt;
&lt;br /&gt;
=== Funktionstest ===&lt;br /&gt;
&lt;br /&gt;
Hier ein Basic-Programm, das die Funktion aller 5 Buttons testet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
10 REM =================&lt;br /&gt;
15 REM uPlay Button-Test&lt;br /&gt;
20 REM =================&lt;br /&gt;
30 CLS&lt;br /&gt;
35 INVERSE 1&lt;br /&gt;
40 LCD 6,0, &amp;quot;   uPlay   &amp;quot;&lt;br /&gt;
45 LCD 6,10,&amp;quot;Button-Test&amp;quot;&lt;br /&gt;
50 INVERSE 0&lt;br /&gt;
100 IN a=0&lt;br /&gt;
110 IF a=0 LCD 15,30,&amp;quot;U&amp;quot; ELSE LCD 15,30,&amp;quot;-&amp;quot;&lt;br /&gt;
120 IN a=1&lt;br /&gt;
130 IF a=0 LCD 25,30,&amp;quot;D&amp;quot; ELSE LCD 25,30,&amp;quot;-&amp;quot;&lt;br /&gt;
140 IN a=2&lt;br /&gt;
150 IF a=0 LCD 35,30,&amp;quot;L&amp;quot; ELSE LCD 35,30,&amp;quot;-&amp;quot;&lt;br /&gt;
160 IN a=3&lt;br /&gt;
170 IF a=0 LCD 45,30,&amp;quot;R&amp;quot; ELSE LCD 45,30,&amp;quot;-&amp;quot;&lt;br /&gt;
180 IN a=4&lt;br /&gt;
190 IF a=0 LCD 55,30,&amp;quot;E&amp;quot; ELSE LCD 55,30,&amp;quot;-&amp;quot;&lt;br /&gt;
200 GOTO 100&lt;br /&gt;
210 END&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ausblick ==&lt;br /&gt;
&lt;br /&gt;
Weil mir das ganze Projekt so viel Spaß gemacht hat, und es nicht sehr viel mehr Aufwand ist,&lt;br /&gt;
werde ich das ganze wahrscheinlich noch auf eine STM32F4 CPU portieren.&lt;br /&gt;
&lt;br /&gt;
Dadurch sollte sich die Zykluszeit noch mal mindestens um den Faktor 5 erhöhen.&lt;br /&gt;
&lt;br /&gt;
Anmerkung: Inzwischen habe ich das Ganze auf die &#039;&#039;&#039;STM32F407&#039;&#039;&#039;, &#039;&#039;&#039;STM32F429&#039;&#039;&#039;  und &#039;&#039;&#039;STM32F756&#039;&#039;&#039; CPUs portiert:&lt;br /&gt;
* [http://mikrocontroller.bplaced.net/wordpress/?page_id=535 95-uBasic-Library (STM32F407)]&lt;br /&gt;
* [http://mikrocontroller.bplaced.net/wordpress/?page_id=2001 28-uBasic-Library (STM32F429)]&lt;br /&gt;
* [http://mikrocontroller.bplaced.net/wordpress/?page_id=1410 12-uBasic-Library (STM32F746)]&lt;br /&gt;
&lt;br /&gt;
== Anmerkungen ==&lt;br /&gt;
&lt;br /&gt;
Wie immer bei &amp;quot;Bastelprojekten&amp;quot; können Fehler in der Hardware und Software nicht&lt;br /&gt;
ausgeschlossen werden. Ich habe zwar viele Testprogramme geschrieben&lt;br /&gt;
um das uBasic zu überprüfen aber es sind mit Sicherheit noch BUGs vorhanden.&lt;br /&gt;
&lt;br /&gt;
Wer Fehler findet (egal welcher Art) oder wem Verbesserungen einfallen&lt;br /&gt;
kann mir ja eine EMail schreiben (oder per PN eine Nachricht schicken)&lt;br /&gt;
&lt;br /&gt;
Fehler hier im Text können von euch selbst korrigiert werden ;-)&lt;br /&gt;
&lt;br /&gt;
Ich würde mich auch über Feedback freuen, wenn jemand das &amp;lt;b&amp;gt;&amp;quot;uPlay&amp;quot;&amp;lt;/b&amp;gt; erfolgreich&lt;br /&gt;
nachgebaut und ein eigenes Basic-Programm damit realisiert hat.&lt;br /&gt;
&lt;br /&gt;
Gruß und viel Spaß mit dem Projekt.&lt;br /&gt;
&lt;br /&gt;
-Uwe-&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
&lt;br /&gt;
* Schaltplan [[Datei:uPlay_v100.pdf]]&lt;br /&gt;
* Projektfiles [[Datei:Xmc2go_uPlay_v100.zip]]&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
&lt;br /&gt;
* Web-Blog vom Autor : http://mikrocontroller.bplaced.net/wordpress/&lt;br /&gt;
* Diskussion zu diesem Projekt: http://www.mikrocontroller.net/topic/333923&lt;br /&gt;
&lt;br /&gt;
== Web Ressourcen/Einzelnachweise ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:ARM]]&lt;br /&gt;
[[Kategorie:Infineon XMC]]&lt;br /&gt;
[[Kategorie:Infineon_XMC_Design_Contest_2014]]&lt;/div&gt;</summary>
		<author><name>172.26.42.160</name></author>
	</entry>
</feed>