<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="da">
	<id>https://www.htxarduino.dk/index.php?action=history&amp;feed=atom&amp;title=PIC_Opg_5_L%C3%B8sning</id>
	<title>PIC Opg 5 Løsning - Versionshistorie</title>
	<link rel="self" type="application/atom+xml" href="https://www.htxarduino.dk/index.php?action=history&amp;feed=atom&amp;title=PIC_Opg_5_L%C3%B8sning"/>
	<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=PIC_Opg_5_L%C3%B8sning&amp;action=history"/>
	<updated>2026-06-10T17:48:14Z</updated>
	<subtitle>Versionshistorie for denne side i HTX Arduino</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://www.htxarduino.dk/index.php?title=PIC_Opg_5_L%C3%B8sning&amp;diff=4876&amp;oldid=prev</id>
		<title>Bar: /* Alle typer i et program */</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=PIC_Opg_5_L%C3%B8sning&amp;diff=4876&amp;oldid=prev"/>
		<updated>2022-11-15T09:46:24Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Alle typer i et program&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;da&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Ældre version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen fra 15. nov. 2022, 11:46&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l231&quot;&gt;Linje 231:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linje 231:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Linje 52 udlæser på bit 2 og bit 3 hvilen type det er der vises ([[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;binær&lt;/del&gt;|binært tal]] fra 0-3) Linje 53-54 og linje 56-60 drejer sig om at finde ud af om der er en forkant på skift-inputtet. Linje 55 tæller typen en op når man har fundet en forkant.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Linje 52 udlæser på bit 2 og bit 3 hvilen type det er der vises ([[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;binære&lt;/ins&gt;|binært tal]] fra 0-3) Linje 53-54 og linje 56-60 drejer sig om at finde ud af om der er en forkant på skift-inputtet. Linje 55 tæller typen en op når man har fundet en forkant.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;På denne måde kan man skifte til den flip-flop man ønsker, og teste den, og så skifte videre til en anden type.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;På denne måde kan man skifte til den flip-flop man ønsker, og teste den, og så skifte videre til en anden type.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Bar</name></author>
	</entry>
	<entry>
		<id>https://www.htxarduino.dk/index.php?title=PIC_Opg_5_L%C3%B8sning&amp;diff=4875&amp;oldid=prev</id>
		<title>Bar: /* Alle typer i et program */</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=PIC_Opg_5_L%C3%B8sning&amp;diff=4875&amp;oldid=prev"/>
		<updated>2022-11-15T09:46:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Alle typer i et program&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;da&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Ældre version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen fra 15. nov. 2022, 11:46&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l231&quot;&gt;Linje 231:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linje 231:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Linje 52 udlæser på bit 2 og bit 3 hvilen type det er der vises ([[binært tal]] fra 0-3) Linje 53-54 og linje 56-60 drejer sig om at finde ud af om der er en forkant på skift-inputtet. Linje 55 tæller typen en op når man har fundet en forkant.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Linje 52 udlæser på bit 2 og bit 3 hvilen type det er der vises ([[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;binær|&lt;/ins&gt;binært tal]] fra 0-3) Linje 53-54 og linje 56-60 drejer sig om at finde ud af om der er en forkant på skift-inputtet. Linje 55 tæller typen en op når man har fundet en forkant.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;På denne måde kan man skifte til den flip-flop man ønsker, og teste den, og så skifte videre til en anden type.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;På denne måde kan man skifte til den flip-flop man ønsker, og teste den, og så skifte videre til en anden type.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l239&quot;&gt;Linje 239:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linje 239:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Der er også lavet en version all2-FF.jal, der har præcist den samme funktion, men som bare viser at man kan genbruge den kode der detekterer CLK-indgangen, så den ikke skal laves for de 3 typer der har en CLK-indgang.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Der er også lavet en version all2-FF.jal, der har præcist den samme funktion, men som bare viser at man kan genbruge den kode der detekterer CLK-indgangen, så den ikke skal laves for de 3 typer der har en CLK-indgang.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{PIC}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Opgaver}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategori:PIC_Opgave_Løsninger]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategori:PIC_Opgave_Løsninger]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Bar</name></author>
	</entry>
	<entry>
		<id>https://www.htxarduino.dk/index.php?title=PIC_Opg_5_L%C3%B8sning&amp;diff=4774&amp;oldid=prev</id>
		<title>Bar: 1 version importeret</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=PIC_Opg_5_L%C3%B8sning&amp;diff=4774&amp;oldid=prev"/>
		<updated>2022-11-15T07:09:08Z</updated>

		<summary type="html">&lt;p&gt;1 version importeret&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;da&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Ældre version&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versionen fra 15. nov. 2022, 09:09&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;da&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Ingen forskel)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Bar</name></author>
	</entry>
	<entry>
		<id>https://www.htxarduino.dk/index.php?title=PIC_Opg_5_L%C3%B8sning&amp;diff=4773&amp;oldid=prev</id>
		<title>_htx&gt;Bar: Oprettede siden med &#039;Denne side gennemgår løsningen for PIC Opgave 5 - Flip-flops ==Løsningsforslag for Flip-flop.==  Generelt er alle løsningerne laved med den sædvanlig opstartskode t...&#039;</title>
		<link rel="alternate" type="text/html" href="https://www.htxarduino.dk/index.php?title=PIC_Opg_5_L%C3%B8sning&amp;diff=4773&amp;oldid=prev"/>
		<updated>2013-08-20T10:33:14Z</updated>

		<summary type="html">&lt;p&gt;Oprettede siden med &amp;#039;Denne side gennemgår løsningen for &lt;a href=&quot;/index.php/PIC_Opgave_5_-_Flip-flops&quot; title=&quot;PIC Opgave 5 - Flip-flops&quot;&gt;PIC Opgave 5 - Flip-flops&lt;/a&gt; ==Løsningsforslag for Flip-flop.==  Generelt er alle løsningerne laved med den sædvanlig opstartskode t...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny side&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Denne side gennemgår løsningen for [[PIC Opgave 5 - Flip-flops]]&lt;br /&gt;
==Løsningsforslag for Flip-flop.==&lt;br /&gt;
&lt;br /&gt;
Generelt er alle løsningerne laved med den sædvanlig opstartskode til en [[PIC16F684]], og selve funktionen realiseret i et forever loop.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
include 16f684&lt;br /&gt;
&lt;br /&gt;
-- Setup pic&lt;br /&gt;
pragma target clock 4_000_000&lt;br /&gt;
pragma target WDT DISABLED&lt;br /&gt;
pragma target OSC INTOSC_NOCLKOUT&lt;br /&gt;
pragma target PWRTE ENABLED&lt;br /&gt;
pragma target MCLR INTERNAL&lt;br /&gt;
pragma target CP DISABLED&lt;br /&gt;
pragma target CPD DISABLED&lt;br /&gt;
pragma target BROWNOUT ENABLED&lt;br /&gt;
pragma target IESO DISABLED&lt;br /&gt;
pragma target FCMEN DISABLED&lt;br /&gt;
&lt;br /&gt;
include delay&lt;br /&gt;
--&lt;br /&gt;
enable_digital_io()                -- disable analog I/O (if any)&lt;br /&gt;
--&lt;br /&gt;
-- IO definitioner&lt;br /&gt;
porta_direction = all_input&lt;br /&gt;
portc_direction = all_output&lt;br /&gt;
--&lt;br /&gt;
alias Q  is pin_c0&lt;br /&gt;
alias Q_not  is pin_c1&lt;br /&gt;
&lt;br /&gt;
Q_not = ! Q&lt;br /&gt;
-- Main loop&lt;br /&gt;
forever loop&lt;br /&gt;
   -- Flip-flop koden her&lt;br /&gt;
end loop&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Som man kan se defineres udgangen Q til Q og den inverterede udgang &amp;lt;span style=&amp;quot;text-decoration:overline&amp;quot;&amp;gt;Q&amp;lt;/span&amp;gt; til Q_not. Lige inden man går ind i forever-loopet sættes Q_not til det inverterede af Q. &lt;br /&gt;
&lt;br /&gt;
Der er forskellige typer [[flip-flop]], men generelt for alle typer er det at de indeholder et hukommelses-element.&lt;br /&gt;
Det fremgår ikke så tydeligt af løsningerne, da de alle anvender portens indbyggede hukommelse (at en portben bliver stående på det niveau det er sat til, hvis man ikke gør noget ved det).&lt;br /&gt;
&lt;br /&gt;
===Koden som jal-filer===&lt;br /&gt;
&lt;br /&gt;
Alle eksemplerne kan hentes [[Media:Flip-Flop.zip|i denne ZIP-fil]].&lt;br /&gt;
&lt;br /&gt;
==[[RS-flip-flop]]==&lt;br /&gt;
Som man kan læse i sandhedstabellen under [[RS-flip-flop]], så er der to indgange, en Set (S) og en Reset (R), hvor S sætter udgangen Q til høj, og R sætter udgangen Q til lav. Q_not er normalt det modsatte af Q. Hvis man både setter og resetter er udgangen udefineret, og i koden her er det valgt at sætte både Q og Q_not til høj.&lt;br /&gt;
&lt;br /&gt;
I initialiseringen defineres de to indgange R og S:&lt;br /&gt;
 alias R is pin_A0&lt;br /&gt;
 alias S is pin_A1&lt;br /&gt;
&lt;br /&gt;
Funktionen af [[RS-flip-flop]]en er realiseret med følgende kode:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
35   if S then&lt;br /&gt;
36      if ! R then&lt;br /&gt;
37         Q = high&lt;br /&gt;
38         Q_not = low&lt;br /&gt;
39      else&lt;br /&gt;
40         Q = high&lt;br /&gt;
41         Q_not = high&lt;br /&gt;
42      end if&lt;br /&gt;
43   else&lt;br /&gt;
44      if R then&lt;br /&gt;
45         Q = low&lt;br /&gt;
46         Q_not = high&lt;br /&gt;
47      end if&lt;br /&gt;
48   end if&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Linje 35 tester om S-benet er sat, og linje 36 tester så om R-benet ikke er sat, hvis begge dele er tilfældet, så stiller linje 37-38 udgangene, så flip-flopen er sat.&lt;br /&gt;
&lt;br /&gt;
Linje 39-42 udføres hvis begge indgange er sat (og sætter begge udgange høje).&lt;br /&gt;
&lt;br /&gt;
Linje 43 er hvis S-benet ikke er sat, hvor man så i linje 44 tester om R-benet er at, og hvis det er så stiller linje 45-46 udgangene, så flip-flippen er resat.&lt;br /&gt;
&lt;br /&gt;
Linje 47-48 er afslutningerne på hhv. R sætningen og S sætningen.&lt;br /&gt;
&lt;br /&gt;
Hele koden ligger i filen RS-FF.jal inde i [[Media:Flip-Flop.zip|ZIP-filen]].&lt;br /&gt;
&lt;br /&gt;
==[[D-flip-flop]]==&lt;br /&gt;
Som det kan ses i sandhedstabellen unde [[D-flip-flop]], så er der en data-indgang D og en clock-indgang CLK. Når CLK går fra lav til høj, så sættes udgangen Q til det niveau D har, og Q_not sættes til det inverterede.&lt;br /&gt;
&lt;br /&gt;
Indgangene er defineret som følger:&lt;br /&gt;
 alias D is pin_A2&lt;br /&gt;
 alias CLK is pin_A3&lt;br /&gt;
&lt;br /&gt;
For at registrere om CLK laver et skift fra lav til høj (positivt gående kant), så kan man læse en mekanisme under [[Trykknap#Forkant]] der giver en generel måde at gøre det på, dette kræver en variabel som vi definerer her, og sætter til det niveau som CLK har i starten af programmet:&lt;br /&gt;
 var bit CLK_last = CLK&lt;br /&gt;
&lt;br /&gt;
Hele koden inde i forever-loopet til [[D-flip-flop]]en ser ud som følger:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
37   if CLK then&lt;br /&gt;
38      if ! CLK_last then&lt;br /&gt;
39         Q = D&lt;br /&gt;
40         Q_not = ! D&lt;br /&gt;
41      end if&lt;br /&gt;
42      CLK_last = high&lt;br /&gt;
43   else&lt;br /&gt;
44      CLK_last = low&lt;br /&gt;
45   end if&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hovedparten af koden: linje 37-38 og linje 41-45 drejer sig om at finde ud af om det er en forkant. Linje 39-40 er det der udføres når man har fundet en forkant.&lt;br /&gt;
&lt;br /&gt;
Hele koden ligger i filen D-FF.jal inde i [[Media:Flip-Flop.zip|ZIP-filen]].&lt;br /&gt;
&lt;br /&gt;
==[[JK-flip-flop]]==&lt;br /&gt;
Som det kan ses i sandhedstabellen unde [[JK-flip-flop]], så er der to data-indgange J og K samt en clock-indgang CLK. Når CLK går fra lav til høj, så stilles udgangen Q ud fra de niveauer J og K har, og Q_not sættes til det inverterede. &lt;br /&gt;
* Hvis både J og K er lave, så sker der ikke noget på udgangene, de forbliver det samme.&lt;br /&gt;
* Hvis J er høj og K er lav, så sættes Q høj. &lt;br /&gt;
* Hvis K er høj og J er lav, så sættes Q lav.&lt;br /&gt;
* Hvis både J og K er høje, så toggler udgangen (høj bliver til lav, og lav bliver til høj)&lt;br /&gt;
&lt;br /&gt;
Indgangene er defineret som følger:&lt;br /&gt;
 alias CLK is pin_A3&lt;br /&gt;
 alias J is pin_A4&lt;br /&gt;
 alias K is pin_A5&lt;br /&gt;
&lt;br /&gt;
For at registrere om CLK laver et skift fra lav til høj (positivt gående kant), bruges samme princip som ved [[#D-flip-flop|D-flip-flop]]en igen med mekanismen fra [[Trykknap#Forkant]].&lt;br /&gt;
&lt;br /&gt;
Hele koden inde i forever-loopet til [[JK-flip-flop]]en ser ud som følger:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
38   if CLK then&lt;br /&gt;
39      if ! CLK_last then&lt;br /&gt;
40         if J then&lt;br /&gt;
41            if K then&lt;br /&gt;
42               Q = Q_not&lt;br /&gt;
43               Q_not = ! Q&lt;br /&gt;
44            else&lt;br /&gt;
45               Q = high&lt;br /&gt;
46               Q_not = low&lt;br /&gt;
47            end if&lt;br /&gt;
48         else&lt;br /&gt;
49            if K then&lt;br /&gt;
50               Q = low&lt;br /&gt;
51               Q_not = high&lt;br /&gt;
52            end if&lt;br /&gt;
53         end if&lt;br /&gt;
54      end if&lt;br /&gt;
55      CLK_last = high&lt;br /&gt;
56   else&lt;br /&gt;
57      CLK_last = low&lt;br /&gt;
58   end if&lt;br /&gt;
59   delay_1ms(10)  -- Hindrer det meste prel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hovedparten af koden: linje 38-39 og linje 54-58 drejer sig om at finde ud af om det er en forkant. Linje 40-41 finder toggle-delen og linje 42-43 løser Toggle-delen (at udgangen skifter). Linje 44-47 er der hvor J er høj og K er lav, så de sætter Q høj. Linje 48-53 er der hvor K er høj og J er lav, så der sættes Q lav. Hvis både J og K er lave, så skal flip-flopen ikke reagere, så det er ikke skrevet i koden.&lt;br /&gt;
&lt;br /&gt;
En ting mere, som ikke var med i D-flip-flopen, er at man kan modtage to CLK-pulser lige efter hinanden.(det vil blot sætte samme niveau to gange på D-flip-flopen). Ved JK-flip-flopen kan det skabe problemer når den er i toggle-mode, og det er faktisk et reelt problem, som det er skitseret ved [[Trykknap#Prel]], nemlig at når en kontakt laver forbindelse, så kan den lige idet den gør det have en overgang, hvor der skiftevis er forbindelse, og skiftevis ikke er det, det vil gøre at når den toggler, så vil den kunne modtage et lige antal, og dermed lande i samme tilstand (altså ikke toggle). Dette er forhindret ved at lægge et delay ind i loopet på 10 millisekunder, hvilket gør at det mest almindelige prel er overstået, uden at brugeren kan mærke den korte forsinkelse.&lt;br /&gt;
&lt;br /&gt;
Hele koden ligger i filen JK-FF.jal inde i [[Media:Flip-Flop.zip|ZIP-filen]].&lt;br /&gt;
&lt;br /&gt;
Inde ved koderne ligger der også en JK-RS-FF.jal, som er en kombination af en JK-flip-flop og en RS-flip-flop, som også er realiseret i digitale kredse (de anvendes normalt ved at R eller S holder styr op opstarten, så man ved hvilken stilling den står i som udgangspunkt).&lt;br /&gt;
&lt;br /&gt;
==[[Toggle-flip-flop]]==&lt;br /&gt;
&lt;br /&gt;
Som det kan ses i sandhedstabellen unde [[Toggle-flip-flop]], så er der en indgang T, der angiver om den skal toggle og en clock-indgang CLK. Når CLK går fra lav til høj, så inverteres udgangen Q hvis T er høj, og Q_not sættes til det modsatte. Hvis T er lav sker der ingenting&lt;br /&gt;
&lt;br /&gt;
Indgangene er defineret som følger:&lt;br /&gt;
 alias T is pin_A2&lt;br /&gt;
 alias CLK is pin_A3&lt;br /&gt;
&lt;br /&gt;
For at registrere om CLK laver et skift fra lav til høj (positivt gående kant), som beskrevet ved D- og JK-flip-flop.&lt;br /&gt;
&lt;br /&gt;
Hele koden inde i forever-loopet til [[Toggle-flip-flop]]en ser ud som følger:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
36   if CLK then&lt;br /&gt;
37      if ! CLK_last then&lt;br /&gt;
38         if T then&lt;br /&gt;
39            Q = Q_not     -- Toggel output hvis T er høj&lt;br /&gt;
40            Q_not = ! Q&lt;br /&gt;
41         end if&lt;br /&gt;
42      end if&lt;br /&gt;
43      CLK_last = high&lt;br /&gt;
44   else&lt;br /&gt;
45      CLK_last = low&lt;br /&gt;
46   end if&lt;br /&gt;
47   delay_1ms(10)  -- Hindrer det meste prel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hovedparten af koden: linje 36-36 og linje 42-46 drejer sig om at finde ud af om det er en forkant. Linje 38-41 er det der udføres når man har fundet en forkant, hvor den toggler udgangene, hvis T er høj, og ellers sker der ikke mere.&lt;br /&gt;
&lt;br /&gt;
Som beskrevet ved JK-flip-flop, så er der sat 10 ms delay ind, for at mindske indvirkningen af prel.&lt;br /&gt;
&lt;br /&gt;
Hele koden ligger i filen T-FF.jal inde i [[Media:Flip-Flop.zip|ZIP-filen]].&lt;br /&gt;
&lt;br /&gt;
==Alle typer i et program==&lt;br /&gt;
&lt;br /&gt;
For lige at illustrere en måde at lægge flere programmer ind i samme PIC, så er det lavet et all-FF.jal.&lt;br /&gt;
&lt;br /&gt;
Alle indgangene er defineret som følger:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
alias R is pin_A0&lt;br /&gt;
alias S is pin_A1&lt;br /&gt;
alias D is pin_A2&lt;br /&gt;
alias T is pin_A2&lt;br /&gt;
alias CLK is pin_A3&lt;br /&gt;
alias J is pin_A0&lt;br /&gt;
alias K is pin_A1&lt;br /&gt;
alias skift is pin_A4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Den sidste indgang skift er til at skifte mellem de 4 typer flip-flop.&lt;br /&gt;
&lt;br /&gt;
Internet i programmet er typerne defineret som tal på følgende måde:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
const RS_FF = 0&lt;br /&gt;
const D_FF  = 1&lt;br /&gt;
const JK_FF = 2&lt;br /&gt;
const T_FF  = 3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Til at håndtere hvilken type det er, og til at finde kanten af skift er der defineret en byte og en bit som følger:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var byte type = RS_FF&lt;br /&gt;
var bit skift_last = skift&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hele koden inde i forever-loopet indeholder de 4 koder fra det foregående sat op som en CASE-struktur, men først håndteres skiftet mellem de 4 typer. Starten af koden ser ud som følgende:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
52   portc = (portc &amp;amp; 0b1111_0011) | type &amp;lt;&amp;lt; 2&lt;br /&gt;
53   if skift then&lt;br /&gt;
54      if ! skift_last then&lt;br /&gt;
55         type = (type + 1) &amp;amp; 0b0000_0011&lt;br /&gt;
56      end if&lt;br /&gt;
57      skift_last = high&lt;br /&gt;
58   else&lt;br /&gt;
59      skift_last = low&lt;br /&gt;
60   end if&lt;br /&gt;
61   CASE type OF&lt;br /&gt;
62     RS_FF : BLOCK&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Linje 52 udlæser på bit 2 og bit 3 hvilen type det er der vises ([[binært tal]] fra 0-3) Linje 53-54 og linje 56-60 drejer sig om at finde ud af om der er en forkant på skift-inputtet. Linje 55 tæller typen en op når man har fundet en forkant.&lt;br /&gt;
&lt;br /&gt;
På denne måde kan man skifte til den flip-flop man ønsker, og teste den, og så skifte videre til en anden type.&lt;br /&gt;
&lt;br /&gt;
Linje 61-62 er lige starten af CASE-strukturen, der går på type. Den første BLOCK er koden til RS-flip-flopen, go så kommer det ellers der efter.&lt;br /&gt;
Hele koden ligger i filen all-FF.jal inde i [[Media:Flip-Flop.zip|ZIP-filen]].&lt;br /&gt;
&lt;br /&gt;
Der er også lavet en version all2-FF.jal, der har præcist den samme funktion, men som bare viser at man kan genbruge den kode der detekterer CLK-indgangen, så den ikke skal laves for de 3 typer der har en CLK-indgang. &lt;br /&gt;
&lt;br /&gt;
[[Kategori:PIC_Opgave_Løsninger]]&lt;/div&gt;</summary>
		<author><name>_htx&gt;Bar</name></author>
	</entry>
</feed>