• 1
  • 2
От мобилни телефони до цифрови камери
LZ - специалист
'++' си е стандартен 'С' оператор и увеличава операнда с 1-ца. Операнда трябва да е int. Ако не е 'int' се извършва преобразуване на типове. Същата функция има и операторът '--' но за намаляване с 1-ца.

ето ти примерен скелет на програмка:

Код: Избери всички


int	UpdateButtonState()
{
	int button=0;
	// тук е кода за четене на състоянието на бутона
	// състоянието се записва в локалната променлива button
	return button;
}

void effect0 ()
{
	// effect 0
}
void effect1 ()
{
	// effect 1
}
// ..... effect 2, 3, 4, 5, ....

main ()
{
	int	button=0;
	for (;;)
	{
		button = UpdateButtonState ();
		switch (button)
		{
			case 1: effect1(); break;
			case 2: effect2(); break;
			case 3: effect3(); break;
			// и т.н. за другите ефекти
			case 0: 
			default:
				effect0(); 
		}
	}
}	
	
За информация за езика 'С', потърси следната книжка:
Kernighan & Ritchie - The C Programming Language
Привет,

За мене все пак е интересно защо не тръгва сам по себе си код-а, предложен от колегата. Въпросът дали е можело да е по-оптимален си стои отделно. Интересно е къде изобщо е грешката, за да не "тръгва" кода и така както го е представил. Аз бих препоръчал NeoBoss да опише по детайлно точно какво се случва като си включи схемата: Какво свети, какво не свети, без да натиска бутона, после - като натисне, какво става и ако бутонът се задържи за дълго...

Отделно препоръка: освен с реда:
__CONFIG(INTIO & WDTDIS & PWRTEN & MCLRDIS & UNPROTECT & DUNPROTECT & BOREN & IESODIS & FCMDIS & LVPDIS & DEBUGDIS);

мисля, че е добре да провери със средството с което програмира чипа, че наистина има все пак MCLR забранено, тоест - че изобщо има работещ вход. След това - аз както разбирам DataSheet-a на контролера - вътрешния PULL-UP е забранен в режима Вход. Може и да не съм го разбрал добре - но добре е този момент да се преосмисли отново. Има ли в схемата външен PULL-UP..?

Аз бих редуцирал програмата до мигане изкарано на един единствен пин, което да се предизвиква от бутона - за да се изчисти с малко код само тази част от проекта. После да се наслагат ефектите и прочие..
Иначе не забелязвам логическа грешка в програмата, затова насочвам вниманието към хардуерното решение на бутона, PULL-UP, и дали MCLRE битът е правилно програмиран, за да се използва наистина RE3 като вход, а не като ресет пин.

Успех..
NeoBoss - специалист
благодаря за отговорите, в момента съм захванал един друг проект , веднага щом го привърша ще направя първо един прост код който с койо да видя дали бутона действително е бутон, а след това да оптимизирам кода по начина по който даде LZ
  • 1
  • 2

Тема "програмиране на PIC под C" | Включи се в дискусията:


Сподели форума:

Бъди информиран. Следвай "Направи сам" във Facebook:

Намери изпълнител и вдъхновения за дома. Следвай MaistorPlus във Facebook: