Перейти к содержанию

Язык СИ для микроконтроллеров


Рекомендуемые сообщения

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

peremenaya=0b01010101;
PORTA=peremenaya & 0x0F;
PORTB=peremenaya & 0xF0;

Спасибо, то что нужно!

А ещё, подскажите, как можно два датчика ds18b20 на одну шину посадить. Вот здесь вроде что-то похожее на решение, но осилить это всё я так и не смог.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

вопрос по компилятору hi-tech , как посмотреть в симуляторе состояние бита , обьявленого глобально как bit?

Не цитируите полностью предыдущее сообщение!!!

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

А как можно сделать, что бы выводились незначащие нули, ну например когда отображаются минуты, то выглядело бы так - "01"? Сейчас у меня сделано так:

if (min<10) printf(lcd_putc,":0%d",min); else printf(lcd_putc,":%d",min);
Но как-то это громоздко, наверняка ведь должен быть способ попроще?
Ссылка на комментарий
Поделиться на другие сайты

А ещё, подскажите, как можно два датчика ds18b20 на одну шину посадить. Вот здесь вроде что-то похожее на решение, но осилить это всё я так и не смог.

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

Я тут выкладывал полностью документацию по этим датчикам, от производителя, в ней представлен код на Си всех функций для работы с этими датчиками, полистай тему, страниц не так много, быстро найдёшь.

Будьте проще и люди к вам потянутся.

Ссылка на комментарий
Поделиться на другие сайты

Да я уже это смотрел, но как-то воедино собрать не смог. МК я только начал заниматься, поэтому для меня всё не так просто. Было бы неплохо, если бы кто-нибудь привёл пример готовой программы или дал ссылку. По большому счёту мне не обязательно, что бы оба датчика были на одном порту, можно на разных, если так проще будет.

Ссылка на комментарий
Поделиться на другие сайты

Да без проблем, вот тебе расписаны все функции с комментариями, плюс они уже скомпонованы в хедер и исходник, из них делаешь два файла с расширением .h и .c кидаешь в папку со своим проектом, подключаешь и получаешь удовольствие. Так же приведён пример программы считывания номера прибора и программа для считывания температуры по номеру прибора, короче всё, что тебе нужно. В конце есть вопросы для тренировки. Также в программах приведён пример динамической индикации. Всё это для HI-TEC компиля написано.

Дерзай и если, что спрашивай.

Вот учись : (1-Wire).rar

Будьте проще и люди к вам потянутся.

Ссылка на комментарий
Поделиться на другие сайты

Спасибо, буду разбираться. Правда я на ccs остановился, но думаю это не критично, мне сейчас главное понять принцип.

Изменено пользователем Dayran
Ссылка на комментарий
Поделиться на другие сайты

Привет всем!Вот решил писать программки на си,ASM так въелся,что туго этот си до меня доходит)

Ответьте пожалуйста на пару вопросиков.

1)Вот на первой странице темы выложен проект в протеусе для microC.Все работает,но не могу подключить исходник на С или ASM при попытке в Proteus его компилировать выдает кучу ошибок,а без компиляции в нем я так понял отслеживания работы проги не получится.Ошибки выдаются из за того что исходник написан в microC,а в Proteus стоит mpasm,и что делать если хочется по тексту отслеживать?

2)Разъясните пожалуйста про библиотеки в С,к ним идет обращение проги,как оно происходит?

Изменено пользователем penchev
Ссылка на комментарий
Поделиться на другие сайты

В примерах самого microC .cof не нашол...

Всегда в проекте Proteus'a добавлял ASM файл как исходник и все работало,а тут...

В примерах Proteus'a 16pic-->PIC Calculator тоже .cof нету,но при нажатии на паузу и запуске source code пошаговая отладка идет :blink:

Изменено пользователем penchev
Ссылка на комментарий
Поделиться на другие сайты

В microC создание .cof файла стало возможно в последних версиях компилятора и вроде только в про версии.

Кстати в microC есть свой встроеный отладчик, где можно посмотреть выполнение программы по шагам.

Будьте проще и люди к вам потянутся.

Ссылка на комментарий
Поделиться на другие сайты

Отлично у меня PRO я скачал по вышеуказанной Вами ссылке,теперь только осталось узнать как включить его создание.

Вот неясность как будет PROTEUS реагировать на незнакомый код ведь в MicroC он отличается от mplab? И как этот cof присоеденить к PROTEUS?

Да я видел встроенный отладчик,но он все же в разы уступает Протеусу.

Изменено пользователем penchev
Ссылка на комментарий
Поделиться на другие сайты

Если качали из первого сообщения, то там версия не самая последняя, а довольно старенькая, вот отсюда можно скачать http://www.mikroe.com/en/compilers/mikroc/pro/pic/ последнюю версию, конечно же ограниченную, кряк ищите сами если надо, но думаю Вам на первое время вполне хватит и ограниченной, тем более ограниений в функционале нет, а только на размер программы.

Вот описание, что в этой версии нового:

Раньше пользователи при отладке могли использовать только симулятор встроенный в компилятор или же аппаратный отладчик на базе mikroICD от mikroE, продукты от mikroE никак не интегрировались в среду разработки MPLAB IDE и невозможна была симуляция в Proteus-е. По неоднократным просьбам пользователей команда mikroE включила в компилятор возможность генерации COFF файлов, используя которые теперь можно проводить отладку в среде MPLAB IDE ( как при помощи симулятора MPLAB SIM, так и при помощи программатора-отладчика ICD2 (ICD3)), а как известно в симуляторе MPLAB уже работают таймеры и т.д. Все это можно найти в help-файле.

П.С. Может уже и новее вышла. :)

Ещё для тех кто пользуется микроСи. Данный компилятор не очень дружит с выводом русских букв на ЖКИ, вот программа, которая поможет решить данную проблему.

Ссылка: http://narod.ru/disk/17508096000/MikroCStringTranslate.rar.html

Будьте проще и люди к вам потянутся.

Ссылка на комментарий
Поделиться на другие сайты

Благодаря вам разобрался!Как включить генерацию cof файла написано в хелпе,я просто в нем нажал НАЙТИ и ввел cof.Сделал как написано и он стал появляться после каждой компиляции.

В Протеусе я его лепил в исходники как делал с ASM файлами,ничего не работало.Но потом поставил cof файл вместо hex и пошло поехало.

Теперь дело за малым,въехать в этот С :)

Изменено пользователем penchev
Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

Появился очередной вопрос. Как записать в eeprom 16-битную переменную?

В таком виде записываются только младшие 8 бит:

write_eeprom(0x12, t);

А в таком читаются эти же младшие 8 бит:

t=read_eeprom(0x12);

Сейчас просто делю 16 битную переменную на две 8 битовых и записываю побайтно, но может есть способ попроще?

Ссылка на комментарий
Поделиться на другие сайты

Всё правильно делаешь, что ещё проще можно придумать ? Сделай данную процедуру в виде двух функций, одна разбивает и записывает, вторая наоборот читает и соединяет.

Будьте проще и люди к вам потянутся.

Ссылка на комментарий
Поделиться на другие сайты

Разбитие переменных (все способы хороши, Выбирай себе на вкус :D)

char a, b;

int c;

Вариант 1:

a= c & 0xff; // младший
b= (c>>8) & 0xff // старший

Вариант2:

a=*((char *)&c);
b=*(((char *)&c)+1);
или
а = (char)c;
b= (char)(c >> 8);

Вариант3:

#define BYTE(in) ((char *) & (in))
...
void fun(void)
{
char a, b;
int c;
...
a = BYTEс[1];
b = BYTEс[0];
...
}

Вариант4:

// структуры для манипуляции с байтами 
typedef union 
{
WORD w;
BYTE b[2];
} TWOBYTEPACK ;

typedef union
{
unsigned long l;
BYTE b[4];
} FOURBYTEPACK; 

typedef union
{
float f;
BYTE b[4];
} FLOATPACK; 

TWOBYTEPACK Dat;

И спокойно работать с Dat.w, Dat.b[0] - младший байт, Dat.b[1] - старший байт.

Это сообщение поставляется "как есть", без каких либо гарантий. Автор сообщения не несёт какой либо ответственности

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

Ссылка на комментарий
Поделиться на другие сайты

Подскажите пожалуйста!

Изучение си я начал с книги " Как программировать на С" Х. М. Дейтел, П. Дж. Дейтел.Ребята все доступно объясняют,паралельно решил почитывать Шпака что бы хоть как то понимать процедуру написания прог для PIC микроконтроллеров.Компилятор же выбрал microC.К ниму я уже привык и он меня устраивал до недавнего времени,пока не нашол такого отличия от CCS_PICC.Оно в том,что у MicroC нет функций ввода вывода таких как printf,scanf и getchar,putchar.По мне это оказалось неудобным следовать примерам из книги Шпака.Назовите пожалуйста достоинства и недостатки MicroC,и стоит ли с него начинать изучение этого языка для программирования Pic'ов.Может мне лучше перейти на CCS_PICC?

Ссылка на комментарий
Поделиться на другие сайты

ИМХО:

А если в начало программы добавить #include <stdio.h>, появляются функции printf итд ?(посмотрите их наличие в файле stdio.h) Если нет, то в топку такой компилятор. Хотя считаю, что пользоваться этими функциями для программирования МК плохой тон, но если производитель не написал для своего творения стандартную библиотеку ввода вывода... я выше написал куда такой компилятор.

Изменено пользователем rtfcnf

Это сообщение поставляется "как есть", без каких либо гарантий. Автор сообщения не несёт какой либо ответственности

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

Ссылка на комментарий
Поделиться на другие сайты

Нету в хелпе этих функций,а пользоваться ими я хочу для удобства изучения си.А именно ввод и вывод данных я хочу арганизовать через virtual terminal Proteus ,так ведь легче общатся с программой.

Только что запустил CCS-PIC создал проект с кодом первой программы Шпака,подключил к Proteus и все работает.Функция putchar выводит в терменал все что дам.Жаль microC так не может.

Ссылка на комментарий
Поделиться на другие сайты

Не знаю где Вы смотрели. А я нашел функцию sprintf

Это сообщение поставляется "как есть", без каких либо гарантий. Автор сообщения не несёт какой либо ответственности

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

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Сообщения

    • Мне показалось, что я ответил на Ваш вопрос... но видимо не убедительно... хорошо, беру такой LOGO! 12/24RC   (6ED1 052-1MD00-OBA5), последний раз на него питание подавали в году так эдак в 2010_м... достал его из закромов, подал питание и программа стартанула в штатном режиме... единственно как и писал ранее часы сброшены до заводской установки... надеюсь теперь Вас убедит то, что девайс если сохранил программу 14 лет, то особых поводов у него нет, чтобы её сбрасывать в дальнейшем. 
    • Точно не могу сказать, не разбирал я не разу Лого, по факту должна сохраниться. Много чего разбирал, не было проблем при рассоединении этажерок.
    • Это только по одному плечу? По второму плечу нормально?
    • а ответ на вопрос темы от Вас будет? Т.е. сохранится ли рабочая программа при разъединении верхней и нижней плат?  Потому как если ответ однозначно положительный, то этот геморрой с самопальным шнурком мне нафиг не нужен. 
    • Всем привет, комрады!  Пользуюсь данным усилителем чуть больше 13 лет, все устраивает. Питается от ТС-180-2. Понадобилось заменить этот трансформатор на другой поменьше, думаю на торе заказать, а какой именно по характеристикам - пытаюсь разобраться. Стыдно признаться, ни разу не смотрел какие напряжения, какие токи в усилителе... собрал - включил и забыл. Сейчас придется разбираться.  Правильно ли понимаю что общая мощность транса = токи и напряжения каждой лампы, + накалы?  Тогда судя по даташитам, 6н1п на два канала - (250в*0,0075мА)*2 + (6,3в*0,6А)=3,75Вт+ 3,8Вт=~7,5Вт.  А 6п14п=(250в*0,048А+250В*0,005А+6,3В*0,76А) * 2 = (12Вт+1,25Вт+4,8Вт ) * 2 лампы = 18Вт * 2  = 36Вт. Хотя две лампы 6п14п питаются от одной обмотки 6,3в.  Итого меньше 50 Вт, ну и с запасом небольшим 60-80Вт.  А вот как указать в заказе? Схема питается 275в, то есть вторичку делать 200в, а ток?  То есть две выходных лампы уже 100мА, запас если делать как правило 10-20%, то примерно 200в * 120мА ?  НУ с накалом тут проще) Задача в том что нужно как можно менее габаритный трансформатор, увы, ТС-180 не влезает в новую конструкцию. Ну и для понимания, сейчас начну усилитель для наушников собирать, пригодится.    
    • Лучше не надо.  Буфер добавляет всего 6 копеечных деталей а надëжность и мощность увеличит в разы, и даст работать даже с низкоомными наушниками. Даже 32 Ом наушники один ОУ из JRC4558 не потянет. 
    • Какова площадь поверхности данного радиатора?
  • Похожий контент

×
×
  • Создать...