реклама на сайте
подробности

 
 
> MCS-51, Первые шаги
bragol
сообщение Aug 15 2011, 11:45
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 15-08-11
Пользователь №: 66 729



Доброго времени суток.
Я программист, учусь в аспирантуре, долго не мог найти работу по специальности и сейчас попал в один НИИ на испытательный срок.
Суть работы программирование микроконтроллеров семейства MCS-51 на Си.
До этого писал всю жизнь под винду, сейчас надо в кратчайшие сроки, а именно 2 недели получить базовые знания и навыки в новой для меня отрасли для успешного попадания в штат.
Задачи поставили следующие:
Ознакомиться с архитектурой данного семейства, найти бесплатный компилятор, научиться писать простейшие программы на СИ, например мигание светодиодов и т.д..
С первыми пунктами все более менее понятно.
Пока я остановился на следующем:
В качестве компилятора я выбрал SDCC
В качестве IDE Code::Blocks
В качестве симулятора выбрал EdSim51, но пока не успел опробовать, все еще впереди.

Далее куча вопросов. Что посоветуете делать дальше?
Прочел уже страниц 30 родной документации к компилятру, не впечатлило, как-то скудно описано и не очень понятно, может-быть из-за отсутствия опыта...
Какую литературу посоветуете желательно русскоязычную для начинающих, именно Си и именно данное семейство микроконтроллеров.
Может быть есть исходники простейшие, желательно с комментами...

Не побрезгаю любыми советами
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
bragol
сообщение Aug 18 2011, 12:46
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 15-08-11
Пользователь №: 66 729



Цитата
А вот это зависит от НИИ . О существовании правильного НИИ они и не узнают. Если руководство НИИ задумалось о легальности, то НИИ, полагаю, совсем даже не "правильный" . Хотя, слово легальность Автором не произносилось - только бесплатность .

Была поставлена задача найти компилятор Сишный, а какой он должен быть мне не сказали, вот я и решил искать и среди бесплатных, и среди платных, которые можно сделать бесплатными и полноценными, как-то так))) PS НИИ занимается разработкой радиоизмерительных приборов, всяких ватметров и т.д.
Теперь по делу, вот модернизированный код с первой страницы, так лучше? Все ли правильно?

Цитата
#include <ADUC812.H>
#include <stdio.h>

void blink( unsigned int );
sbit BLINK = P1^0;

void main()
{
unsigned int counter = 28; // диод мигает раз в 2 секунды
P1 = 0x0FE;
TH0 = 0x0; // установка старшего и младшего битов в 0
TL0 = 0x0;
TMOD |= 0x1; // утанавливает все биты регистра режимов в 1
TR0 = 1; // включает таймер/счетчик Т/С0

while( 1 )
{
blink( counter );
}
}

void blink( unsigned int count )
{
if (TF0 == 1) // флаг преполнения
{
TF0 = 0; // если Т/С переполнился вернуть флаг в 0
--count;
if (count == 0)
{
count = 28;
BLINK = ~BLINK;
}
}
}


Пока не понимаю вот это:
1) P1 = 0x0FE; для чего присваивать порту значение 254, если правильно перевел?
2) TMOD |= 0x1; Эта строка присваивает всем битам регистра значение 1 так? Если да, то сто происходит с битами в первом случае?
3) По идее светодиод должен мигать раз в 2 секунды если верить вот этому:
Цитата
В этом случае таймер 0 инкрементируется 11059000 / 12 = 921583 раз в секунду. При
этом интервал между тиками составляет 65536 / 921583 = 0,071 с (берем 3 знака после запя$
той). Следовательно, по прошествии 2 с таймер должен перегрузиться 2 / 0,071 = 28


Пока с вопросами все.

Сообщение отредактировал bragol - Aug 18 2011, 12:49
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Aug 19 2011, 05:47
Сообщение #3


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(bragol @ Aug 18 2011, 18:46) *
Теперь по делу, вот модернизированный код с первой страницы, так лучше? Все ли правильно?
Код
void main()
{
    unsigned int counter = 28; // диод мигает раз в 2 секунды
..
    while( 1 )
    {
        blink( counter );
    }
}

void blink( unsigned int count )
{
    ..
    --count;
    if (count == 0)
    {
        count = 28;

Неправильно. В функции blink() вы пытаетесь изменять параметр count, и надеетесь, что он изменится в вызывающей функци (main). А это не так, параметр здесь передаётся по значению. То есть, при каждом вызове функции blink() значение параметра count будет 28.
Чтобы изменять значение параметра, надо передать указатель на него.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
bragol
сообщение Aug 19 2011, 07:44
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 15-08-11
Пользователь №: 66 729



Цитата(AHTOXA @ Aug 19 2011, 09:47) *
Неправильно. В функции blink() вы пытаетесь изменять параметр count, и надеетесь, что он изменится в вызывающей функци (main). А это не так, параметр здесь передаётся по значению. То есть, при каждом вызове функции blink() значение параметра count будет 28.
Чтобы изменять значение параметра, надо передать указатель на него.

Вы правы, спасибо за комментарий по делу

Я кстати ошибся с МК, тут у меня используют 814...

Цитата
#include <stdio.h>
#include <ADUC814.H>

void blink( unsigned int * );
sbit BLINK = P1^0;
//int cik = 0;

void main()
{
unsigned int counter = 28;
unsigned int *ptr = &counter;
P1 = 0x0FE;
TH0 = 0x0;
TL0 = 0x0;
TMOD |= 0x1;
TR0 = 1;

while( 1 )
{
blink( ptr );
}
}

void blink( unsigned int *count )
{
if (TF0 == 1)
{
TF0 = 0;
--(*count);
if (*count == 0)
{
*count = 28;
BLINK = ~BLINK;
}
}
}
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- bragol   MCS-51   Aug 15 2011, 11:45
- - vladec   Для 51-х лучше, наверное, работать в среде Keil (w...   Aug 16 2011, 05:35
- - _Pasha   Сташин Урусов - это книга для быстрого вкуривания ...   Aug 16 2011, 05:55
|- - kolobok0   Цитата(_Pasha @ Aug 16 2011, 09:55) ...Ке...   Aug 16 2011, 10:00
|- - zltigo   QUOTE (kolobok0 @ Aug 16 2011, 12:00) По ...   Aug 16 2011, 12:08
- - bragol   Все бы хорошо, но начальству нужен полноценный бес...   Aug 16 2011, 05:55
- - sergeeff   Есть нюанс между Keil и SDCC. Они по разному упако...   Aug 16 2011, 06:03
- - bragol   ЦитатаЕсть нюанс между Keil и SDCC. Они по разному...   Aug 16 2011, 06:18
- - zovsilab   На мой взгляд самая лучшая книга по MCS-51 это Фру...   Aug 16 2011, 06:28
- - bragol   Спасибо большое. С книгами по архитектуре МК пробл...   Aug 16 2011, 06:37
- - zovsilab   Запомните! Перед тем как писать программу для ...   Aug 16 2011, 06:48
|- - _Pasha   Цитата(zovsilab @ Aug 16 2011, 09:48) По ...   Aug 16 2011, 06:52
- - bragol   ЦитатаПо поводу выше приведенного кода - светодиод...   Aug 16 2011, 07:47
- - bragol   ЦитатаЕще по теме - не использовать 51 вообще, за...   Aug 16 2011, 12:25
|- - zltigo   QUOTE (bragol @ Aug 16 2011, 14:25) 1) Чт...   Aug 16 2011, 12:32
|- - tyro   Цитата(zltigo @ Aug 16 2011, 16:32) От Ва...   Aug 16 2011, 12:59
|- - zltigo   QUOTE (tyro @ Aug 16 2011, 14:59) Но здес...   Aug 16 2011, 14:10
- - one_eight_seven   Практически программа строится немного не так, как...   Aug 16 2011, 14:38
|- - zltigo   QUOTE (one_eight_seven @ Aug 16 2011, 16...   Aug 16 2011, 15:03
- - sergeeff   Если товарищу очень хочется работать именно в этом...   Aug 16 2011, 15:25
- - bragol   ЦитатаДаже, если Вас съели, у Вас есть ДВА выхода ...   Aug 17 2011, 05:39
|- - zltigo   QUOTE (bragol @ Aug 17 2011, 07:39) Кстат...   Aug 17 2011, 09:49
||- - Белка12   Цитата(zltigo @ Aug 17 2011, 13:49) Ой, к...   Feb 7 2013, 00:07
||- - Tiro   Цитата(Белка12 @ Feb 7 2013, 03:07) А 51 ...   Feb 7 2013, 21:00
||- - Белка12   Цитата(Tiro @ Feb 8 2013, 01:00) Все прох...   Feb 7 2013, 21:32
||- - paskal   Цитата(Tiro @ Feb 8 2013, 01:00) Все прох...   Jun 16 2013, 18:47
||- - Tarbal   Цитата(paskal @ Jun 16 2013, 22:47) Насче...   Aug 31 2013, 21:42
||- - Harbinger   Цитата(Tarbal @ Sep 1 2013, 00:42) Когда ...   Sep 1 2013, 07:19
|- - VladimirB   Цитата(bragol @ Aug 17 2011, 09:39) 51 ко...   Aug 17 2011, 10:40
|- - kolobok0   Цитата(VladimirB @ Aug 17 2011, 14:40) .....   Aug 17 2011, 13:50
|- - tyro   Цитата(VladimirB @ Aug 17 2011, 14:40) Им...   Aug 17 2011, 16:08
|- - scifi   Цитата(VladimirB @ Aug 17 2011, 14:40) Яз...   Aug 18 2011, 08:55
|- - Onic777   Добрый день! Цитата(VladimirB @ Aug 17 ...   Oct 12 2013, 19:17
|- - Harbinger   Цитата(Onic777 @ Oct 12 2013, 22:17) Напр...   Oct 13 2013, 07:32
|- - ViKo   Цитата(Onic777 @ Oct 12 2013, 22:17) Напр...   Oct 13 2013, 08:19
- - bragol   ЦитатаKeil стало быть не нормальный , да и IAR вр...   Aug 18 2011, 05:16
|- - _3m   Цитата(bragol @ Aug 18 2011, 09:16) Они и...   Aug 18 2011, 05:53
|- - bragol   Цитата(_3m @ Aug 18 2011, 09:53) Не получ...   Aug 18 2011, 06:08
|- - _3m   Цитата(bragol @ Aug 18 2011, 10:08) (1) К...   Aug 18 2011, 06:59
|- - zltigo   QUOTE (_3m @ Aug 18 2011, 08:59) Так пров...   Aug 18 2011, 08:50
- - sergeeff   Все что вы рассказываете видел в своей жизни лет 2...   Aug 18 2011, 06:34
- - one_eight_seven   ЦитатаСовременные МК в большинстве случаев имеют в...   Aug 18 2011, 10:57
|- - zltigo   QUOTE (one_eight_seven @ Aug 18 2011, 12...   Aug 18 2011, 11:04
- - one_eight_seven   ЦитатаХотя проблем с системой команд и заброшеннос...   Aug 18 2011, 11:43
|- - scifi   Цитата(bragol @ Aug 18 2011, 16:46) 1) P1...   Aug 18 2011, 12:55
||- - bragol   Цитата(scifi @ Aug 18 2011, 16:55) Почита...   Aug 18 2011, 13:35
||- - sergeeff   Цитата(bragol @ Aug 18 2011, 16:35) Непри...   Aug 18 2011, 15:24
||- - zltigo   QUOTE (sergeeff @ Aug 18 2011, 18:24) Ну ...   Aug 18 2011, 15:31
||- - bragol   Цитата(zltigo @ Aug 18 2011, 19:31) Конеч...   Aug 19 2011, 04:57
||- - zltigo   QUOTE (bragol @ Aug 19 2011, 07:57) На пл...   Aug 19 2011, 19:12
- - sergeeff   Ура! Светодиодик моргает. Начальство должно б...   Aug 19 2011, 18:47
- - scifi   Чем соревноваться в сарказме, лучше перенесли бы в...   Aug 19 2011, 20:37
- - sergeeff   Проявление сарказма может подвигнет автора топика ...   Aug 20 2011, 09:29
- - bragol   А есть у кого-нибудь программа Windows Serial Down...   Aug 22 2011, 07:26
|- - sergeeff   Цитата(bragol @ Aug 22 2011, 10:26) А ест...   Aug 22 2011, 07:48
||- - bragol   Цитата(sergeeff @ Aug 22 2011, 11:48) По ...   Aug 22 2011, 08:41
||- - Lmx2315   Прошу прощения уважаемые ! На форуме одно вре...   Aug 22 2011, 09:10
|||- - zltigo   QUOTE (Lmx2315 @ Aug 22 2011, 12:10) прош...   Aug 22 2011, 09:52
|||- - Lmx2315   ..скатертью дорога.   Aug 22 2011, 09:57
|||- - sergeeff   Цитата(zltigo @ Aug 22 2011, 12:52) Отлич...   Aug 22 2011, 10:10
|||- - zltigo   QUOTE (sergeeff @ Aug 22 2011, 13:10) И н...   Aug 22 2011, 11:12
|||- - Lmx2315   ..заигрался , не под тем ником ответил.   Aug 22 2011, 11:26
|||- - bragol   Цитата(zltigo @ Aug 22 2011, 15:12) Это-ж...   Aug 22 2011, 11:31
||- - sergeeff   Цитата(bragol @ Aug 22 2011, 11:41) У мен...   Aug 22 2011, 09:42
|- - Verifi   Цитата(bragol @ Aug 22 2011, 11:26) А ест...   Aug 29 2011, 07:27
|- - bragol   Цитата(Verifi @ Aug 29 2011, 11:27) И не ...   Aug 29 2011, 08:09
- - sergeeff   Цитатато-же не Вам был ответ sad.gif, а Lmx2315. О...   Aug 22 2011, 11:28
- - bragol   Кто-нибудь использовал EdSim51? Если писать на ас...   Aug 26 2011, 07:14
|- - paskal   Цитата(bragol @ Aug 26 2011, 11:14) Если ...   Aug 26 2011, 16:49
|- - bragol   Цитата(paskal @ Aug 26 2011, 20:49) А что...   Aug 29 2011, 06:36
- - _Pasha   Случайно набрел на этот некропост. Скажу адын весч...   Feb 7 2013, 06:46
- - Белка12   То-то зе. Цитата(zltigo @ Aug 19 2011, 23...   Feb 7 2013, 13:04
|- - _Pasha   Цитата(Белка12 @ Feb 7 2013, 16:04) То-то...   Feb 7 2013, 13:16
|- - Белка12   Цитата(_Pasha @ Feb 7 2013, 17:16) Состои...   Feb 7 2013, 16:35
|- - _Pasha   Цитата(Белка12 @ Feb 7 2013, 19:11) Вот. ...   Feb 7 2013, 16:35
|- - ReAl   Цитата(_Pasha @ Feb 7 2013, 18:35) даже в...   Feb 7 2013, 20:35
|- - _Pasha   Цитата(ReAl @ Feb 7 2013, 23:35) А разве ...   Feb 7 2013, 21:36
|- - Белка12   Цитата(_Pasha @ Feb 8 2013, 01:36) С дейс...   Feb 8 2013, 17:27
|- - _Pasha   Цитата(Белка12 @ Feb 8 2013, 21:27) Хотя ...   Feb 8 2013, 18:33
|- - Белка12   Цитата(_Pasha @ Feb 8 2013, 22:33) Atmel ...   Feb 11 2013, 10:12
|- - Harbinger   Цитата(Белка12 @ Feb 11 2013, 12:12) Вопр...   Feb 11 2013, 16:50
|- - Белка12   Цитата(Harbinger @ Feb 11 2013, 20:50) На...   Feb 11 2013, 16:53
- - iosifk   Цитата(bragol @ Aug 15 2011, 15:45) Добро...   Feb 11 2013, 10:36
|- - Белка12   Цитата(iosifk @ Feb 11 2013, 14:36) Так ч...   Feb 11 2013, 16:43
|- - iosifk   Цитата(Белка12 @ Feb 11 2013, 20:43) А ...   Feb 11 2013, 17:58
|- - Белка12   Цитата(iosifk @ Feb 11 2013, 21:58) А у A...   Feb 11 2013, 18:09
|- - Белка12   Цитата(iosifk @ Feb 11 2013, 21:58) И на ...   Feb 11 2013, 21:01
|- - Harbinger   Цитата(iosifk @ Feb 11 2013, 19:58) А у A...   Feb 12 2013, 03:41
|- - pvlad   Случайно забрел в эту тему - зацепило... Молодой с...   Mar 2 2013, 20:53
- - psL   51 - не RISC, соответственно всегда будет хуже соо...   Sep 1 2013, 12:30
- - Harbinger   Касательно портов - классический вариант остался о...   Sep 1 2013, 17:39


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 08:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.01479 секунд с 7
ELECTRONIX ©2004-2016