Компилируем прошивку для микроконтроллеров STCmicro Limited (8051)

( 6 Голосов )

Я уже рассказывал про микроконтроллер STC15W408AS, с архитектурой 8051, будет обзор на ещё один МК от STCmicro Limited - STC15W204S. Для загрузки в эти МК своей прошивки, её вначале нужно скомпилировать и в данной статье я расскажу, как это сделать, с помощью Keil uVision 5. Данный материал будет полезен и для других МК с архитектурой 8051.

Микроконтроллеры компании STCmicro Limited становятся популярными, на Aliexpress можно купить набор, для сборки часов на STC15W408AS. Программа для прошивки МК обычно предоставляется в виде исходных кодов, которые нужно скомпилировать, в результате получим hex-файл, который нужно будет загрузить в МК, с помощью фирменной утилиты.

Компилировать программу будем в среде разработки Keil uVision 5. Данное ПО платное, но можно скачать ознакомительную версию, в которой компилятор, ассемблер, компоновщик и отладчик 8051 ограничены 2 Кб объектного кода. Если будите писать программы до 2 Кб, то эти ограничения для вас не страшны, в противном случае, программы, которые генерируют более 2 Кбайт объектного кода, не будут компилироваться, собираться или связываться.

Keil uVision можно скачать на официальном сайте.

Keil uVision 5

Заполняем форму и в ответ нам предоставят ссылку для скачивания дистрибутива.

Keil uVision 5

Установив, запускаем программу.

Keil uVision 5 and stc

Создаём проект, с помощью пунктов меню "Project" – "New uVision Project …"

Keil uVision 5

Пишем имя проекта, у меня это blink. Каждый проект желательно размещать в отдельной папке, в моём примере это папка blink, нажимаем "Сохранить".

Keil uVision 5

Проект сохранится с расширением .uvproj

Keil uVision 5

Выбираем микроконтроллер, для которого будем писать программу. В поле "Search:" пишем "8052" и в выпадающем списке выбираем в пункте "Generic" - "8052 (all Variants)" и нажимаем "ОК".

Keil uVision 5

На вопрос "Copy 'STARTUP.A51' to Project Folder and Add File to Project?" отвечаем "Нет".

Keil uVision 5

Так будет выглядеть панель проекта.

Keil uVision 5

Создадим новый файл, для этого нажмём на соответствующую иконку или воспользуемся комбинацией "Ctrl + N". Появится поле для ввода кода.

 

Keil uVision 5

Введём в это поле код, в примере это будет код для мигания светодиодом (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 миллисекунд).

Keil uVision 5

Сохраним введённый код в формате С-файла, для этого воспользуемся соответствующей иконкой на панели или с помощью комбинации клавиш "Ctrl + S". Файл необходимо сохранить с любым именем и расширением ".c" (в примере main.c).

Keil uVision 5

Имя файла изменится на то, которое выбрали при сохранении.

Keil uVision 5

Теперь нужно добавить этот С-файл в наш проект, для этого правой кнопкой мыши клацаем на папке "Source Group 1" и в меню выбираем пункт "Add Existing Files to Group  'Source Group 1'".

Keil uVision 5

Выбираем С-файл, который нужно добавить в проект (main.c) и нажимаем "Add" для его добавления, затем "Close", что бы закрыть это окно.

Keil uVision 5

main.c добавлен в наш проект.

Keil uVision 5

Перед сборкой проекта нужно настроить формат вывода, нам необходимо вывести в hex-файл. Для этого клацаем правой кнопкой мыши на папке "Target 1" и выбираем "Options for Target 'Target1'...".

Keil uVision 5

В окне "Options for Target ' Target 1'" выбираем вкладку "Output", выставляем флажок в пункте "Create Hex File", нажимаем ОК.

 

Keil uVision 5

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

Keil uVision 5

Файл "blink.hex" будет создан в папке проекта, в подпапке "Objects". Теперь его можно загрузить в микроконтроллер, с помощью утилиты "STC-ISP".

Попробуйте изменить в коде, в строке "Delay_us(10);" значение на 1000, пересобрать hex-файл и загрузить его в микроконтроллер. Светодиод должен мигать не так часто.

 

Давайте рассмотрим ещё один пример, добавив к светодиоду тактовую кнопку. В этом примере, светодиод будет зажигаться, если будет нажата кнопка.

led and button

Подключаем внешний светодиод и тактовую кнопку к свободным пинам на отладочной плате 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;".

Попробуй собрать программу из исходных кодов, загрузить в микроконтроллер и проверить её в действии.

Комментарии

+1 #8 Радиолис 01.05.2021 13:10
Цитирую Igor:
Да в общем то не становится линейка STC популярной, по причине того, что кроме крякнутого Кейла, ничем более не откомпилиш прогу на этот микроконтроллер. Китайцы на ворованых интеловских технологиях добавив тех же ворованых технологий современных создали неплохой экземпляр -- и фсЁ! Чуть более написать кода, чем пример в сей статье -- и ERROR -- привышение лимита 2кб! :-/

Для любителей и студентов к сожалению так и есть. Но ведь производитель не на них рассчитывает, а на крупные центры разработки, у которых должна быть лицензия на Кейл. С помощью этой линейки решается как минимум две проблемы:
1. Импортозамещени е в самом Китае.
2. Кто захочет выпускать свою продукцию на 8051 дешевле, тот с американских МК, может перейти на Китайские.
Есть вроде вариант бесплатной среды для компиляции, но пока до конца не протестировал.
0 #7 Igor 01.05.2021 12:16
Да в общем то не становится линейка STC популярной, по причине того, что кроме крякнутого Кейла, ничем более не откомпилиш прогу на этот микроконтроллер . Китайцы на ворованых интеловских технологиях добавив тех же ворованых технологий современных создали неплохой экземпляр -- и фсЁ! Чуть более написать кода, чем пример в сей статье -- и ERROR -- привышение лимита 2кб! :-/
0 #6 Радиолис 02.02.2021 00:06
Цитирую инна:
сам куб поддерживает прямое общение с программой 3D8S Alpha ,но как сохранить в памяти эти программы не понятно .пока программа включена и вход соединён с ПК все бегает, а как офлайн сохранить эти программы в куб ,не могу понять .ни какой информации нет.


Прочитал я про этот куб. Существует несколько версий куба, в зависимости от прошивки:
1. Просто куб, со встроенными эффектами, одноцветный.
2. Куб с возможностью подключения к Ардуино. В данном случае, Ардуино не прошивает куб, а по UART, передаёт массив, какие светодиоды и как зажечь. Здесь плюс Ардуино в том, что можно разнообразить световые эффекты. Минусы: Ардуино должна быть всегда подключена и так же требуются знания работы с Ардуино и работы со скетчами.
3. Куб с поддержкой Ардуино, пульта, которым можно переключать вшитые в MCU эффекты и возможность подключать звук.
4. Тоже самое, что и 3-й вариант, только ещё имеется поддержка работы с программой 3D8S Alpha. Эта программа делает тоже самое, что и Ардуино - через UART выводит массивы со световыми эффектами.
Плюс программы в том, что не нужно покупать Ардуино и разбираться в его подключении и программировании.
5. Поддержка работы с программой 3D8S Alpha и карты памяти. Вот этот вариант куба можно запрограммирова ть и пользоваться своими эффектами автономно. В 3D8S создаётся эффект, затем данные записываются на карту памяти и куб её проигрывает.
6. Поддержка карты памяти и встроенного динамика. На динамик можно выводить звуковые эффекты.

Вывод, что бы программировать свои эффекты и ими пользоваться автономно без сторонних девайсов:
1. Собрать куб 5-й или 6-й версии.
2. Можно апгрейдить свой куб до другой версии, заменив/добавив недостающие компоненты + где-то раздобыв прошивку. Китайцы просто так эту прошивку не дадут, они хотят продавать кубы разных версий, не хотят себе конкурентов.
3. Написать с нуля свою прошивку на С, скомпилировать её например в Keil и загрузить через утилиту STC-ISP в микроконтроллер от STC.
0 #5 инна 01.02.2021 21:38
сам куб поддерживает прямое общение с программой 3D8S Alpha ,но как сохранить в памяти эти программы не понятно .пока программа включена и вход соединён с ПК все бегает, а как офлайн сохранить эти программы в куб ,не могу понять .ни какой информации нет.
0 #4 Радиолис 01.02.2021 19:39
Цитирую инна:
этот контроллер от китайского конструктора .3D LED cube ,а к этому конструктору приложены коекак написанные файлы для создания анимации . но много что не понятно есть приложение для создания эффектов ,но нет ни одного готового файла куда бы можно вставить полученный код из этого приложения .вот и пытаюсь что то изобразить файлы могу поделиться может что то подскажете как надо правильно с ними работать .и еще вопрос а можно через ардуино работать с этим STC12a5c60s2 есть несколько проектов в которых контроллеры серии STC подключены через ардуино и прошивка и редактор с компилятором ,не подскажете как это можно сделать


Можете файлы загрузить куда нибудь в облако и в обратной связи или в комментарии оставить ссылку, посмотрю.

Ардуино - это платформа, построенная на микроконтроллер ах ATmega (уже это Microchip). В вашем же случае, микроконтроллер от STC и они не поддерживают программу Arduino IDE.

Для интереса, скиньте названия проектов, "...в которых контроллеры серии STC подключены через ардуино и прошивка и редактор с компилятором".
0 #3 инна 01.02.2021 18:30
этот контроллер от китайского конструктора .3D LED cube ,а к этому конструктору приложены коекак написанные файлы для создания анимации . но много что не понятно есть приложение для создания эффектов ,но нет ни одного готового файла куда бы можно вставить полученный код из этого приложения .вот и пытаюсь что то изобразить файлы могу поделиться может что то подскажете как надо правильно с ними работать .и еще вопрос а можно через ардуино работать с этим STC12a5c60s2 есть несколько проектов в которых контроллеры серии STC подключены через ардуино и прошивка и редактор с компилятором ,не подскажете как это можно сделать
+1 #2 Радиолис 01.02.2021 15:52
STC15W408AS - улучшенный 8051. Его ядро быстрее, чем традиционный 8051, в выполнении инструкций. где-то 8 ~ 12 раз. В KEIL VISION нужно выбирать 8052, несмотря на то, что это 8051, в качестве файла заголовка указываем "reg51.h". Это не мои открытия, это информация с официального даташита. Для STC15W408AS всё делаете как в этой статье.

STC12C5A60S2 - так же улучшенный, построен на базе высокопроизводи тельного процессора 80C51 архитектуры 1T. Выполняет инструкции в 1 ~ 6 тактов, это где-то в 6 ~ 7 раз больше, чем у стандартного 8051. В даташите сказано, что ядро процессора STC12C5A60S2 полностью совместимо со стандартным микроконтроллер ом 8051. В KEIL VISION можно выбрать Intel 8052/87C52/87C5 2/87C58 или Philips P87C52/P87C54/P87C58

Можно в KEIL VISION заменить базу микроконтроллер ов на MCU от STC, после этого в KEIL будут только их МК, других производителей не будет.
Для этого файлы (*.CDB) нужно заменить в KEIL VISION. Имеются файлы для KEIL VISION версий 2,3 и 4. Про 5 версию ничего не сказано, написал по этому случаю письмо разработчику, жду ответ, затем сделаю подробную статью.
0 #1 инна 01.02.2021 14:24
я спросить .А какому типу относится контроллер STC12C5A60S2. указанный в вашей статье STC15W408AS==80 51 или 8052? как определить тип контроллера если в даташите пишут что семейство 8051 , но изменены и улучшены .какой тип контроллера нужно выбрать в программе KEIL VISION при создания нового проекта в разделе тип контроллера.

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