All pastes #2048889 Raw Edit

Untitled

public text v1 · immutable
#2048889 ·published 2011-04-21 05:34 UTC
rendered paste body
#include <reg552.h>
void uart_setup() {																	   /* nastaveni kanalu */
TMOD = 0x20;
TH1=0xFD;	  /* 9600 */
S0CON = 0x50;
TR1=1;
TI =1;
}
char backup, dat;
unsigned int delay, delaybackup, increase, time;
unsigned char sinusovka[] = {127, 152, 176, 198, 217, 233, 244, 252, 254, 252, 244
,233, 217, 198, 176, 152, 127, 102, 79, 57, 37, 22, 10, 2, 0, 2, 10, 21, 37, 56, 78, 102} ;
void serial_IT(void) interrupt 4 {					 /* obsluha seriovejch interuptu */
if (RI == 1) {
		RI = 0;
		dat = S0BUF;
	}
	else {
	TI = 0;
	}
}
void zpozdeni() {
while ( delay !=0 )
{delay--;
}
if ( delay == 0)
delay = delaybackup;
}
void obdelnik () {
P1 = ~P1;
zpozdeni();
backup = 'o';
}
void trojuhelnik() {				/* trojuhelnik */
 if (increase == 1) {
					if (P1 >=254 ) {
					 increase = 0;
					 }
					 else {
					 zpozdeni();
						P1++;
						}
					}
						else {
							if (P1 <= 1) { 
							increase = 1;
							}
							else {
							zpozdeni();
							P1--;
						 	}
						}
backup = 't';
}
void sinfce () {									/* sinusovka tabulkou, math.h generuje strasne velkej kod */
time++;
			if(time >= 32) { 
			time = 0; }
			else {
			zpozdeni();
	 		P1 = *(sinusovka+time);
			}
backup = 's';
}
void pila(){
zpozdeni();
P1++;
backup = 'p';
}
void incdel() {
delay++;
while ( delay >= 65534 ) {
delay --;
}
delaybackup=delay;
switch(backup)	{	   /* navrat na minuly prubeh */
case 'o': obdelnik();
			  break;
	case 't': trojuhelnik();	
	break;	 

	case 's': sinfce();
			
	break;
	case 'p': pila();
	break;
	}
	}
void decdel() {
delay--;
while (delay <= 1 )
{
delay++;
}
delaybackup = delay;
switch(backup) {	/* navrat na minuly prubeh */
	case 'o': obdelnik();
	break;
	case 't': trojuhelnik();	
	break;	 

	case 's': sinfce();
			
	break;
	case 'p': pila();
	break;
	}
	}
void main() {
EA=1; /* povolim interupty */
ES0=1;	/* povolim seriovy interupty */
uart_setup();
while (1) {
switch(dat)	{
	case 'o': obdelnik();
			  break;
	case 't': trojuhelnik();	
	break;	 
							
	case 's': sinfce();
			
	break;
	case 'p': pila();
	break;
	case '+': incdel();
	break;
	case '-': decdel();
	break;
}
}
 }