#include //Konfiguracja dla Explorer 16 z progr. icd2 _CONFIG1(JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & FWDTEN_OFF) _CONFIG2(FCKSM_CSDCMD & OSCIOFNC_ON & POSCMOD_HS & FNOSC_PRI) #define SCALE 308L int bitEnty(int nat, int numer) { int a=0,i; int tab[8]={0}; int temp[8]={0}; while(nat!=0) { temp[a]=nat%2; a++; nat/=2; } a=0; for (i=7;i>=0;i--) { tab[i]=temp[a]; a++; } return tab[7-numer]; } int main(void){ unsigned long j,k; unsigned long i; unsigned char display; PORTA=0x0000; TRISA=0xFF00; TRISD=0xFFFF; again: func0: display=0; for (;;) { for(i=500L*SCALE;i>0;i--) Nop(); if (PORTDbits.RD13 == 0) { goto func1; } else if (PORTDbits.RD6 == 0) { goto func8; } else { Nop(); PORTA=(unsigned int) display; for(i=500L*SCALE;i>0;i--) Nop(); display=display+1; } } func1: display=255; for (;;) { for(i=500L*SCALE;i>0;i--) Nop(); if (PORTDbits.RD13 == 0) { goto func2; } else if (PORTDbits.RD6 == 0) { goto func0; } else { PORTA=(unsigned int) display; for(i=500L*SCALE;i>0;i--) Nop(); display=display-1; } } func2: display=0; for(;;) { for (k=1; k<=9; k++) { for (j=0;j<=9;j++) { for(i=500L*SCALE;i>0;i--) Nop(); for(i=500L*SCALE;i>0;i--) Nop(); if (PORTDbits.RD13 == 0) { goto func3; } else if (PORTDbits.RD6 == 0) { goto func1; } else { display=display+1; PORTA=(unsigned int) display; } } display = 0; display = 16*k; PORTA=(unsigned int) display; } display =0; } func3: for (;;) { Nop(); for (k=9; k>0; k--) { display = 16*k+9; PORTA=(unsigned int) display; for (j=0;j<=9;j++) { for(i=500L*SCALE;i>0;i--) Nop(); if (PORTDbits.RD13 == 0) { goto func4; } else if (PORTDbits.RD6 == 0) { goto func2; } else { display=display-1; PORTA=(unsigned int) display; } } } display =9; for (j=0;j<=9;j++) { for(i=500L*SCALE;i>0;i--) Nop(); if (PORTDbits.RD13 == 0) { goto func4; } else if (PORTDbits.RD6 == 0) { goto func2; } else { display=display-1; PORTA=(unsigned int) display; } } display=0; } func4: display=0; unsigned char displayX=0; for (;;) { if (PORTDbits.RD6 == 0) { goto func3; } else if (PORTDbits.RD13 == 0) { goto func5; } else { PORTA=(unsigned int) displayX; for(i=500L*SCALE;i>0;i--) Nop(); displayX=display^(display/2); display=display+1; } } func5: { unsigned char displayX=0; for(;;) { PORTA=(unsigned int) displayX; if (PORTDbits.RD6 == 0) goto func4; else if (PORTDbits.RD13 == 0) goto func6; else { for(i=500L*SCALE;i>0;i--) Nop(); displayX=display^(display/2); display=display-1; } } } func6: display = 0; for (;;){ for(i=500L*SCALE;i>0;i--) Nop(); Nop(); PORTA=(unsigned int) display; if (PORTDbits.RD13 == 0) { goto func7; } else if (PORTDbits.RD6 == 0) { goto func5; } else if (display<7) { for(i=500L*SCALE;i>0;i--) Nop(); display=display+1; PORTA=(unsigned int) display; for(i=500L*SCALE;i>0;i--) Nop(); display=display+2; PORTA=(unsigned int) display; for(i=500L*SCALE;i>0;i--) Nop(); display=display+4; PORTA=(unsigned int) display; } else { for(i=500L*SCALE;i>0;i--) Nop(); display = display << 1; } } func7: display=0; for (;;) { for(i=500L*SCALE;i>0;i--) Nop(); Nop(); PORTA=(unsigned int) display; if (PORTDbits.RD13 == 0) { goto func8; } else if (PORTDbits.RD6 == 0) { goto func6; } else if (display==0) { for(i=500L*SCALE;i>0;i--) Nop(); display=128; PORTA=(unsigned int) display; for(i=500L*SCALE;i>0;i--) Nop(); display=display+64; PORTA=(unsigned int) display; for(i=500L*SCALE;i>0;i--) Nop(); display=display+32; PORTA=(unsigned int) display; } else { for(i=500L*SCALE;i>0;i--) Nop(); display = display >> 1; } } func8: display = 1; for (;;) { if (PORTDbits.RD13 == 0) { goto func0; } else if (PORTDbits.RD6 == 0) { goto func7; } else { for(i=500L*SCALE;i>0;i--) Nop(); PORTA=(unsigned int) display; int wynik=0; wynik=bitEnty(display,0)^bitEnty(display,1); wynik=wynik^bitEnty(display,6); wynik=wynik^bitEnty(display,7); if (wynik==1) { display = display >> 1; display = display + 128; } else { display = display >> 1; } } } goto again; }