100

AVR C – Linijka diodowa

Napisaliśmy swój pierwszy program w C dla mikrokontrolerów rodziny AVR. Czas poćwiczyć swoje umiejętności i napisać coś więcej. Prostym programem do poćwiczenia swoich umiejętności programowania jest linijka diodowa.

Koncepcja zadania polega na wyświetlaniu cyklicznym jednej zaświeconej diody LED której miejsce się zmienia. W momencie kiedy zaświeca się nam ostatnia dioda to następnym krokiem będzie powrót do pierwszej sekwencji diod.

Aby nie pisać wielu zapytań warunkowych IF wykorzystamy fakt iż w systemie dwójkowym dzielenie oraz mnożenie wartości przez dwa oznacza przesunięcie bitów w prawo lub lewo. Dzięki temu wystarczy sprawdzenie warunku końcowego sekwencji.

Dla sprawdzenia swoich umiejętności proponuje napisanie tego kodu samego, w razie potrzeby można sprawdzić go z tym zamieszczonym.

/*****************************************************************
 * 
 *	R01_Diody
 *	Linijka_diodowa
 *	main.c
 *	Plik : main.c	
 *	Mikrokontroler : Atmel AVR atmega644p
 *	Kompilator : avr-gcc Toolchain
 *	Autor : Mariusz Czajkowski
 *	Źródło : http://uengineering.net/
 *	Data : 08.12.2012
 *
 *****************************************************************/

 /*****************************************************************
 * 
 *	PORTB podlaczony do diod LED
 *
 *****************************************************************/

/*	Definicje	*/
#define F_CPU 16000000UL	//Definicja czestotliwosci procesora
#define LEDS	PORTB


/*	Dolaczane biblioteki	*/
#include <avr/io.h>			//Biblioteka wejsc/wyjsc
#include <util/delay.h>		//Biblioteka opoznien
#include <stdint.h>			//Biblioteka typow liczb

/*	Funkcje wlasne	*/
void ConfIO(void)
{
	/*	DDRx rejestr ustawiajacy tryb pracy pinow, 1 - wyjscie, 0 - wejscie	*/
	DDRB = 0xff;			//Port diod LED
	/*	PORTx rejestr ustawiajacy stany pinow	*/ 
	PORTB = 0xff; 			//Ustawienie wartosci stanu niskiego
}

/*	Funckja main()	*/
int main()
{
	/*	Konfiguracja procesora	*/
	ConfIO();
	
	/*	Petla nieskonczona	*/
	while(1)
	{	
		if ( LEDS == 0x00 )	//Sprawdzenie czy wszystkie diody nie sa zapalone
		{
			LEDS = 0xff;	//Zgaszenie diod
		}
		else
		{	
			LEDS = LEDS * 2;//Przesoniecie rejestru w prawo
		}

		_delay_ms(500);		//Opoznienie 0.5s

	}
}

 

Mariusz Czajkowski

Wykształcenie: magister inżynier Automatyki i Robotyki. Zainteresowania techniczne: Programowanie, Elektronika, Mikrokontrolery, Sterowniki PLC.

100 Comments

  1. Pingback: cialis india
  2. Pingback: cialis substitute
  3. Pingback: A片
  4. Pingback: stromectol 3mg
  5. Pingback: Grandpashabet
  6. Pingback: grandpashabet
  7. Pingback: türk porno seks
  8. Pingback: fuck google
  9. Pingback: fuck google
  10. Pingback: madridbet
  11. Pingback: porn
  12. Pingback: fuck google
  13. Pingback: meritking
  14. Pingback: madridbet
  15. Pingback: meritking giriş
  16. Pingback: grandpashabet
  17. Pingback: child porn
  18. Pingback: canlı sex hattı
  19. Pingback: porn
  20. Pingback: grandpashabet
  21. Pingback: meritking
  22. Pingback: tekirdağ
  23. Pingback: izmir escort
  24. Pingback: grandpashabet
  25. Pingback: fuck porn
  26. Pingback: child porn
  27. Pingback: xxlargeseodigi
  28. Pingback: porn
  29. Pingback: child porn
  30. Pingback: bağcılar escort
  31. Pingback: porn
  32. Pingback: porn
  33. Pingback: porn
  34. Pingback: porn
  35. Pingback: sikiş
  36. Pingback: porn
  37. Pingback: çeşme transfer
  38. Pingback: sex
  39. Pingback: izmir travesti
  40. Pingback: porn
  41. Pingback: niğde escort
  42. Pingback: kilis escort
  43. Pingback: ısparta escort
  44. Pingback: erzincan escort
  45. Pingback: elazığ escort
  46. Pingback: hd porno izle
  47. Pingback: cialis 5mg tablets
  48. Pingback: datça escort
  49. Pingback: istanbul travesti
  50. Pingback: porn
  51. Pingback: izmir travesti
  52. Pingback: 2 sildenafil
  53. Pingback: flagyl svimmel
  54. Pingback: yasam ayavefe
  55. Pingback: rybelsus 0 25
  56. Pingback: kralbet
  57. Pingback: Grandpashabet
  58. Pingback: child porn
  59. Pingback: child porn
  60. Pingback: child porn
  61. Pingback: grandpashabet
  62. Pingback: porn
  63. Pingback: grandpashabet
  64. Pingback: porno izle
  65. Pingback: child porn
  66. Pingback: cozaar xq
  67. Pingback: diltiazem uses
  68. Pingback: contrave journey
  69. Pingback: is buspar an ssri
  70. Pingback: ashwagandha oil