|
MCS-51, Первые шаги |
|
|
|
Aug 15 2011, 11:45
|
Участник

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

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

Группа: Участник
Сообщений: 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
|
|
|
|
|
Aug 19 2011, 05:47
|

фанат дивана
     
Группа: Свой
Сообщений: 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. Чтобы изменять значение параметра, надо передать указатель на него.
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Aug 19 2011, 07:44
|
Участник

Группа: Участник
Сообщений: 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; } } }
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|