<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Krzysztof Wesołowski &#187; 8051</title>
	<atom:link href="http://kwesoly.net/tag/8051/feed/" rel="self" type="application/rss+xml" />
	<link>http://kwesoly.net</link>
	<description>Programowanie, elektronika, automatyka - doświadczenia i projekty</description>
	<lastBuildDate>Wed, 07 Sep 2011 14:03:29 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Konwersje BIN/BCD w ASM 8051</title>
		<link>http://kwesoly.net/programowanie/konwersje-binbcd-w-asm-8051/</link>
		<comments>http://kwesoly.net/programowanie/konwersje-binbcd-w-asm-8051/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 23:06:03 +0000</pubDate>
		<dc:creator>Krzysiek Wesołowski</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[8051]]></category>
		<category><![CDATA[assembler]]></category>
		<category><![CDATA[bcd]]></category>
		<category><![CDATA[bcd2bin]]></category>
		<category><![CDATA[Bin]]></category>
		<category><![CDATA[bin2bcd]]></category>
		<category><![CDATA[NKB]]></category>

		<guid isPermaLink="false">http://kwesoly.net/?p=412</guid>
		<description><![CDATA[Kilka prostych procedur napisanych dla znajomych z innego kierunku: Listing: ;poniższy kod można podmienić na prezentujący inna z załączonych procedurę. &#160; mov R0,#0x14 ;przykladowa liczba do konwersji mov R1,#0x38 ;druga czesc liczby &#160; lcall BCD2BIN2BYTES ;procedura konwertujaca &#160; FINISH: ;petla zapobieajaca wykonywaniu dalszej części programu. &#160; &#160; LJMP FINISH Konwersja 2 bajtowa: Listing: BCD2BIN2BYTES: &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Kilka prostych procedur napisanych dla znajomych z innego kierunku:</p>
<div class="geshi no asm">
<div class="head">Listing:</div>
<ol>
<li class="li1">
<div class="de1"><span class="co1">;poniższy kod można podmienić na prezentujący inna z załączonych procedurę.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">mov</span> R0,#0x14 <span class="co1">;przykladowa liczba do konwersji</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">mov</span> R1,#0x38 <span class="co1">;druga czesc liczby</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">lcall BCD2BIN2BYTES <span class="co1">;procedura konwertujaca</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">FINISH: <span class="co1">;petla zapobieajaca wykonywaniu dalszej części programu.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw5">LJMP</span> FINISH</div>
</li>
</ol>
</div>
<p><span id="more-412"></span><br />
Konwersja 2 bajtowa:</p>
<div class="geshi no asm">
<div class="head">Listing:</div>
<ol>
<li class="li1">
<div class="de1">BCD2BIN2BYTES:</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">;liczba jest w R0 i R1</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">;bardziej znaczacy w R0, mniej w R1</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">;wynik również tam umieścimy.</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">mov</span> A,R0</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; lcall BCD2BIN<span class="re1">1B</span>YTE <span class="co1">;konwertujemy pierwszy</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">mov</span> B, #<span class="nu0">100</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">MUL</span> AB &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">; wynik został pomnożony razy 100</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">mov</span> R2, B</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">mov</span> R3, A &nbsp; &nbsp; &nbsp;<span class="co1">; wynik mnożenia zachowany</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">mov</span> A, R1</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; lcall BCD2BIN<span class="re1">1B</span>YTE <span class="co1">; konwersja mniej znaczącej części</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; CLR <span class="kw5">C</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">; dodawania z przeniesieniem</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; ADDC A, R3</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">mov</span> R3, A</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">mov</span> A, R2</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; ADDC A, #<span class="nu0">0</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">mov</span> R0,A</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">mov</span> A,R3</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">mov</span> R1, A</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">RET</span></div>
</li>
</ol>
</div>
<div class="geshi no asm">
<div class="head">Listing:</div>
<ol>
<li class="li1">
<div class="de1">BIN2BCD<span class="re1">1B</span>YTE: <span class="co1">;konwersja BIN2BCD na jednym bajcie - pochodzi z datasheetu - proste i zrozumiałe</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">mov</span> B, #<span class="nu0">10</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">DIV</span> AB</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; SWAP A</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">ADD</span> A, B</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">RET</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">BCD2BIN<span class="re1">1B</span>YTE: <span class="co1">; i w druga stronę</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">mov</span> R7, A</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; ANL A,#0xF0 &nbsp; <span class="co1">; zostawiamy tylko cyfrę dziesiątek</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; SWAP A</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">mov</span> B, #<span class="nu0">10</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">MUL</span> AB</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; XCH A, R7 &nbsp; &nbsp; &nbsp; <span class="co1">; zamiana miejscami</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; ANL A, #0x0F &nbsp;<span class="co1">; cyfra jedności</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">ADD</span> A, R7</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">RET</span></div>
</li>
</ol>
</div>
<p>Komentarze wyjaśniają mniej typowe rzeczy, zaś działanie pozostałych sprowadza się praktycznie do opisu działania instrukcji. W razie niezrozumienia jakiegoś szczegółów można zapytać na mailu komentarzu.</p>
]]></content:encoded>
			<wfw:commentRss>http://kwesoly.net/programowanie/konwersje-binbcd-w-asm-8051/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Symulacja działania mikrokontrolera opartego o rdzeń 8051</title>
		<link>http://kwesoly.net/programowanie/symulacja-mikrokontrolera-rdzen-8051/</link>
		<comments>http://kwesoly.net/programowanie/symulacja-mikrokontrolera-rdzen-8051/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 21:40:56 +0000</pubDate>
		<dc:creator>Krzysiek Wesołowski</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[8051]]></category>
		<category><![CDATA[assembler]]></category>
		<category><![CDATA[mikrokontroler]]></category>
		<category><![CDATA[symulator]]></category>

		<guid isPermaLink="false">http://kwesoly.net/?p=409</guid>
		<description><![CDATA[Do samodzielnych eksperymentów z wspomnianym uC (nie na sprzęcie w laboratorium czy własnej płytce) przyda się nam jeszcze symulator rdzenia 8051. Z wielu dostępnych symulatorów, w większości jednak starych lub nie w pełni funkcjonalnych wybrałem moim zdaniem najlepszy, napisany w Javie, pozwalający od razu przetestować współpracę w podstawowej konfiguracji sprzętowej (P1 podłączony do linijki diodowej/wyświetlacza [...]]]></description>
			<content:encoded><![CDATA[<p>Do samodzielnych eksperymentów z wspomnianym uC (nie na sprzęcie w laboratorium czy własnej płytce) przyda się nam jeszcze symulator rdzenia 8051. Z wielu dostępnych symulatorów, w większości jednak starych lub nie w pełni funkcjonalnych wybrałem moim zdaniem najlepszy, napisany w Javie, pozwalający od razu przetestować współpracę w podstawowej konfiguracji sprzętowej (P1 podłączony do linijki diodowej/wyświetlacza 7-segmentowego). Ponadto umożliwia on pisanie bezpośrednio w oknie kodu ASM, a ewentualne błędy wskazuje znacznie celniej niż stare programy asemblujące kod.</p>
<p>Wadą symulatora jest fakt, iż znalazłem go w formacie JAR, co czasem sprawia problemy z uruchomieniem (kilka osób zgłaszało iż  musiało zainstalować od nowa JRE).</p>
<p><a href="http://download.kwesoly.net/2009/11/edsim51.zip">Symulator rdzenia '51</a></p>
<p>Wkrótce zamieszczę proste programy napisane w tym symulatorze, będzie wtedy okazja dokładniej zerknąć w akceptowaną przez niego składnię.</p>
]]></content:encoded>
			<wfw:commentRss>http://kwesoly.net/programowanie/symulacja-mikrokontrolera-rdzen-8051/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Assembler 8051 &#8211; materiały do nauki, pierwsze sprawozdanie.</title>
		<link>http://kwesoly.net/programowanie/assembler-8051-materialy-nauka-sprawozdanie/</link>
		<comments>http://kwesoly.net/programowanie/assembler-8051-materialy-nauka-sprawozdanie/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 21:30:11 +0000</pubDate>
		<dc:creator>Krzysiek Wesołowski</dc:creator>
				<category><![CDATA[Programowanie]]></category>
		<category><![CDATA[8051]]></category>
		<category><![CDATA[at89s51]]></category>

		<guid isPermaLink="false">http://kwesoly.net/?p=404</guid>
		<description><![CDATA[W ramach przedmiotu Technika Mikroprocesorowa (czy coś podobnego:)) na zajęciach zaczęliśmy zabawę z uC opartym o rdzeń '51, produkowany przez firmę Atmel. Ze względu na małą ilość spójnych informacji na temat programowania i działania tego uC którą udało się znaleźć postanowiłem zebrać i opublikować informację umożliwiające "rozpoczęcie przygody" . Po pierwsze jako źródło informacji na [...]]]></description>
			<content:encoded><![CDATA[<p>W ramach przedmiotu Technika Mikroprocesorowa (czy coś podobnego:)) na zajęciach zaczęliśmy zabawę z uC opartym o rdzeń '51, produkowany przez firmę Atmel. Ze względu na małą ilość spójnych informacji na temat programowania i działania tego uC którą udało się znaleźć postanowiłem zebrać i opublikować informację umożliwiające "rozpoczęcie przygody" <img src='http://kwesoly.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Po pierwsze jako źródło informacji na temat samego rdzenia poza książkami (np. dobrą pozycją pana Rydzewskiego) polecam:<br />
<a href="http://www.atmel.com/dyn/resources/prod_documents/doc4316.pdf">Atmel 8051 Microcontrollers Hardware Manual (oryginalny plik na serwerze Atmela)</a><br />
<a href="http://download.kwesoly.net/2009/11/Atmel-8051-Microcontrollers-Hardware-Manual.pdf">Atmel 8051 Microcontrollers Hardware Manual (lokalna kopia na tej stronie)</a></p>
<p>Zaś więcej szczegółów na temat konkretnych mikrokontrolerów można znaleźć w Datasheetach producentów. Dla dostępnych w budynku b1, s. 315 płytek deweloperskich sa to układy AT89S51 Atmela:<br />
<a href="http://www.atmel.com/dyn/resources/prod_documents/doc2487.pdf">AT89S51 Datasheet (oryginalny plik na serwerze Atmela)</a><br />
<a href="http://download.kwesoly.net/2009/11/AT89S51-Datasheet.pdf">AT89S51 Datasheet (lokalna kopia na tej stronie)</a></p>
<p>Poniżej zamieszczam link do sprawozdania z  drugiego ćwiczenia (pierwsze polegało na mruganiu diodą w pętli głównej, niestety nie byłem na nim obecny). Zawiera ono pierwszy program, przygotowany koncepcyjnie/na symulatorze przeze mnie i Kubę Tutro (ale napisany na zajęciach), oraz drugi napisany już na zajęciach prezentujący działanie PWM w celu regulacji jasności świecenia diod. Oba programy pisałem na zajęciach wspólnie z Pawłem Górką, on również uzupełnił komentarze i przygotował sprawozdanie w formacie PDF.<a href="http://download.kwesoly.net/2009/11/gorka_wesolowski_sprawozdanie_lab1-2_8051.pdf"> </a></p>
<p><a href="http://download.kwesoly.net/2009/11/gorka_wesolowski_sprawozdanie_lab1-2_8051.pdf">Sprawozdanie z laboratorium 8051. Paweł Górka, Krzysztof Wesołowski</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kwesoly.net/programowanie/assembler-8051-materialy-nauka-sprawozdanie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

