<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="da">
	<id>https://holstebro-htx.dk/index.php?action=history&amp;feed=atom&amp;title=Styresystem</id>
	<title>Styresystem - Versionshistorie</title>
	<link rel="self" type="application/atom+xml" href="https://holstebro-htx.dk/index.php?action=history&amp;feed=atom&amp;title=Styresystem"/>
	<link rel="alternate" type="text/html" href="https://holstebro-htx.dk/index.php?title=Styresystem&amp;action=history"/>
	<updated>2026-04-19T19:42:19Z</updated>
	<subtitle>Versionshistorie for denne side i Holstebro HTX Wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://holstebro-htx.dk/index.php?title=Styresystem&amp;diff=2732&amp;oldid=prev</id>
		<title>Bar: 1 version importeret</title>
		<link rel="alternate" type="text/html" href="https://holstebro-htx.dk/index.php?title=Styresystem&amp;diff=2732&amp;oldid=prev"/>
		<updated>2022-10-19T06:04:13Z</updated>

		<summary type="html">&lt;p&gt;1 version importeret&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Ny side&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Et rigtigt styresystem som man f.x. ser det i en PC håndterer alt bruger-input, disk-access, skærmhåndtering m.v. og vil typisk kunne sørge for at flere programmer kan fungere samtidigt i PC&amp;#039;en uden at de generer hinanden.&lt;br /&gt;
&lt;br /&gt;
==Styresystem i PIC&amp;#039;en==&lt;br /&gt;
Det grundlæggende program i en PIC skal sørge for de samme ting som et styresystem - her får vi ikke noget forærende, men skal bygge alt fra bunden.&lt;br /&gt;
&lt;br /&gt;
For at programmet skal kunne blive ved med at fungere, så laver man et [[Forever Loop]], hvor man skal sørge for at alt kan ske fra, dette er hovedprogrammet.&lt;br /&gt;
&lt;br /&gt;
I hovedprogrammet vil det normalt være en fordel at komme hurtigt rundt, så man vil typisk sørge for at der ikke er noget der tager tid i loopet, men hvis man ønsker at lave det så man kan har nogle rimeligt faste tider, så kan man lave det så man venter f.x. 10 ms i hvert gennemløb. &lt;br /&gt;
&lt;br /&gt;
Strukturen i et sådan hovedprogram kunne se ud som følger&lt;br /&gt;
&amp;lt;source lang=&amp;quot;jal&amp;quot;&amp;gt;&lt;br /&gt;
 -- Main loop&lt;br /&gt;
 forever loop&lt;br /&gt;
    -- Håndter input fra brugeren&lt;br /&gt;
    -- Håndter input fra andre kilder&lt;br /&gt;
    -- Lav beregninger&lt;br /&gt;
    -- Håndter output fra PIC&lt;br /&gt;
    disp_count = disp_count + 1&lt;br /&gt;
    if disp_count == 50 then&lt;br /&gt;
       disp_count = 0&lt;br /&gt;
       -- Håndter display output&lt;br /&gt;
    end if&lt;br /&gt;
    delay_1ms(10)&lt;br /&gt;
 end loop&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Det man opnår med den viste kode er, at man kommer forbi alt det der er vigtigt at opdateret hurtigt, som tastetryk fra brugeren og ting der skal reageres på, både af input og output, men samtidig får man lavet en rolig display-visning der ikke står og flimrer, men kun opdateres ca. 2 gange i sekundet.&lt;br /&gt;
&lt;br /&gt;
==Initialisering==&lt;br /&gt;
For at dette styresystem kan fungere skal der initialiseres nogle bestemte ting:&lt;br /&gt;
* Definitioner for PIC&amp;#039;en (registre osv.)&lt;br /&gt;
* Configurationsregistre - oscillator, reset m.v.&lt;br /&gt;
* Import af [[delay]]-definitioner&lt;br /&gt;
* Opsætning af [[Input]] og [[Output]]&lt;br /&gt;
* Definitioner af [[variabler]]&lt;br /&gt;
&lt;br /&gt;
==Definitioner og configurering af PIC-kredse==&lt;br /&gt;
Der skal naturligvis laves forskellige definitioner for hver PIC-type, men der er også forskellige måder at opsætte configurationen på de forskellige udviklingsboards, som er afhængig af hvilken PIC-type det er.&lt;br /&gt;
&lt;br /&gt;
===PIC12F675===&lt;br /&gt;
&lt;br /&gt;
Der skal includes en definitions-fil og opsættes en række konfigurations-opsætninger. Det er tilpasset de udviklingsboard vi har på Holstebro HTX og gøres som følger:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;jal&amp;quot;&amp;gt;&lt;br /&gt;
-- Chip def&lt;br /&gt;
include 12f675&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;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===PIC16F684===&lt;br /&gt;
&lt;br /&gt;
Der skal includes en definitions-fil og opsættes en række konfigurations-opsætninger. Det er tilpasset de udviklingsboard vi har på Holstebro HTX og gøres som følger:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;jal&amp;quot;&amp;gt;&lt;br /&gt;
-- Chip def&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;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===PIC16F690===&lt;br /&gt;
&lt;br /&gt;
Der skal includes en definitions-fil og opsættes en række konfigurations-opsætninger. Det er tilpasset de udviklingsboard vi har på Holstebro HTX og gøres som følger:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;jal&amp;quot;&amp;gt;&lt;br /&gt;
-- Chip def&lt;br /&gt;
include 16f690&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;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===PIC16F877===&lt;br /&gt;
&lt;br /&gt;
Der skal includes en definitions-fil og opsættes en række konfigurations-opsætninger. Det er tilpasset de udviklingsboard vi har på Holstebro HTX og gøres som følger:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;jal&amp;quot;&amp;gt;&lt;br /&gt;
-- Chip def&lt;br /&gt;
include 16f877&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 XT&lt;br /&gt;
pragma target PWRTE ENABLED&lt;br /&gt;
pragma target CP DISABLED&lt;br /&gt;
pragma target CPD DISABLED&lt;br /&gt;
pragma target BROWNOUT ENABLED&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===PIC16F628===&lt;br /&gt;
&lt;br /&gt;
Der skal includes en definitions-fil og opsættes en række konfigurations-opsætninger. Det er tilpasset de udviklingsboard vi har på Holstebro HTX og gøres som følger:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;jal&amp;quot;&amp;gt;&lt;br /&gt;
include 16f628                    -- target PICmicro&lt;br /&gt;
--&lt;br /&gt;
-- This program assumes a 4 MHz resonator or crystal&lt;br /&gt;
-- is connected to pins OSC1 and OSC2.&lt;br /&gt;
pragma target clock 4_000_000     -- oscillator frequency&lt;br /&gt;
-- configuration memory settings (fuses)&lt;br /&gt;
pragma target OSC  HS              -- HS crystal or resonator&lt;br /&gt;
pragma target WDT  disabled        -- no watchdog&lt;br /&gt;
pragma target LVP  disabled        -- no Low Voltage Programming&lt;br /&gt;
pragma target MCLR external        -- reset externally&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===PIC16F84A===&lt;br /&gt;
&lt;br /&gt;
Der skal includes en definitions-fil og opsættes en række konfigurations-opsætninger. Det er tilpasset de udviklingsboard vi har på Holstebro HTX og gøres som følger:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;jal&amp;quot;&amp;gt;&lt;br /&gt;
include 16f84a                    -- target PICmicro&lt;br /&gt;
--&lt;br /&gt;
-- This program assumes a 4 MHz resonator or crystal&lt;br /&gt;
-- is connected to pins OSC1 and OSC2.&lt;br /&gt;
pragma target clock 4_000_000     -- oscillator frequency&lt;br /&gt;
-- configuration memory settings (fuses)&lt;br /&gt;
pragma target OSC  HS              -- HS crystal or resonator&lt;br /&gt;
pragma target WDT  disabled        -- no watchdog&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Delay-definitioner==&lt;br /&gt;
&lt;br /&gt;
For at kunne anvende de forskellige delay-rutiner, så skal man include delay-biblioteket&lt;br /&gt;
&amp;lt;source lang=&amp;quot;jal&amp;quot;&amp;gt;&lt;br /&gt;
include delay&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Opsætning af input og output==&lt;br /&gt;
&lt;br /&gt;
For at PIC&amp;#039;ens ben kan fungere som input og output skal der defineres hvilke ben der anvendes til hvad:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;jal&amp;quot;&amp;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_output&lt;br /&gt;
portc_direction = all_output&lt;br /&gt;
&lt;br /&gt;
alias   kontakt is pin_A3&lt;br /&gt;
pin_A3_direction =  input&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Variabel-deklaration og initialisering==&lt;br /&gt;
&lt;br /&gt;
I de fleste programmer anvender man [[variabler]], og i JAL skal de defineres ved hvilken [[type]] de har. Når man definerer sine variabler kan det tit være en god ide at initialisere dem, så man ved hvilken værdi de har når programmet starter.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;jal&amp;quot;&amp;gt;&lt;br /&gt;
-- Variabler til programmet&lt;br /&gt;
var byte tal = 0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategori:Program-klassikere]]&lt;/div&gt;</summary>
		<author><name>Bar</name></author>
	</entry>
</feed>