Это не каша, это стратегическая обфускация кода с целью недопущения возможности его использования китайскими конкурентами.
А если серьезно - ну учится человек, чем дальше тем лучше будет. Может быть не было времени заниматься "причесыванием" кода. Если захочет представить свой код на суд нам - то так и напишет .
Я так думаю, что если работал код в целом виде, то лучше так его и использовать. А если захотелось модули сделать, то лучше не из готового кода их сделать, а продуманно в каждый модуль нужные только там функции помещать и относящиеся только к этому модулю.Ну и про объявление не забывать Так же чтобы не было ошибок необходимо делать блокировку повторного подключения модулей, как было в статье по ссылке.
Зарегистрирован: Вс сен 11, 2011 12:35:11 Сообщений: 378
Рейтинг сообщения:0
Вывод времени в привычном формате. У меня давнишняя проблема вывода времени в привычном формате. А вот теперь сделал одну штуку на заказ за денежку. А вот с временем так и не разобрался что бы это сделать без извращений в языке.
Поясню. Обычно так 18:05 или 08:05 У меня так 18:5 или 8:5
Компилятор hi-tech, mplab. может в хайтеке есть уже какое то форматирование? Мануал пробовал почитать или слепой или не нашел. Да и в англицком совсем плохо.
AVT-28, смотря чем пользуешься для преобразования чисел соответствующих часам и минутам в строку. Вообще это называется вывод с лидирующими нулями (leading zeros). На Си вот так можно printf("%09d", 4917); Напечатает 000004917
Ну, или проверять на значения числа, и для случая <10 добавлять "0" к строке отдельно.
_________________ Когда уже ничего не помогает - прочтите, наконец, инструкцию. Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII) Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Зарегистрирован: Ср мар 28, 2012 10:46:17 Сообщений: 70
Рейтинг сообщения:0
Коты подскажите что не так пожалуйста это моя программка только учусь программировать и не могу разобраться с переменными ответ можно? в личку а то я боюсь тут не найду не своего вопроса не ответа
Код:
#include <mega16.h> #include <delay.h> // Declare your global variables here
void main(void) {
PORTA=0x00; DDRA=0x01;
PORTB=0x00; DDRB=0x00;
PORTC=0x00; DDRC=0x00;
PORTD=0x00; DDRD=0x00;
while (1) { { //volatile unsigned char del; volatile char del; if (PINB.0 == 1) { del = (1); }; if (PINB.1 == 1) { del = (50); }; if (PINB.2 == 1) { del = (2); }; if (PINB.3 == 1) { del = (15); }; if (PINB.4 == 1) { del = (20); }; if (PINB.5 == 1) { del = (25); }; if (PINB.6 == 1) { del = (30); }; if (PINB.7 == 1) { del = (35); };
PORTA.0 = 1; delay_ms(del); PORTA.0 = 0;
}; }}
Последний раз редактировалось Аlex Пн фев 04, 2013 07:57:23, всего редактировалось 1 раз.
конечно спасибо но поиском я пользоваться умею тем более яндексом. вот что я нашел http://123avr.com/05.htm по лучше того что нашли вы но вот как объявить переименую и потом взять то значение которое в ней находиться (лежит)(записано) не знаю вот и обращаюсь сюда чтоб узнать
Зарегистрирован: Ср мар 28, 2012 10:46:17 Сообщений: 70
Рейтинг сообщения:0
написано и переписывалась теми кто учился так? ну вот и как раз учусь я повторение мать ученья так что можно и нужно повторить специально для таких как я не так обязательно поясничить проше ведь повторить более подробно описав?
Карма: 90
Рейтинг сообщений: 1443
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4613 Откуда: Планета Земля
Рейтинг сообщения:0 Медали: 1
Цитата:
ото у вас то опыта огромный мешок сразу бы отсыпали да и всё
Дак его, опыта этого, пол-интернета. Вы же поиском умеете пользоваться, что сами не нашли эту книгу ? Мне бы вот было лень писать на форум, если можно найти ответ в течении 5 минут.
/*Настройка SPI1 (Master) 8 бит данных, MSB передается первым, программный режим управления NSS, вывод NSS (PA4) разрешено использовать в качестве выхода*/ RCC->APB2ENR |= RCC_APB2ENR_SPI1EN; //Тактирование модуля SPI1 SPI1->CR1 &= ~SPI_CR1_CPOL; //Полярность тактового сигнала SPI1->CR1 &= ~SPI_CR1_CPHA; //Фаза тактового сигнала SPI1->CR1 &= ~SPI_CR1_DFF; //8 бит данных SPI1->CR1 &= ~SPI_CR1_LSBFIRST; //MSB передается первым SPI1->CR2 = 0; //Вывод NSS - выход управления slave select SPI1->CR1 |= SPI_CR1_MSTR; //Режим Master SPI1->CR1 |= SPI_CR1_BR; //Baud rate = Fpclk/256 SPI1->CR1 |= SPI_CR1_SSM; //Программный режим NSS SPI1->CR1 |= SPI_CR1_SSI; //Аналогично состоянию, когда на входе NSS высокий уровень SPI1->CR1 |= SPI_CR1_SPE; //Включаем SPI1 }
static void xmit_spi(uint8_t xmit_data) { SPI1->DR = xmit_data; //Пишем в буфер передатчика SPI1. После этого стартует обмен данными //отправка числа while (!(SPI1->SR & SPI_SR_TXE)); //убедиться, что предыдущая передача завершена }
static char rcvr_spi(void) //прием числа { uint8_t res; SPI1->DR = 0xff; //Пишем в буфер передатчика SPI1. После этого стартует обмен данными while (!(SPI1->SR & SPI_SR_TXE)); //убедиться, что предыдущая передача завершена //прием числа while(!(SPI1->SR & SPI_SR_RXNE)); //Ожидаем окончания приема данных модулем SPI1 (RXNE =1 - приемный буфер содержит данные) res= SPI1->DR; return res; }
В "spiRoutine.c" функция "rcvr_spi()" объявлена как static, и она же объявлена в "spiRoutine.h" как static (?!) да еще и вызывается из "main.c" (?!!!). Таких советчиков надо брать за шкирку и топить в ближайшем водоеме.
Таких советчиков надо брать за шкирку и топить в ближайшем водоеме.
а теперь пролистали обсуждение сначала - у чела возникла проблема раскидать файл по кускам, что я и сделал, тупо скопировал код совсем в нем не ковыряясь, а про статик ему уже 3 страницы рассказывают
цель - показать что объявлений функций желательно размещать в хидерах, функции в с файлах и продемонстрировать что такой подход более удобен чем спихивание всего в один файл
если быть немного внимательным, то можно заметить - та функция которую я добавил, никакими статиками не болеет, остальное все копипаст
_________________ Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
мне лично лень ковырять чужой код, тем более вопрос звучал совсем другой ну а если вы такой умный, так предоставьте правильный, или вы только критиковать умеете?
_________________ Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения