Segmentovka v C

Z MAM wiki

Přejít na: navigace, hledání
/* main.c */
#include <avr/io.h> // zde je definovan napr. PORTB
//#include <avr/iom168.h> // konstanty pro konkretni typ mikrokontroleru
#include <util/delay.h> // toto potrebuji pro pouziti funkce _delay_ms()

int main (void){ // hlavni funkce programu
  //unsigned char a=0; // pomocna promenna
  
  /* init */
  DDRB=0xFF; // Data Direction Register PORTB: kazda nozicka bude vystup
	int a = 0;  
//  /* hlavni smycka */
//  while(1){ // nekonecna smycka
//    a++; // timto se zmeni jednicky a nuly na portu B
//    PORTB=a; // vystup na nozicky portu B
//    _delay_ms(100); // pockam nejakou postrehnutelnou dobu
//  } // konec nekonecne smycky


	PORTB = 1;
//	_delay_ms(500);
	PORTB = 2;
//	_delay_ms(500);
	PORTB = 4;
//	_delay_ms(500);
	PORTB = 8;
//	_delay_ms(500);
	PORTB = 16;
//	_delay_ms(500);
	PORTB = 32;
//	_delay_ms(500);
	PORTB = 128;
//	_delay_ms(500);

	while(1){
	  a++;
	  PORTB = registr(a);
	  _delay_ms(500);
	  if(a>9)a = 0;
	
	}
} // konec main

int registr(int cislo){
	// vrati cislo pro sedmisegment
	switch(cislo){
	case 0: return 63;
	case 1: return 12;
 	case 2: return 148;
    case 3: return 94;
	case 4:	return 77;
	case 5: return 91;
	case 6: return 123;
	case 7: return 14;
	case 8: return 255;
	case 9: return 79;
	}
}

Osobní nástroje