Первые шаги в программировании на языке Си для микроконтроллеров AVR следует начинать не с приобретения контроллера и программатора, а с чтения книг и освоения работы в различного рода средах программирования типа AVR Studio, CodeVisionAVR, или  Flowcode V4 for AVRs. А самое удобное начинать осваивать программирование микроконтроллеров, с анализа простых программных примеров один из которых можно можно найти здесь.

Простая программа для микроконтроллера Аttiny2313:

Многие радиолюбители начинают освоение языка Си и микроконтроллеров AVR именно работая с весьма удобной и простой средой программирования AVR Studio. Которую легко скачать и поставить следует только знать что необходимо после установки AVR Studio ещё скачать и поставить WinAVR. Обе программных среды есть в свободном доступе.

Для начала следует научиться правильно, создавать проекты в AVR Studio на языке Си. Для самообразования написано уже достаточно много книг в которых вы сможете  прочитать как правильно создать проект в AVR Studio.

Рисунок №1 – Выбор нового проекта
Рисунок №2 – Выбираем язык программирования Си, называем проект bipmip и выбираем папку для сохранения (где вам удобно)

Следует только отметить, что папка, куда вы будите сохранять свои проекты и путь к ней не должны содержать русских букв (только английский алфавит) иначе ничего не получится.

Рисунок №3 – Выбираем тип симулятора и тип микроконтроллера

После того как вы успешно создали свой проект можно начинать прописывать программу.

Листинг программы для микроконтроллера:

Листинг программы – это ничто иное как её текст (от самой программы до комментариев)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//_____________________________________________________\\
//|             |                     |               |\\
//|    Дата     |   Микроконтроллер   |   Автор       |\\
//|_____________|_____________________|_______________|\\
//|             |                     |               |\\
//| 08.11.2013  | Attyni2313 [4 МГЦ]  |  bip-mip.com   |\\
//|_____________|_____________________|_______________|\\
//|
//|Версия 1.2    
//|
//
/*||Мигалка с двумя светодиодами|| 
  Поочерёдно мигает два светодиода подключённых к порту B0 и B1 микроконтроллера Attyni2313*/
 
        #include <avr/io.h>           // Подключаю Библиотеку ввода-вывода
        #include <util/delay.h>       // Подключаю Библиотеку задержек
 
char main(void)                       //Выделяю место для основной вункции программы (контейнер для программы)
 
{                                     //Начало основной функци
 
    DDRB =  0b0000011;               //Конфигурирую порты B0 и B1 как вывод (1 - означает выход)
    PORTB = 0b0000010;               //Определяю начальное состояние порта B1 ( на выводе есть логическая единица)
         while(1)                    //Запускаю цыкл
    {                                //Начало цыкла
        _delay_ms(50);               //Задержка 50 ms (ждёт 50 ms и выполняет следующее действие)
 
        PORTB = PORTB>>1;           //Переключаю логическую единицу с порта B1 на B0 
        if (PORTB=0b0000001)        //Ставлю условие "если единица на порте B1"
        _delay_ms(50);              //Снова задержка 50 ms (ждёт) 
        {PORTB = 0b0000010;}        //Вернуть в начальное состояние 
 
    }                                 
 
    return 0;                         
 
}
//_____________________________________________________\\
//|             |                     |               |\\
//|    Дата     |   Микроконтроллер   |   Автор       |\\
//|_____________|_____________________|_______________|\\
//|             |                     |               |\\
//| 08.11.2013  | Attyni2313 [4 МГЦ]  |  bip-mip.com   |\\
//|_____________|_____________________|_______________|\\
//|
//|Версия 1.2    
//|
//
/*||Мигалка с двумя светодиодами|| 
  Поочерёдно мигает два светодиода подключённых к порту B0 и B1 микроконтроллера Attyni2313*/

		#include <avr/io.h>           // Подключаю Библиотеку ввода-вывода
		#include <util/delay.h>       // Подключаю Библиотеку задержек

char main(void)                       //Выделяю место для основной вункции программы (контейнер для программы)

{ 									  //Начало основной функци

    DDRB =  0b0000011;               //Конфигурирую порты B0 и B1 как вывод (1 - означает выход)
	PORTB = 0b0000010;				 //Определяю начальное состояние порта B1 ( на выводе есть логическая единица)
         while(1) 					 //Запускаю цыкл
    {                                //Начало цыкла
        _delay_ms(50);				 //Задержка 50 ms (ждёт 50 ms и выполняет следующее действие)

        PORTB = PORTB>>1;			//Переключаю логическую единицу с порта B1 на B0 
        if (PORTB=0b0000001)		//Ставлю условие "если единица на порте B1"
    	_delay_ms(50);				//Снова задержка 50 ms (ждёт) 
        {PORTB = 0b0000010;}        //Вернуть в начальное состояние 

	}                                 

    return 0;                         

}

Безусловно, если вы новичок в программировании микроконтроллеров на языке СИ, то вам непонятно ни строчки в моём листинге. Настоятельно рекомендую вам обложится книжками и пособиями по программированию, не ленитесь их читать – со временем всё станет ясным!

Следует только отметить:

// или сочетание /*текст */ — Это  всё означает комментарий – пояснение тех действий которые выполняет программа (комментарий необходим для вас), для компилятора, комментарии невидимы – они просто не существуют.

Я из комментариев составляю себе удобные заготовки или шпаргалки – что очень выручает особенно когда вы новенький в программировании.

Прописав листинг программы в специальном окне вам необходимо её сохранить и скомпилировать (для компиляции нужно нажать F7).

Скомпилировать – это означает проверить программу на наличие ошибок как логических так и грамматических, а их часто допускают даже опытны программисты не говоря уже о начинающих радиолюбителях.

Если листинг моей программы набран вами правильно то ошибок быть не должно и вы увидите зелёный свет, а если нет – то будьте внимательными проверяйте на ошибки и пытайтесь понять в чём там дело.

Рисунок №4 – Скомпилированная правильно программа

Для того что бы проверить как работает программа после компиляции достаточно нажать Shift+F5 и программа покажет вам что происходит.

Рисунок №5 – Горит светодиод подключённый к порту РВ1
Рисунок №6 – Горит светодиод подключённый к порту РВ0

P.S.  Я постарался привести наиболее понятный и простой пример примитивной программы для микроконтроллера Аttiny2313. Я не являюсь опытным программистом потому с радостью принимаю конструктивную критику и полезные советы. Эта программа далеко не единственное что можно найти на нашем сайте http://bip-mip.com/

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Подтвердите, что Вы не бот — выберите человечка с поднятой рукой: