если вы не использовали sprintf в других частях программы, боюсь, вы будете удивлены размером кода, приведенного вами с воплем "вот то, что надо!"....
да прилично и помипо этого 0х0f привращает тупо в число(Очень досадно! Вы правы!), досадно что придеться несколько раз повторить с разными действиями, но размерчик меньше.! спасибо ARV
_________________ Мастер на все руки, кручу, кручу, кручу и матерюсь Повелитель паяльной станции, лома, и пинцета!!!
как можно задефинить пины портов для пика чтоб можно как в атмегах на CV конекретно управлять пинами на выход чтобы возможно было писать например PORTC.3=0; POPTC.3=A;
Карма: 67
Рейтинг сообщений: 1060
Зарегистрирован: Чт сен 18, 2008 12:27:21 Сообщений: 19693 Откуда: Столица Мира Санкт-Петербург
Рейтинг сообщения:0 Медали: 1
12val12 писал(а):
POPTC.3=A
И что, по-вашему, должно произойти, если в третий бит порта С записать "А"?
_________________ [ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ] Измерить нннада?
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
Были у меня часы с ду, добавил в часы термометр, всё работает, показывает, кроме одной мелочи
часы перестали реагировать на нажатие кнопки "настройка". Причём кнопка срабатывает как надо, если мы уже в меню. В меню получается возможно зайти только с пульта ду, где эта кнопка продублирована. Может кто глянуть прошивку, помочь касяк найдти - вроде скобки не пропустил, ничего не удалил. во вложении 2 кода - до установки термометра и после
Последний раз редактировалось levaclaus Пт фев 11, 2011 18:40:14, всего редактировалось 1 раз.
так. у меня глобальный вопрос. обычно в программе я имею один .с и несаколько заголовочных. давно было интересно, как собрать несколько .с в кучу посредством одного заголовочного .h . Я не пойму самого принципа КАК ?
_________________ RETI ;рети-рети интеррапт, через шины данных тракт, через память, через порт, возвращайся в главный код @hobbyelectronics
никак. при помощи заголовочников сишные исходники в кучу не собираются и вообще, не всегда между ними может быть связь (количественная). исходники КОМПИЛИРУЮТСЯ - то ли при помощи makefile, то ли путем принудительного перечисления или еще как-то, поэтому когда ваш проект состоит из нескольких исходников, вы все их и должны "скормить" компилятору, а потом полученные объектные файлы - линкеру. вот как-то так
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
хидер - он ведь что делает? он уведомляет компилятор, что такие-то вещи СУЩЕСТВУЮТ и имеют такие-то характеристики (тип, параметры и т.п.). компилятор и компилирует исходники, оставляя по этой информации в нужных местах нужные дыры - адреса для перехода на функции, адреса переменных и т.п. а потом за дело берется компоновщик, который ковыряется во всех объектных файлах проекта, включая системные библиотеки, и ищет все упомянутые в хидерах сущности, помещая на место дыр их адреса или значения... при этом, если надо, прилепляется и код этих сущностей из системных библиотек...
яснее стало?
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
как создать массив необходимой мне длинны, когда длинны массива я не знаю в принципе ( допустим он вычисляется )
т.е. конструкция
int a = 5; int b[a] = {};
невозможна при этом нельхочется создавать "массив с запасом", и не хочется использовать new.. я теряю ощущение контроля ситуации.
во-первых, ваша конструкция и так невозможна в Си, разве что при использовании расширений стандарта (например, GCC вполне позволяет делать локальные массивы с вычисляемым по ходу пьесы размером).
во-вторых, если вы не знаете размер, не хотите делать запас и не желаете использовать динамическое распределение памяти - что вы вообще хотите?! у вас просто взаимоисключающие условия. тут или надо что-то узнать заранее, или чего -то из перечисленного захотеть...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется...
int main() { int z; z = bla_bla(10); printf("%i", z);
return 0; }
Код:
//2.c #include "include.h"
int bla_bla(int x) { return (3*add(x, x)); }
Код:
//include.h
int add (int x, int y) { return (x + y); }
цункции друг друга видят, но не компилится. ссылается на .. да вот
$ gcc *.c -o ./mainRRR /tmp/cckzpR0R.o: In function `add': main.c:(.text+0x0): multiple definition of `add' /tmp/cchkwV7r.o:include.c:(.text+0x0): first defined here collect2: ld returned 1 exit status
_________________ RETI ;рети-рети интеррапт, через шины данных тракт, через память, через порт, возвращайся в главный код @hobbyelectronics
разве что при использовании расширений стандарта (например, GCC вполне позволяет делать локальные массивы с вычисляемым по ходу пьесы размером).
VLA - Variable-Length Array - это не расширение GCC, а стандарт C99, долгих лет ему жизни. И в локальных переменных, и в параметрах
Код:
int foo( int sx, int sy, int array[sy][sx] ) { int temp = 0; for( int y = 0; y < sy; ++y) for( int x = 0; x < sx; ++x ) temp += array[y][x]; return temp; }
Без VLA тут пришлось бы передавать int *array и вручную индексировать.
Просто, как минимум поначал, часть компиляторов, декларирующих соответствие C99, ограничились поддержкой комментариев "стиля С++", объявлением переменных "по месту", включая for( int i =0; и так далее, да inline. На этом фоне полная поддержка C99 в GCC начала казаться расширениями
Вот что gcc расширил, так С99-е понятие _Complex на целочисленные типы:
Код:
signed char _Complex a, b, c;
void foo() { a = b * c; }
Цитата:
avr-gcc -Os -std=c99 -S -mmcu=atmega8 complex.c --pedantic complex.c:2:1: warning: ISO C does not support complex integer types [-pedantic]
Всего лишь warning, а без --pedantic так молча ест.
Код:
foo: lds r18,b lds r24,b+1 lds r20,c lds r19,c+1 mul r20,r18 mov r25,r0 clr r1 ; зря он R1 каждый раз чистит, но это просто недостаток оптимизатора mul r19,r24 mov r21,r0 clr r1 sub r25,r21 sts a,r25 mul r20,r24 mov r24,r0 clr r1 mul r19,r18 mov r18,r0 clr r1 add r24,r18 sts a+1,r24 ret
Куда бы эту гайку М3 прикрутить...
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения