Skocz do zawartości
Gość

C Maly Problem

Rekomendowane odpowiedzi

wiec tak mam taki kod (wyrzucilem kilka liniejek bo post troche dlugi sie robil.)

 

//definiujemy stany portu sterującego diodą LED#define LED_ON sbi(DDRB,PB1);sbi(PORTB,PB1) //jedynka na pb1#define LED_OFF sbi(DDRB,PB1);cbi(PORTB,PB1) //zero na pb1int main (void) { sbi(DDRC,PC5);  //przeladowanie pojemnosci pinow wejsciowych czy jakos tak:P sbi(DDRC,PC4); sbi(PORTC,PC5); sbi(PORTC,PC4); delay(5); cbi(DDRC,PC5);  cbi(DDRC,PC4);  //koniec przeladowywania  for (;;)   {if(bit_is_clear(PINC,PC5)) //jesli pc5 jest zwarty do masy to...{LED_ON;}if(bit_is_clear(PINC,PC4)) //jesli pc4 jest zwarty do masy to...{LED_OFF;}} return (0); }
opisalem zeby kazdy mniejwiecej zalapal:P

teraz chce zrobic takie cos zeby jednorazowe nacisniecie jednego przycisku powodowalo zapalenie diody,

a nacisniecie drugiego zgasilo ja.

Edytowane przez Gość

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

co znaczy jednorazowe? Przecież jak naciśniesz raz PC5 to sie zapali i ponowne naciśniecie pc5 nie spowoduje zmiany...

 

Czy może tobie chodzi o to .. że obojętnie którym zapalasz.. ale gasisz zawsze drugim (nie tym co zapalałeś)...?

 

Jeśli tak, to musisz wprowadzić sobie przynajmniej jedną zmienną, która będzie pamiętać który przycisk włączył...

 

napiszę to pseudokodem bo nie wiem dokładnie jakie są tam piny w atmedze

if(dioda_NIE_świeci)	  // poznasz odczytując zawartosc pinu sterujacego diodą...{	if(bit_is_clear(PINC,PC5))	//jesli pc5 jest zwarty do masy to...	   button=0;	if(bit_is_clear(PINC,PC4))	 //jesli pc4 jest zwarty do masy to...	   button=1;	LED_ON;}else{	if(bit_is_clear(PINC,PC5) && button==1)  LED_OFF;	if(bit_is_clear(PINC,PC4) && button==0) LED_OFF;}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

teraz jest tak ze zeby dioda swiecila musze trzymac ten glupi przycisk. ja chce zeby zapalac kliknieciem.

wychodzi z tego ze dioda sie "zeruje" gdy tylko bit przestanie byc zerem.

 

edit:

okazalo sie ze problem jest hardwareowy, nie softwareowy:P zle przylutowalem jeden kabelek

Edytowane przez Gość

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

nie bede nowego tematu robil

mam error przy kompilacji l

cd.c:9: warning: statement with no effect
i kompilator wywala mi najwazniejsza czesc kodu. jak mu to wylaczyc?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

ale jest. wywala mi cala procedure. ale dobra masz ten kod:P

daje w spoilerze bo przydlugi jest.

 

» Naciśnij, żeby pokazać/ukryć tekst oznaczony jako spoiler... «
void lcd_int(void){delayms(100);PD6_LO; //E niskie//f-setdelayms(400);PD0_LO; //RS  0PD1_LO; //DB7 0PD2_LO; //DB6 0PD3_HI; //DB5 1PD4_LO; //DB4 0enable;//f-setPD0_LO; //RS  0PD1_LO; //DB7 0PD2_LO; //DB6 0PD3_HI; //DB5 1PD4_LO; //DB4 0enable;PD0_LO; //RS  0PD1_HI; //DB7 1PD2_LO; //DB6 0PD3_HI; //DB5 1PD4_LO; //DB4 0enable;//disp onPD0_LO; //RS  0PD1_LO; //DB7 0PD2_LO; //DB6 0PD3_LO; //DB5 0PD4_LO; //DB4 0enable;PD0_LO; //RS  0PD1_HI; //DB7 1PD2_HI; //DB6 1PD3_HI; //DB5 1PD4_HI; //DB4 0enable;//entry modePD0_LO; //RS  0PD1_LO; //DB7 0PD2_LO; //DB6 0PD3_LO; //DB5 0PD4_LO; //DB4 0enable;PD0_LO; //RS  0PD1_LO; //DB7 0PD2_HI; //DB6 1PD3_HI; //DB5 1PD4_LO; //DB4 0enable;//clrPD0_LO; //RSPD1_LO; //DB7PD2_LO; //DB6 PD3_LO; //DB5PD4_LO; //DB4enable;PD0_LO; //RSPD1_LO; //DB7PD2_LO; //DB6 PD3_LO; //DB5 1PD4_HI; //DB4enable;delayms(50); //homePD0_LO; //RSPD1_LO; //DB7PD2_LO; //DB6 PD3_LO; //DB5PD4_LO; //DB4enable;PD0_LO; //RSPD1_LO; //DB7PD2_LO; //DB6 PD3_HI; //DB5 1PD4_LO; //DB4enable;delayms(50); }//sterowanie kursoremvoid lcd_home(void) { //homePD0_LO; //RSPD1_LO; //DB7PD2_LO; //DB6 PD3_LO; //DB5PD4_LO; //DB4enable;PD0_LO; //RSPD1_LO; //DB7PD2_LO; //DB6 PD3_HI; //DB5 1PD4_LO; //DB4enable;}

 

z lcd_int i lcd_home jest ten problem.

ten kod nie jest zbyt pro:P wazne ze z dziala:P

Edytowane przez Gość

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

ten kod mi mówi tyle co nic :D.. ale po warningu wnoszę iż dany statement którego to się tyczy jest coś nie tego...

 

Podobne erory wyskakują, kiedy masz przykładowo w kodzie rozgałęzienia któe ostatecznie wykluczają jedną ścieżkę, lub np masz instrukcję return; która powoduje powrót z jakiejś funkcji a następnie w kodzie po tej instrukcji masz jeszcze coś...

 

Wiec kompilator ostrzega, że jakkowliek program by sie nie wykonał to do tej ostatniej instrukcji nigdy nie dojdzie więc zgłasza że instrukcja czy linijka cała nie da żadnego efektu... być może u Ciebie jest coś podobnego

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

no wlasnie :/

jesli skopiuje wszystko co mam w lcd_int do main to wszystko jest ok inaczej doopa :/

 

a kod to zera i jedynki w odpowiednim czasie na odpowiednich pinach:P nie umiem inczej(prosciej/krocej) :(

Edytowane przez Gość

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Ciezko jest Ci pomoc, bo za nic nie wiem co robi nawet to enable, chociaz przypuszczam, ze wtedy dopiero zaczyna zmieniac stany na pinach. Jesli moge Ci jakos pomoc, to moze sprobuj zrobic sobie jakas funkcje, ktora po maskach bedzie ustawiac piny? W sumie uproscisz sobie kod.

 

Co do bledu, to nei mam zielonego pojecia, ale moze przejrzyj gugla, sporo tego wyskoczylo

 

warning%3A+statement+with+no+effect&start=0&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:pl-PL:official

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

to ja się podczepię trochę pod Twój temat bo w sumie też dotyczy avrC :D... W chwili obecjen zapewne bardziej jesteś wtajemniczony w uC niż ja... a mam w domu płytkę testową od BASCOM COLLEGE i tam jest do programowania użyty kabelek SPI bezpośrednio łączący port LPT z AVRem (tu 90S2313). I teraz zainsatlowałem sobie AVRStudio - produkt ATMELowy, w którym można pisać w C.. jednak nie mam pojęcia czy da się i w jaki sposób użyć tego kabelka do programowania z poziomu tego środowiska.

 

W ogóle to mógłbyś Arnie zarzucić jakimś kursem C pod AVRa z którego korzystasz? Choć to już mniejszy problem bo sam znajdę.. tylko chodzi o ten kabelek, bo w AVRStudio4 podczas zakładaniu projektu musze wybrać bodajże metodę programowania i wszystko co tam jest dotyczy chyba programatorów bardziej skomplikowanych niż zwykły kabelek :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...