/* Soubor:  blik-blik-1.c
 * Datum:   19.12.2011
 * Autor:   Marek Nožka, nozka <@t> spseol <d.t> cz
 * Licence: GNU/GPL 
 * Úloha:   jednoduché blikání LED na P0.
 ****************************************************/
#include <at89x52.h>


/** Funkce pro časové zpoždění 10 ms až 2550 ms.
 * (Pro OSC 12.0 MHz) Časové zpoždění je vždy násobkem 10 ms.
 * Režije spojená s voláním funkce k zadanému zpoždění
 * přidává ještě dalších 8 us.
 *
 * @param koef Celkové zpoždění = koef x 10ms. */
void delay_10m_x(unsigned char koef)
{
    koef; //pouze prázdný výraz, abych nedostával warning při kompilaci
    __asm
    MOV R5,DPL
        ; 10ms    
00001$: MOV	R6, #49
00002$:     MOV R7, #100
            NOP
00003$:         DJNZ R7, 00003$
            DJNZ R6, 00002$
        DJNZ R5, 00001$
    __endasm;
}

/* **************************************************
 *               Hlavní program.
 ****************************************************/

void main(void)
{
    while (1) {                 // nekonečná smyčka
        P0 = 0x0F;              // 4 LED svítí, 4 LED nesvítí
        delay_10m_x(20);        // čekám 200 ms
        P0 = 0xF0;              // 4 LED nesvítí, 4 LED svítí
        delay_10m_x(80);        // čekám 800 ms
    }
    
}

