<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title><![CDATA[Уроки программирования микроконтроллеров]]></title>
<link>https://averel.ru</link>
<description><![CDATA[]]></description>
<language>ru</language>
<lastBuildDate>Sat, 04 Jul 2026 14:39:15 +0300</lastBuildDate>
<ttl>60</ttl>
<item turbo='true'>
<title><![CDATA[Урок 1. Микроконтроллер AVR мигание светодиодом]]></title>
<pubDate>Wed, 27 Feb 2019 11:36:00 +0300</pubDate>
<link>https://averel.ru/blog/uroki-programmirovaniya-mikrokontrollerov/prog-mikrokontrol-avr</link>
<guid isPermaLink="false">https://averel.ru/blog/uroki-programmirovaniya-mikrokontrollerov/prog-mikrokontrol-avr</guid>
<author>Алексей</author>
<enclosure url="https://averel.ru/uploads/blog/1551470624_127-02-2019-11-36.jpg" type="image/jpeg"/>
<enclosure url="https://averel.ru/uploads/blog/article/1/BASCOM1_2021-03-04_12-43-03.png" type="image/png"/>
<enclosure url="https://averel.ru/uploads/blog/article/1/PROTEUS1_2021-03-04_12-43-03.png" type="image/png"/>
<description>
<![CDATA[
	    Создадим первую программу для микроконтроллера AVR,  для начала помигаем светодиодом. Программ...]]>
</description>
<content:encoded>
<![CDATA[<div style="text-align: justify;">
	<span style="font-size:16px;">    <strong>Создадим первую программу для микроконтроллера AVR</strong>,  для начала <strong>помигаем светодиодом</strong>. Программу создадим в самом простом, на мой взгляд, компиляторе для начинающих Bascom AVR. Для начала необходимо выбрать микроконтроллер, который мы будем использовать. В принципе для мигания светодиодом можно взять любой микроконтроллер я буду использовать микроконтроллер ATMEGA8,  забегая вперед сразу скажу, что можно адаптировать программу под любой камень лишь изменив подключаемый файл описания, далее я опишу, как это можно сделать.  <br />
	Итак, начнем:<br />
	1. Создаем новый файл в программе Bascom AVR с расширением .bas желательно сохранять файл проекта и файл proteusa в одной папке. На рисунке 1 представлен текст программы.<br />
	2. Объявляем наш микроконтроллер, подключаем файл описания на данный микроконтроллер.<br />
	3. Задаем частоту нашего кварцевого резонатора<br />
	4. Настраиваем порты ввода-вывода,  чтобы работать с ними, в нашем случаи будем использовать порт PORTB, но можно использовать и другую ножку порта.</span>
</div>

<div style="text-align: justify;">
	<br />
	<span style="font-size:16px;">Текст программы мигание светодиодом:</span><br />
	'-------------------------------------------------------------------<br />
	<br />
	<strong>$regfile = "m8def.dat" </strong>      <span style="color:#008000;">'заголовочный файл микроконтроллера</span><br />
	<strong>$crystal = 4000000 </strong>         <span style="color:#008000;"> ' частота кварцевого резонатора</span><br />
	<br />
	<strong>DDRB.0</strong> = 1                    <span style="color:#008000;">' Ножка порта PORTB.0 на выход</span><br />
	<strong>PORTB.0</strong> = 0      <span style="color:#008000;">           ' Вначале на ножке PORTB.0 выставляем ноль</span><br />
	<br />
	<span style="color:#008000;">'Основной цикл программы</span><br />
	'-----------------------------------------------------------<br />
	<strong>Do</strong><br />
	<br />
	<span style="color:#008000;">'Мигание светодиодом</span><br />
	<strong>PORTB.0 </strong>= 1       <span style="color:#008000;">'Зажигаем светодиод</span><br />
	<strong>Wait 1</strong>                 <span style="color:#008000;"> ' Задержка 1 секунда</span><br />
	<strong>PORTB.0 </strong>= 0           <span style="color:#008000;">' Гасим светодиод</span><br />
	<strong>Wait 1</strong>                 <span style="color:#008000;"> ' Задержка 1 секунда</span><br />
	<br />
	<strong>Loop </strong>                   <span style="color:#008000;">' Конец цикла </span><br />
	'-----------------------------------------------------------<br />
	<strong>End</strong>                     <span style="color:#008000;"> 'Конец программы</span><br />
	<br />
	<br />
	<span style="font-size:16px;">Если необходимо скажем использовать вместо микроконтроллера ATMEGA8 микроконтроллер ATMEGA128, то достаточно изменить одну строчку программы<br />
	 <strong>$regfile = "m8def.dat" </strong> на  строчку<strong> $regfile = "m128def.dat"  </strong>и все  программа уже будет работать с микроконтроллером ATMEGA128.<br />
	Если микроконтроллер ATMEGA32, то соответственно  <strong>$regfile = "m32def.dat"</strong> и все !!!<br />
	   Если Вы хотите использовать другую ножку порта скажем PORTB.4 , то достаточно в программе изменить везде где встречается текст DDRB.0 и PORTB. 0 на  DDRB.4 и PORTB.4 и все! А если необходимо использовать скажем порт С, то соответсвенно будет DDRC и PORTC + незабываем указывать нужный вывод (ножку) порта микроконтроллера.<br />
	 <br />
	<span style="color:#000000;">Рисунок 1 - Программа мигание светодиодом в BASCOM AVR</span></span><br />
	<br />
	<img alt="" src="https://averel.ru/uploads/blog/article/1/BASCOM1_2021-03-04_12-43-03.png" style="width: 500px; height: 400px;" /><br />
	<br />
	<span style="font-size:16px;">Рисунок 2 - Испытание программы мигание светодиодом в Proteuse</span><br />
	<img alt="" src="https://averel.ru/uploads/blog/article/1/PROTEUS1_2021-03-04_12-43-03.png" style="width: 500px; height: 319px;" /><br />
	<br />
	А если необходима программа мигания светодиодом на языке Си :<br />
	<span style="color:#008000;">//Программа написана в AVR Studio</span><br />
	<span style="color:#008000;">/*<br />
	 *  Author: Aleksey<br />
	 */ </span><br />
	<span style="color:#0000CD;">#include</span> <avr/io.h><br />
	<span style="color:#0000FF;">#define</span> <span style="color:#800080;">F_CPU 4000000UL</span><br />
	<span style="color:#0000FF;">#include </span><util/delay.h><br />
	<br />
	<span style="color:#0000FF;">void</span> main(<span style="color:#0000FF;">void</span>)<br />
	{<br />
	    <span style="color:#B22222;">DDRB</span>= 0b00000001; <span style="color:#008000;"> //b7-0 b6-0 b5-0 b4-0 b3-0 b2-0 b1-0 b0-1</span><br />
	   <span style="color:#008000;"> // Ножка порта RB0 - на выход</span><br />
	    <br />
	    <span style="color:#0000FF;">while</span>(1)<br />
	    {<br />
	   <span style="color:#B22222;">PORTB </span>|= (1<<0); <span style="color:#008000;">//зажигаем светодиод</span><br />
	  <span style="color:#8B4513;"> _delay_ms</span>(1000); <span style="color:#008000;">//задержка 1 секунда</span><br />
	   <span style="color:#B22222;">PORTB</span> &= ~(1<<0);<span style="color:#008000;">//гасим светодиод</span><br />
	  <span style="color:#8B4513;"> _delay_ms</span>(1000); <span style="color:#008000;">//задержка 1 секунда</span><br />
	<br />
	    }<br />
	}<br />
	<br />
	<script src="https://averel.ru/mg-plugins/mg-treelike-comments/js/script.js"></script>
</div>
<link href="https://averel.ru/mg-plugins/mg-treelike-comments/css/style.css" rel="stylesheet" type="text/css" /><input hidden="" id="linkUrl" value="/blog/uroki-programmirovaniya-mikrokontrollerov/prog-mikrokontrol-avr" />
<div id="treelike-comments-ajax-body">
	<div id="treelike-comments">
		<form class="add_new_comment clearfix"><input name="user_id" type="hidden" value="1" /> <input name="name" type="hidden" value="Администратор" /> <input name="email" type="hidden" value="info@averel.ru" />
		<div class="textarea-wrapper clearfix">
			<div class="close">
				 
			</div>
			<textarea class="new-comment txtstuff" name="comment" placeholder="Ваш комментарий"></textarea>
		</div>
		<a class="treelike-showImgComments" href="javascript:void(0);"> Прикрепить изображения</a>

		<div class="treelike-comments-dropZone" style="display:none;">
			<span>Перетащите сюда изображения или нажмите для выбора...</span> <input accept=".gif,.jpg,.jpeg,.png" class="treelike-comments_file_input" multiple="multiple" name="treelike-comments_file_input[]" type="file" />
		</div>

		<div class="treelike-comments_preview" style="display: none;">
			 
		</div>
		<input name="content_type" type="hidden" value="other" /><button class="sendComment">Комментировать</button><br />
		 
		<div class="comment-subscribe">
			Получать уведомления о новых коментариях: <input id="comment-subscribe" name="comment-subscribe" style="width:14px;" type="checkbox" />
		</div>
		</form>

		<div class="clear">
			 
		</div>

		<ul id="root">
			<li id="comment-2">
				<div class="comment-info">
					<div class="top-line clearfix">
						<span class="author" itemprop="author">Администратор</span> <span class="date">28.02.2019 12:26</span> <span class="action"> <a class="modify" data-id="2" href="javascript:void(0);"> Редактировать</a> <a class="delete" data-id="2" href="javascript:void(0);"> Удалить</a> </span>
					</div>

					<div class="comment-line" itemprop="description">
						Напишите отзыв или задайте вопрос.
					</div>

					<div class="bottom-line clearfix">
						<span class="answer"><a class="answer" data-depth="0" data-id="2" href="javascript:void(0);">Ответить</a> </span>

						<div class="clear">
							 
						</div>
					</div>
				</div>
			</li>
		</ul>

		<div class="hiddendiv common">
			 
		</div>
	</div>
</div>]]>
</content:encoded>
</item>
</channel>
</rss>