[C] Generátor pilového průběhu - D/A převodník na AT89S52

Tak pro uplnost toto sem chtel: :slight_smile:

#include <at89x52.h>
#define T0_M 0
#define T0_CNT 2
#define T0_G 3
#define HM 255  
#define DM 128        //definice spodni meze

unsigned int i;    // nezaporne cele cislo, ktere bude jakoby tancit po tom prubehu
void cas () interrupt 1  //  definice aby to byl interupt    prazdna zavorka nazev   interupt vyvolava prerus  jen kdyz dojde k preruseni je vyvolana
{
TR0=0;        //vypnu timer
TL0=255;   //definice sirky schodku
TH0=250;     //definice sirky schodku
TR0=1;         //zapnu timer

if (i==HM)   // kdyz zjisti ze icko je nahore HM tak zapise nulu
{ i=DM; 
}
else
{ P0=i;
++i;
}
}

void main ()
{
  TMOD=0<<T0_G|0<<T0_CNT|1<<T0_M;    //| - zaroven
  TR0=1;
  TL0=255;        //zapisu prvni hodnoty
  TH0=250;
  ET0=1;              //povoleni od timeru nula preruseni
  EA=1;
  i=DM;    // kde ma zacit citat ... takze od nuly
  while (1);