Последние комментарии
- 04.12.2020 23:39
-
04.12.2020 13:36
При выключении роутера все настройки сбиваются, что ...
-
14.10.2020 13:25
В мире нет ни одного полноценного эмулятора LPT ...
-
13.10.2020 02:19
CH341 підтримує напругу джерела 5 В і 3,3 В. При ...
-
28.09.2020 21:41
Будет в октябре)
Самое читаемое
- Переходник USB to COM (RS232) YP-01 на чипе PL2303HX
- Знакомство с Arduino Pro mini на примере китайского аналога
- Подключаем мощную нагрузку к Arduino, через реле модуль
- Обход блокировки Одноклассников, Вконтакте, Яндекс и Маил.ру с помощью OpenVPN
- Знакомство с Arduino UNO на примере китайского аналога
- Многофункциональный программатор на CH341A
- Часы реального времени DS3231SN (ZS-042). Подключение к Arduino
- Управляем Arduino через Bluetooth HC-06, с компьютера или смартфона
- Знакомство с Arduino Micro (ATmega32U4) на примере китайского аналога Pro Micro
- Преобразователь напряжения XL6009 и практическое его применение
Компилируем прошивку для микроконтроллеров STCmicro Limited (8051)
Я уже рассказывал про микроконтроллер STC15W408AS, с архитектурой 8051, будет обзор на ещё один МК от STCmicro Limited - STC15W204S. Для загрузки в эти МК своей прошивки, её вначале нужно скомпилировать и в данной статье я расскажу, как это сделать, с помощью Keil uVision 5. Данный материал будет полезен и для других МК с архитектурой 8051.
Микроконтроллеры компании STCmicro Limited становятся популярными, на Aliexpress можно купить набор, для сборки часов на STC15W408AS. Программа для прошивки МК обычно предоставляется в виде исходных кодов, которые нужно скомпилировать, в результате получим hex-файл, который нужно будет загрузить в МК, с помощью фирменной утилиты.
Компилировать программу будем в среде разработки Keil uVision 5. Данное ПО платное, но можно скачать ознакомительную версию, в которой компилятор, ассемблер, компоновщик и отладчик 8051 ограничены 2 Кб объектного кода. Если будите писать программы до 2 Кб, то эти ограничения для вас не страшны, в противном случае, программы, которые генерируют более 2 Кбайт объектного кода, не будут компилироваться, собираться или связываться.
Keil uVision можно скачать на официальном сайте.
Заполняем форму и в ответ нам предоставят ссылку для скачивания дистрибутива.
Установив, запускаем программу.
Создаём проект, с помощью пунктов меню "Project" – "New uVision Project …"
Пишем имя проекта, у меня это blink. Каждый проект желательно размещать в отдельной папке, в моём примере это папка blink, нажимаем "Сохранить".
Проект сохранится с расширением .uvproj
Выбираем микроконтроллер, для которого будем писать программу. В поле "Search:" пишем "8052" и в выпадающем списке выбираем в пункте "Generic" - "8052 (all Variants)" и нажимаем "ОК".
На вопрос "Copy 'STARTUP.A51' to Project Folder and Add File to Project?" отвечаем "Нет".
Так будет выглядеть панель проекта.
Создадим новый файл, для этого нажмём на соответствующую иконку или воспользуемся комбинацией "Ctrl + N". Появится поле для ввода кода.
Введём в это поле код, в примере это будет код для мигания светодиодом (Blink). По-умолчанию в моей плате уже был залит код для мигания светодиода, но в примере сделаем мигание чаще.
#include <reg51.h> sbit led=P1^0; void Delay_us(int n) { int x; while (n--) { x = 5000; while (x--); } } void main() { led=1; while(1) { led=~led; Delay_us(10); } } |
Исходный код программы Blink. В строке "sbit led=P1^0;" указывается пин, к которому подключен светодиод. На отладочной плате STC15W408AS, светодиод подключен к пину P10. В строке "Delay_us(10);" задаётся количество миллисекунд, на которое останавливается выполнение программы (в примере это 10 миллисекунд).
Сохраним введённый код в формате С-файла, для этого воспользуемся соответствующей иконкой на панели или с помощью комбинации клавиш "Ctrl + S". Файл необходимо сохранить с любым именем и расширением ".c" (в примере main.c).
Имя файла изменится на то, которое выбрали при сохранении.
Теперь нужно добавить этот С-файл в наш проект, для этого правой кнопкой мыши клацаем на папке "Source Group 1" и в меню выбираем пункт "Add Existing Files to Group 'Source Group 1'".
Выбираем С-файл, который нужно добавить в проект (main.c) и нажимаем "Add" для его добавления, затем "Close", что бы закрыть это окно.
main.c добавлен в наш проект.
Перед сборкой проекта нужно настроить формат вывода, нам необходимо вывести в hex-файл. Для этого клацаем правой кнопкой мыши на папке "Target 1" и выбираем "Options for Target 'Target1'...".
В окне "Options for Target ' Target 1'" выбираем вкладку "Output", выставляем флажок в пункте "Create Hex File", нажимаем ОК.
Теперь можно построить проект, для этого воспользуемся соответствующей иконкой или нажмём F7. Если код написан правильно, то ошибок не должно быть.
Файл "blink.hex" будет создан в папке проекта, в подпапке "Objects". Теперь его можно загрузить в микроконтроллер, с помощью утилиты "STC-ISP".
Попробуйте изменить в коде, в строке "Delay_us(10);" значение на 1000, пересобрать hex-файл и загрузить его в микроконтроллер. Светодиод должен мигать не так часто.
Давайте рассмотрим ещё один пример, добавив к светодиоду тактовую кнопку. В этом примере, светодиод будет зажигаться, если будет нажата кнопка.
Подключаем внешний светодиод и тактовую кнопку к свободным пинам на отладочной плате STC15W204S. В примере, светодиод я подключил к пину P14, а кнопку к P13.
Создаём новый проект и всё проделываем так же, как и с примером Blink, только пишем новый код:
#include<reg51.h> sbit Button = P1^3; sbit LED = P1^4; void main() { Button=1; LED=0; while(1){ if(Button==0) LED=1; else LED=0; } } |
В строке "sbit Button = P1^3;" указываем пин, к которому подключаем кнопку. В строке "sbit LED = P1^4;" - пин со светодиодом.
К отладочной плате на STC15W204S, не нужно подключать внешний светодиод и кнопку, они уже распаяны на плате, нужно лишь указать правильно пины в коде: для кнопки - "sbit Button = P3^2;", для светодиода - "sbit LED = P3^3;".
Попробуй собрать программу из исходных кодов, загрузить в микроконтроллер и проверить её в действии.
Подробнее...