/*    A P1.0-P1.7 kimeneteken működtess egy 8 állapotú futófényt
      (szotveres késleltetéssel). A mozgó mintázat a P3.0-P3.1
      bemenetekkel legyen kiválasztható (4 féle). A P3.2 0 értéke
      kapcsolja ki, 1 értéke pedig be a futófényt.
*/

#include <io51.h>

char mintak[4]= { 0x55, 0x33, 0x0f, 0x7f };
char aktualis; /* elforgatott ertek */
char minta;    /* hasznalt minta indexe */
bit kitolt_bit, dummy;

void main(void)
{
  int i;
  /* kezdoertekek */
  minta= P3 & 3;
  aktualis= mintak[minta];
  P1= aktualis;
  /* vegtelen ciklus */
  while (1)
    {
      if ((P3 & 3) != minta)
	{
	  /* mintat valtunk */
	  minta= P3 & 3;
	  aktualis= mintak[minta];
	}
      if (P3.2)
	{
	  /* bekapcsolva */
	  /* legfelso bit tarolasa egy atmeneti valtozoban */
	  kitolt_bit= aktualis & 0x80; 
	  /* eltolas balra 1-el */
	  aktualis<<= 1;
	  /* a kitolt bit bemasolasa a jobb oldalra (forgatas) */
	  if (kitolt_bit)
	    aktualis|= 1;
	  /* eredmeny a kimenetre */
	  P1= aktualis;
	  /* ures ciklus kesleltetes gyanant */
	  for (i=0; i<100; i++) ;
	}
    }
}
