From 7306400abb60fca572ac1e4be9c79a5bcc7e732e Mon Sep 17 00:00:00 2001
From: "Michal, OK1WMR" <ok1wmr@gmail.com>
Date: Thu, 7 Apr 2011 06:33:14 +0200
Subject: [PATCH] =?UTF-8?q?P=C5=99id=C3=A1n=20=C4=8Dl=C3=A1nek=20AVR=20-?=
 =?UTF-8?q?=20LED=20panel=20-=20#3=20Program?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

(Autoexportován z Joomly)
---
 articles/2011/avr-led-panel-3-program.md | 116 +++++++++++++++++++++++
 1 file changed, 116 insertions(+)
 create mode 100644 articles/2011/avr-led-panel-3-program.md

diff --git a/articles/2011/avr-led-panel-3-program.md b/articles/2011/avr-led-panel-3-program.md
new file mode 100644
index 0000000..e5cae07
--- /dev/null
+++ b/articles/2011/avr-led-panel-3-program.md
@@ -0,0 +1,116 @@
++++
+
+title = "AVR - LED panel - #3 Program"
+perex_e = "
+
+KompatibilnĂ­ zapojenĂ­: LED panel s ATmega8
+
+Ke staĹľenĂ­: LED_003.c == LED_003.pdf == LED_003.htm
+.
+.
+"
+tags = ["Článek"]
++++
+
+
+
+KompatibilnĂ­ zapojenĂ­: LED panel s ATmega8
+
+Ke staĹľenĂ­: LED_003.c == LED_003.pdf == LED_003.htm
+.
+.
+
+* * *
+
+<title>Untitled</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="generator" content="SynEdit HTML exporter"> <style type="text/css">&amp;amp;amp;amp;amp;amp;amp;lt;!-- body { color: #000000; background-color: #FFFFFF; } .cpp1-assembler { } .cpp1-brackets { } .cpp1-comment { color: #008000; font-style: italic; } .cpp1-float { color: #000080; } .cpp1-hexadecimal { color: #000080; } .cpp1-character { } .cpp1-identifier { } .cpp1-illegalchar { } .cpp1-number { color: #000080; } .cpp1-octal { color: #0000FF; } .cpp1-preprocessor { } .cpp1-reservedword { font-weight: bold; } .cpp1-space { color: #008080; } .cpp1-string { color: #800000; } .cpp1-symbol { } --&amp;amp;amp;amp;amp;amp;amp;gt;</style> 
+
+```
+/*
+V minulém programu se nám podařilo rozblikat řadu LED diod pomocí cyklu,
+čekání a dvou konstant (STAV1 a STAV2) které nám určovaly, jaké ledky mají 
+svítit. Problém je v tom, že po napsání první konstanty musíme vytvořit tu 
+druhou přesně opačně (kde byly jedničky, budou nuly, a naopak), protože jinak 
+by nám některé ledky buďto vůbec nesvítily, nebo by svítily stále. Nyní se 
+proto pokusíme vytvořit podobný program jako minule, který ale bude potřebovat 
+nadefinovat pouze jeden stav a druhý si vypočte sám.
+K tomuto účelu se přesně hodí takzvaný bitový komplement. bitový komplement je 
+operace, při níž se z jedniček stanou nuly, a naopak.
+*/
+/*
+Teď ještě vědět, jak takovou operaci zapsat.
+Na tomto místě se hodí uvést tabulku operátorů jazyka C, mezi které patří 
+i náš bitový komplement.
+*/
+/*
+Operátory v C:
+
+  +		sčítání				
+  -		odčítání
+  *		násobení
+  /		dělení   
+  %		modulus 			(zbytek po celočíselném dělení)
+  ++    inkrementace        (zvětšení o 1)
+  --	dekrementace        (zmenšení o 1)
+  =     přiřazení
+  ==    porovnání         	( if(A==B)...
+  ~     bitovĂ˝ komplement 	( 0b11110000 -> 0b00001111)
+  !		not
+  !=    nenĂ­ rovno
+  <     menší než
+  >		větší než
+  <=    menší nebo rovno
+  >=	větší nebo rovno
+  &     bitové AND  		(také adresa proměnné)
+  &&    logické AND
+  |     bitové OR
+  ||	logické OR
+  ^     bitové exclusive OR
+  ?     podmínkový operátor
+  <<    bitovĂ˝ posun doleva  (A = B << 2  posun bitĹŻ o dvÄ› mĂ­sta doleva,
+                                          zprava doplňuje nuly)
+  >>    bitovĂ˝ posun doprava
+  +=	A += B totéž co  A = A + B
+  -=    A -= B totéž co  A = A - B
+  /=    podobnÄ›...
+  %=
+  &=
+  *=
+  ^=
+  |=
+  >>=
+  <<=
+*/
+/*
+NynĂ­ se tedy pokusĂ­me napsat program:
+*/
+
+#define F_CPU 1000000UL  // 1 MHz (základní frekvence)
+
+#include <avr/io.h>		//Knihovna vstupů a výstupů (PORT, DDR)
+#include <util/delay.h>	//Knihovna ÄŤekacĂ­ch funkcĂ­
+
+#define CEKANI 500		//kolik milisekund budou ledky svĂ­tit	
+#define STAV1 0b01010101//které ledky se budou střídat
+
+int main (void)
+{
+DDRB = 0b11111111;
+PORTB= STAV1;
+for(;;)
+	{
+	PORTB=~PORTB;		//Zapíšeme na portB bitový komplement původní hodnoty
+						//Vyměníme ledky - ty které svítily zhasnou, a naopak
+	_delay_ms (CEKANI);	//Čekání 
+	}
+}
+
+/* 
+Pozorní si jistě všimli, že se konstrukce programu zjednodušila.
+Po nahrání programu do přípravku "ATmega8 - LED panel" budou střídavě blikat 
+LED diody tak, jak je to definováno v konstantě STAV1, rychlostí určenou 
+v konstantě CEKANI. Tyto konstanty lze libovolně měnit...
+*/
+
+//Pro radioklub OK1KVK naspal Vašek Král
+
+```
\ No newline at end of file
-- 
GitLab