24.07.2013, 00:00
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.01.2007
Сообщений: 3,412
Сказал спасибо: 65
Сказали Спасибо 664 раз(а) в 443 сообщении(ях)
|
Re: Оптимальный старт в программировании МК на С
Сообщение от oleg110592
|
непонятно зачем по ходу - у меня все попроще. Посмотрел код своей поделки ...
|
И при чём здесь ваши поделки? Ими мир не ограничивается.
__________________
There's always more than one way to skin a cat.
|
|
|
|
24.07.2013, 00:14
|
|
Гражданин KAZUS.RU
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
|
Re: Оптимальный старт в программировании МК на С
Когда приходится "тактирование таймеров, ни скорость UART'а, ни режимы ADC, ни что-либо ещё изменять" читаю документацию и мир перестает быть ограниченным. Куски визарда используются давно (повторюсь - начинал с cv), проверены временем, переходят из проекта в проект.
|
|
|
|
24.07.2013, 03:13
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: Оптимальный старт в программировании МК на С
Ну что же, так и запишем: При использовании CV, в редких, исключительных случаях, если прога состоит из одного файла (не более нескольких десятков строк), если используется только ногодрыг и ничего более (типа указателей, юнионов и структур), прога может оказаться вполне работоспособной.
Последний раз редактировалось nahimovv; 24.07.2013 в 03:54.
|
|
|
|
24.07.2013, 07:54
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 18,907
Сказал спасибо: 2,543
Сказали Спасибо 11,818 раз(а) в 5,924 сообщении(ях)
|
Re: Оптимальный старт в программировании МК на С
Читаю отповеди самопровозглашенных акадэмиков, как им снобо-представляется, школоте, на незаданные вопросы и вспоминается, как петух набрел на фильдеперсовую и неприступную курицу, ходил, ходил вокруг, в конце концов спрашивает:"Слушай, цыпа, а ты говно клюешь?"
Счаз и меня говном заплюют.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
24.07.2013, 09:22
|
|
Гражданин KAZUS.RU
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
|
Re: Оптимальный старт в программировании МК на С
Сообщение от nahimovv
|
Ну что же, так и запишем: При использовании CV, в редких, исключительных случаях, если прога состоит из одного файла (не более нескольких десятков строк), если используется только ногодрыг и ничего более
|
все именно так - например спаял себе с радиокота часики http://radiokot.ru/circuit/digital/home/103/
написаны на cv, поставил на кухне (стрелочные сдохли уже вторые) - жене нравятся
строк, глянул - 831
Последний раз редактировалось oleg110592; 24.07.2013 в 09:31.
|
|
|
|
24.07.2013, 11:35
|
|
Прописка
Регистрация: 14.09.2009
Адрес: Екатеринбург
Сообщений: 116
Сказал спасибо: 14
Сказали Спасибо 31 раз(а) в 15 сообщении(ях)
|
Re: Оптимальный старт в программировании МК на С
Сообщение от oleg110592
|
все именно так - например спаял себе с радиокота часики http://radiokot.ru/circuit/digital/home/103/
написаны на cv, поставил на кухне (стрелочные сдохли уже вторые) - жене нравятся
строк, глянул - 831
|
А вы проект смотрели. У меня к человеку ,который выложил проект в таком виде - негативное отношение. Временные файлы с! в расширение можно было бы удалить. Код написан безобразно.
Одно объявление переменых
PHP код:
|
const unsigned char budilnik_txt []= {11,29,14,18,21,38,23,18,20,42,255}, // текст "Будильник" korekt_txt []= {20,24,26,26,15,20,32,18,41,42,42,255}, // текст "Коррекция" nastroiki_txt []= {29,27,28,10,23,24,12,20,18,42,255}, // текст "Установки" den_txt []= {14,15,23,38,255}, // текст "День" data_txt []= {14,10,28,10,255}, // текст "Дата" god_txt []= {13,24,14,255}, // текст "Год" nastr_stroki_txt []= {23,10,27,28,26,24,19,20,10,42,255}, // текст "Настройки" den_nedeli_txt [7][12]= {{25,24,23,15,14,15,21,38,23,18,20,255}, // Понедельник // названия дней недели {12,28,24,26,23,18,20,255}, // Вторник // {27,26,15,14,10,255}, // Среда // {33,15,28,12,15,26,13,255}, // Четверг // {25,41,28,23,18,32,10,255}, // Пятница // {27,29,11,11,24,28,10,255}, // Суббота // {12,24,27,20,26,15,27,15,23,38,15,255}}, // Воскресенье // den_nedeli_letter[7][2]= {{25,23}, // Пн // сокращенные названия дней недели {12,28}, // Вт // {27,26}, // Ср // {33,28}, // Чт // {25,28}, // Пт // {27,11}, // Сб // {12,27}}, // Вс // name_mesec_txt [12][9]= {{41,23,12,10,26,41,255}, // Января {30,15,12,26,10,21,41,255}, // Февраля {22,10,26,28,10,255}, // Марта {10,25,26,15,21,41,255}, // Апреля {22,10,41,255}, // Мая {18,40,23,41,255}, // Июня {18,40,21,41,255}, // Июля {10,12,13,29,27,28,10,255}, // Августа {27,15,23,28,41,11,26,41,255}, // Сентября {24,20,28,41,11,26,41,255}, // Октября {23,24,41,11,26,41,255}, // Ноября {14,15,20,10,11,26,41,255}}; // Декабря
|
чего стоит.
И это только открыв файл. Если уж выкладывать проект то приводить его в нормальный вид.
И опять магические числа
PHP код:
|
switch (meny) { case 10: //______основной режим (ЧАСЫ) ekran_cifri(time); //______измерение температуры if (sek%5==0) // каждую секунду { //devices=w1_search(0xf0,rom_code); //ищим датчики, и записываем их адреса в масив for (i=0;i‹devices;i++) { temperature_temp=ds18b20_read_temp (&rom_code[i][0]); // читаю датчик температуры DS18B20 if (temperature_temp!=(-9999)) {temperature[i]=temperature_temp*10; temperature[i]+=5;} // если температура прочиталась правильно, заносим её в "temperature" ds18b20_convert_temp(&rom_code[i][0]); // команда на измерение температуры } }
if ((sek==temp) && (str != 0)) { meny=11 ;z=0; z1=0; temp2=str; } // Запускаем бегущую строку
if (BUT_STEP) {meny=20; temp=30; ochistka(); bud_flg=0;data1=(((time-(time/60*60))*60)+sek);} if (BUT_OK) {meny=11 ;z=0; z1=0; temp2=255;} break; case 11: //______Формируем и вывожу бег строку. //devices=w1_search(0xf0,rom_code); t=0; temp1=0; den_nedeli=Day_week (); beg_info[t++] = beg_info[t++] = beg_info[t++] = 42; // 3 пробела в начале строки if (temp2 & 0x01) // Если "день недели" нужно выводить { while (den_nedeli_txt[den_nedeli][t-3] != 255) // { // beg_info[t]=den_nedeli_txt[den_nedeli][t++-3]; // } beg_info[t++] = 42; // пробел } if (temp2 & 0x02) // Если "дату" нужно выводить { // if (chislo›9) {beg_info[t++]=chislo/10;} // Если число больше 9, выводим "десятки" числа beg_info[t++]=chislo%10; // Выводим "Единицы" числа beg_info[t++]=42; // Пробел temp1=t; while (name_mesec_txt[mesec-1][(t-temp1)] != 255) // Выводим месяц { beg_info[t]=name_mesec_txt[mesec-1][t++-temp1]; } beg_info[t++] = 42; // пробел } if (temp2 & 0x04) // Если "Год" нужно выводить { beg_info[t++]=2; // "Тысячи" года (2) beg_info[t++]=0; // "Сотни" года (0) beg_info[t++]=(god%100)/10; // "Десятки" года beg_info[t++]=god%10; // "Единицы" года beg_info[t++]=13; // "Г" beg_info[t++]=42; beg_info[t++]=42; // 2 пробела } if (temp2 & 0x08) // Если "Температура в доме" нужно выводить { beg_info[t++]=42; // пробел if (temperature[ds1820_d]‹0) beg_info[t++]=51; else beg_info[t++]=47; // если темп меньше нуля - пишем знак минус, если больше - знак плюс if (abs(temperature[ds1820_d])›99) {beg_info[t++]=(abs(temperature[ds1820_d])/100);}// Если темп ›10, выводим "десятки" температуры дома beg_info[t++]=(abs(temperature[ds1820_d])%100)/10; // Выводим "единицы температуры" beg_info[t++]=48; // Знак градуса beg_info[t++]=44; // мал пробел if ((temp2 & 0x10) && (devices›1)) {beg_info[t++]=14; beg_info[t++]=24; beg_info[t++]=22; beg_info[t++]=42;} // слово "ДОМ" beg_info[t++]=42; // пробел } if ( (temp2 & 0x10) && (devices›1) ) // Если "Температура на улице" нужно выводить { if (temperature[ds1820_y]‹0) beg_info[t++]=51; else beg_info[t++]=47; // если темп меньше уля - пишем знак минус if (abs(temperature[ds1820_y])›99){beg_info[t++]=(abs(temperature[ds1820_y])/100);}// Если модуль температуры ›10, выводим "десятки" температуры дома beg_info[t++]=(abs(temperature[ds1820_y])%100)/10; // Выводим "единицы температуры" beg_info[t++]=48; // Знак градуса beg_info[t++]=42; // мал пробел beg_info[t++]=29; beg_info[t++]=21; // слово "УЛ" beg_info[t++]=42; beg_info[t++]=42; // пробел } beg_info[t++]=time/600; // десятки часов beg_info[t++]=(time%600)/60; // единицы часов beg_info[t++]=44; // разделительная точка beg_info[t++]=(time%60)/10; // десятки минут beg_info[t++]=time%10; // единицы минут beg_info[t]=255; // метка конца "бегущей строки" if (Interval ›= speed) {Interval=0; if (beg_stroka(beg_info)==255) {temp=sek-1; if (temp==255) temp=59; meny=10; ochistka(); data1=time;}} if (BUT_STEP) {meny=20; temp=30; ochistka();} if (BUT_OK) {z=0; z1=3; temp=0x0F; ochistka();} break; case 20: //*********************************Секунды********** ************************** mig=1; ekran_cifri(((time-(time/60*60))*60)+sek); if (BUT_STEP) {meny=temp; z=0; z1=0; ochistka();} if (BUT_OK) {if (sek›40) time++; sek=0; TCNT2=0; temp=10;} break; case 30: //*********************Установка времени и даты**************************** if (Interval›=speed) {Interval=0; beg_stroka(nastroiki_txt);} if (BUT_STEP) {meny=40; z=0; z1=0; ochistka();} if (BUT_OK) { time =ystanovki_23_59(time); ochistka(); ekran_1_figure(33,1); ekran_1_figure(43,6); chislo =ystanovki_2 (chislo,31, 13); ekran_1_figure(22,1); ekran_1_figure(43,7); mesec =ystanovki_2 (mesec, 12, 13); ekran_1_figure(13,1); ekran_1_figure(43,5); god =ystanovki_2 (god, 99, 13); button=0;meny=10;ochistka(); temp=0; data1=time; } break; //****************************Установки будильников*********************************** case 40: // На экране текст - "Будильник" if (Interval›=speed) {Interval=0; beg_stroka(budilnik_txt);} if (BUT_STEP) {meny=50;z=0; z1=0;ochistka();} if (BUT_OK) {ochistka(); bud=0; temp=0; meny=41;} break; case 41: // выбираем номер будильника if (BUT_STEP) {meny=42;} if (BUT_OK ) {bud++; if (bud==9) bud=0; } ekran_1_figure(11,1); line=1; ekran_1_figure(bud+1,7); line=0; ekran_1_figure(((budilnik_Install[bud] & 0x80) ? (47):(46)),17); break; case 42: // включаем или отключаем его. если отключили - переходим в режим "часы" if (BUT_STEP) { if (budilnik_Install[bud] & 0x80) // если текущий будильник включен { budilnik_time[bud]= ystanovki_23_59 (budilnik_time[bud]); // устанавливаем время сработки будильника if (bud‹3){budilnik_Install[bud] = 0xFF; goto m1;} // если будильник №1-3 то установки "по дням недели" не производим, и переходим сразу к настройке длительности сигнала этого будильника else {temp=0; meny=43;} // если будильник №4-9 то перехъодим к настройке будильника на сработку в определенные дни } else {meny=10;} ochistka(); break; // если текущий будильник отключен - переходим в режим "часы" } if (BUT_OK ) {budilnik_Install[bud] ^= 0x80;} // каждое нажатие включает/отключает конкретный будильник (устанавливает/сбрасывает в 1 бит7) ekran_1_figure(11,1); ekran_1_figure(bud+1,7); line=1; ekran_1_figure(((budilnik_Install[bud] & 0x80) ? (47):(46)),17); line=0; break; case 43: // Настраиваем будильник на сработку в определенные дни, и длительность его сигнала. ekran_1_figure (den_nedeli_letter[temp][0],0); ekran_1_figure (den_nedeli_letter[temp][1],6); // вывожу названия дней недели. (массив "beg_info" содержит название дня недели) ekran_1_figure (((budilnik_Install[bud] & (1 ‹‹ temp)) ? 47:46),17); // вывожу знак "+" или "-" обозначающий вкл./выкл. будильника. if (BUT_STEP) {temp++; ochistka(); // "перебираю" дни недели для будильника if (temp==7){ m1: meny=10; budilnik_Interval[bud] = ystanovki_2(1,15,8); } // если все дни недели установлены, задаю время звучания сигнала. } if (BUT_OK){(budilnik_Install[bud]) ^= (1 ‹‹ temp);} // включаю/отключаю будильник в конкретный день недели. break; //*******Настройка бег строки. Выбираем какую информацию будем выводить с помощью бег. строки********** case 50: // на экране текст - "Коррекция" if (Interval›=speed) {Interval=0; beg_stroka(nastr_stroki_txt);} if (BUT_STEP) {meny=60; z=0; z1=0; ochistka();} if (BUT_OK) {meny=51; ochistka(); temp=0;} break; case 51: if (BUT_STEP) {temp++; ochistka();} switch (temp) { case 0: if (BUT_OK){str ^= (1 ‹‹ 0);} ekran_1_figure (((str & 0x01) ? 47:46),19); txt_ekran(den_txt); break; case 1: if (BUT_OK){str ^= (1 ‹‹ 1);} ekran_1_figure (((str & 0x02) ? 47:46),19); txt_ekran(data_txt); break; case 2: if (BUT_OK){str ^= (1 ‹‹ 2);} ekran_1_figure (((str & 0x04) ? 47:46),19); txt_ekran(god_txt); break; case 3: if (BUT_OK){str ^= (1 ‹‹ 3);} ekran_1_figure (((str & 0x08) ? 47:46),19); ekran_1_figure(50,0); ekran_1_figure(48,4); ekran_1_figure(14,10); break; case 4: if (BUT_OK){str ^= (1 ‹‹ 4);} ekran_1_figure (((str & 0x10) ? 47:46),19); ekran_1_figure(50,0); ekran_1_figure(48,4); ekran_1_figure(29,10); break; case 5: if (BUT_OK){zv_chs++; } ekran_1_figure (((zv_chs) ? 47:46),19); ekran_1_figure(16,0); ekran_1_figure(12,4); ekran_1_figure(43,8); ekran_1_figure(33,9); ekran_1_figure(27,14); break; case 6: if (BUT_OK){zv_kn++; } ekran_1_figure (((zv_kn) ? 47:46),19); ekran_1_figure(16,0); ekran_1_figure(12,4); ekran_1_figure(43,8); ekran_1_figure(20,9); ekran_1_figure(23,14); break; case 7: meny=52; temp=speed; break; } break; case 52: // настройка скорости бегущей строки if (BUT_OK) {temp+=3; if (temp›=60) {temp=9;}} if (BUT_STEP) {speed=temp; if (devices==2) meny=53; else meny=53; ochistka();} if (Interval›=temp) {Interval=0; beg_stroka(beg_info);} break; case 53: // переназначение датчиков ds18m20 (если подключено 2 датчика) if (BUT_OK) {temp5++;} if (BUT_STEP) { meny=10; if (temp5) {ds1820_d=1; ds1820_y=0;} else {ds1820_d=0; ds1820_y=1;} ochistka(); } ekran_1_figure (14,0); ekran_1_figure (((temperature[temp5]‹0) ? 51:47),8); ekran_1_figure ((abs(temperature[temp5])/100),13); ekran_1_figure (((abs(temperature[temp5])%100)/10),19); break; //**************************Настройка коррекции хода******************************* case 60: // на экране текст - "Коррекция" if (Interval›=speed) {Interval=0; beg_stroka(korekt_txt);} if (BUT_STEP) {meny=10; ochistka();} if (BUT_OK) {meny=61; temp=0;ochistka();} break; case 61: // Установка "знака" коррекции if (BUT_STEP) {meny=62;} if (BUT_OK) {korr_den = (korr_den * (-1));} line=1; ekran_1_figure(((korr_den‹0)?46:47),0); line=0; ekran_1_figure((abs((korr_den))/100),6); ekran_1_figure(((abs(korr_den)%100)/10),12); ekran_1_figure((abs(korr_den)%10),19); break; case 62: // Установка секунд коррекции if (BUT_STEP) {meny=63;} if (BUT_OK) {korr_den=((korr_den‹0)?(korr_den-=10):(korr_den+=10));if(abs(korr_den)›599){korr_den=korr_den%10;}} ekran_1_figure(((korr_den‹0)?46:47),0); line=1; ekran_1_figure((abs((korr_den))/100),6); ekran_1_figure(((abs(korr_den)%100)/10),12); line=0; ekran_1_figure((abs(korr_den)%10),19); break; case 63: // Установка десятых долей секунд коррекции if (BUT_STEP) {meny=10;} if (BUT_OK) {if(korr_den‹0){korr_den--;if(korr_den%10==0)korr_den+=10;}else{korr_den++;i f(korr_den%10==0)korr_den-=10;}} ekran_1_figure(((korr_den‹0)?46:47),0); ekran_1_figure((abs((korr_den))/100),6); ekran_1_figure(((abs(korr_den)%100)/10),12); line=1; ekran_1_figure((abs(korr_den)%10),19); line=0; break; }
|
Последний раз редактировалось elesy; 24.07.2013 в 11:41.
|
|
|
|
24.07.2013, 11:43
|
|
Гражданин KAZUS.RU
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
|
Re: Оптимальный старт в программировании МК на С
А вы проект смотрели
мне фиолетово - на форуме 253 страницы. Скачиваний: 2709 - для меня это показатель. Сам я так тоже писал раньше. Использовал только хекс, часы год работают, как часы
|
|
|
|
24.07.2013, 11:44
|
|
Прописка
Регистрация: 14.09.2009
Адрес: Екатеринбург
Сообщений: 116
Сказал спасибо: 14
Сказали Спасибо 31 раз(а) в 15 сообщении(ях)
|
Re: Оптимальный старт в программировании МК на С
Сообщение от oleg110592
|
А вы проект смотрели
мне фиолетово - на форуме 253 страницы. Скачиваний: 2709 - для меня это показатель. Сам я так тоже писал раньше. Использовал только хекс, часы год работают, как часы
|
Тогда потом не кричите "я хочу поменять, а у меня не работает, поможите люди добрые"
Ну и тупо передирать , не посмотрев как работает - ГЛУПО просто
|
|
|
|
24.07.2013, 11:54
|
|
Гражданин KAZUS.RU
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
|
Re: Оптимальный старт в программировании МК на С
Тогда потом не кричите
я и не кричал вроде - у меня все работает. А так - я не волшебник, я только учусь
вот недавно нашел: http://habrahabr.ru/post/172091/
теперь стараюсь соответствовать
а посмотрел в работе - мне понравилось
|
|
|
|
24.07.2013, 12:00
|
|
Прописка
Регистрация: 14.09.2009
Адрес: Екатеринбург
Сообщений: 116
Сказал спасибо: 14
Сказали Спасибо 31 раз(а) в 15 сообщении(ях)
|
Re: Оптимальный старт в программировании МК на С
Сообщение от oleg110592
|
Тогда потом не кричите
я и не кричал вроде - у меня все работает. А так - я не волшебник, я только учусь
вот недавно нашел: http://habrahabr.ru/post/172091/
теперь стараюсь соответствовать
а посмотрел в работе - мне понравилось
|
Лучше найди докумен uCOS-II по оформлению кода и почитай.
И читай Керигана РИчи. Там есть практически ВСЕЕЕЕЕ
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:51.
|
|