Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.05.2009, 23:00   #1
Kopwyh
НашКодинг
 
Регистрация: 21.05.2009
Сообщений: 9
Вопрос Пересборка мозга.

Проблема из серии "ошибка в ДНК".
Программирую с школы, люблю это дело и вкладываю в него всю душу, но, к сожалению, работа не даёт возможностей роста. До сих пор мои программы выглядят, как будто их писал сантехник после пол-литра.
Код:
/***************Код замера времени **********************************************/

#pragma interrupt 
void timer1(void)
{

	count[32]++;
        count[36]++;
	if (count[36] >= 1000) 
	{
		count[37] = count[40];
	        count[40] = 0;
		count[36] = 0;
		count[35]++;
	}
	if (count[35] == 60) 
	{
		count[34]++;
		count[35] = 0;
	}
	if (count[34] == 60) 
	{
		count[33]++;
		count[34] = 0;
	}
	return;
}

/*************** Конец Кода замера времени **********************************************/

void transmission_complete(void *param)
{
	(*(int*)param)++;
	
 	return;
} 
void main()
{
    count[0] = 0x1D00 + LeftGetCurrentMID();

    __builtin_sysreg_write (__TMRIN0L, FREQ);
    __builtin_sysreg_write (__TMRIN0H, 0x0);

    __builtin_sysreg_write (__IVTIMER0HP, (int) timer1); 

    r = __builtin_sysreg_read (__IMASKH); 
    r |= (1<<INT_GIE_P) | (1<<INT_TIMER0H_P); 
    __builtin_sysreg_write (__IMASKH, r);
    
    /* Set Timer 0 running */ 
    __builtin_sysreg_write (__SQCTLST, (0x1 << SQCTL_TMR0RN_P));
    // init teransmitter
#ifndef RECEVE_ONLY
    LeftTransmitterInit();
#endif
    count[4] = (int)&tmp_data_in1;
    count[8] = (int)&tmp_data_in2;
    count[12] = (int)&tmp_data_in3;
Ну и так далее. Собственно, проблем нет, это всё работает. Но, что бы я не делал, код получается неряшливым. А значит - потенциально глючным.
Как его причесать, сделать более читаемым?

P.S. Яду не предлагать.
Kopwyh вне форума Ответить с цитированием
Старый 22.05.2009, 00:18   #2
("")(Э_Є)("")
Форумчанин
 
Регистрация: 26.01.2009
Сообщений: 112
По умолчанию

А шо оно делает О_о
("")(Э_Є)("") вне форума Ответить с цитированием
Старый 22.05.2009, 21:12   #3
Kopwyh
НашКодинг
 
Регистрация: 21.05.2009
Сообщений: 9
По умолчанию

Ну начать с того, что это единственная программа, запускающаяся на сигнальном процессоре. В её задачу входит сформировать сигнал, сформировать структуру, описывающую этот сигнал, считать время, прошедшее от начала работы. Сообщать, посредством переменной
Код:
int count[64];
о своём состоянии на хост.
А начальство через год после окончания разработки попросило помигать лампочкой. Чтобы показать заказчику что всё работает. На этом я и засыпался.
Kopwyh вне форума Ответить с цитированием
Старый 22.05.2009, 21:24   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Писать камменты и все эти магические числа заменить на константы с более понятным именем и не будет проблем
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц