ATtiny13a - Dobókocka

2016-01-30

 

Amióta elkészültem a dobókockámmal, a környékbeli pókok tanulmányútra járnak az asztalomhoz :). A program alaphelyzetben folyamatosan számol magában 1..6-ig. Ha megnyomjuk a gomot, megnezi hol tart, és aszerint kigyújtja a LED-eket. Hogy ne peregjen, fél másodpercig nem is foglalkozik többet velünk. Érdekesség, hogy a gombot folyamatosan nyomva tartva végig léptet 1..6-ig, ilyenkor lehet ellenőrizni, hogy az összes LED világit. Tovább is lehet bonyolítani a programot, kikapcsolással, energia takarékossággal, elhalványulással ... stb.


/*******************************************************************************
*   Author       -  Kiraly Tibor
*                   http://www.tkiraaly.hu
*   Date         -  2016.01.30.
*   Chip         -  Atmel ATtiny13A
*   Compiler     -  avr-gcc ( WinAVR)
*
*   Dobokocka
*
********************************************************************************
*   PonyProg Configuration and Security Bits (bepipalva):
*
*   CKSEL1 -, CKSEL0 P      - Internal Oscillator 9,6 MHz
*   CKDIV8 P                - Divide clock by 8
*   
*******************************************************************************/
#define F_CPU    1,2 MHZ                    // orajel


#include "tkiraaly_attiny13a.h"
#include <util/delay.h>


int main( void)
{
   U8 n= 0;
   PB4_1;                                   // felhuzo ellenallas be
   PB0_OUT;                                 // LED-ek
   PB1_OUT;                                 // 2     1
   PB2_OUT;                                 // 3  0  3
   PB3_OUT;                                 // 1     2
   PB0_0;                                   // kozepso LED vilagit bekapcsolaskor
   PB1_1;
   PB2_1;
   PB3_1;
 
   for(;;)
   {
      n++;                                  // veletlenszeru szam 1..6
      if( n == 7) n= 1;
      if( !PB4_R)
      {
          PB0_1;                            // LED-ek kikapcsolasa
          PB1_1;
          PB2_1;
          PB3_1;
          if( n% 2)   PB0_0;                // 1, 3, 5
          if( n != 1) PB1_0;                // 2, 3, 4, 5, 6
          if( n > 3)  PB2_0;                // 4, 5, 6
          if( n == 6) PB3_0;                // 6
         _delay_ms( 500);                   // perges elkerulese
      }
   }
}





Itt a vége, fuss el véle, legytek az én vendégeim, innen letölthetitek a programokat, miegymást összecsomagolva.