Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <p24fj128ga010.h>
- #include<math.h>
- //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 main(void){
- unsigned long i;
- unsigned char display = 0;
- unsigned int licznik = 0;
- unsigned int dziesiatki = 0;
- unsigned int cyfry = 1;
- unsigned int dziesiatkirev = 9;
- unsigned int cyfryrev = 9;
- unsigned int licznikGray = 0;
- unsigned int licznikGrayRev = 255;
- unsigned int wezyk = 128;
- unsigned int wezykRev = 1;
- unsigned int rnd = 1;
- void BCD(){
- if(cyfry == 9 && dziesiatki == 0){
- cyfry = 0;
- dziesiatki = 1;
- }
- else if(cyfry == 9 && dziesiatki == 9){
- cyfry = 0;
- dziesiatki = 0;
- }
- else if(cyfry == 9){
- cyfry = 0;
- dziesiatki++;
- }
- else{
- cyfry++;
- }
- }
- void BCDREVERSE(){
- if(cyfryrev == 0 && dziesiatkirev == 0){
- cyfryrev = 9;
- dziesiatkirev = 9;
- }
- /*else if(cyfry == 9 && dziesiatki == 9){
- cyfry = 0;
- dziesiatki = 0;
- }*/
- else if(cyfryrev == 0){
- cyfryrev = 9;
- dziesiatkirev--;
- }
- else{
- cyfryrev--;
- }
- }
- int GRAY(liczba){
- return liczba ^ (liczba >> 1);
- }
- int sprawdzBit(int bit,int wpisana){
- int x = (pow(2,bit-1));
- return (wpisana&x)/x;
- }
- int wylosuj(int wpisana){
- if (sprawdzBit(1,wpisana)^sprawdzBit(2,wpisana)^sprawdzBit(5,wpisana)^sprawdzBit(6,wpisana)){
- wpisana>>=1;
- wpisana+=32;
- }
- else{
- wpisana>>=1;
- }
- return wpisana;
- }
- int SNAKE(liczba){
- switch(liczba){
- case 224:
- case 112:
- case 56:
- case 28:
- case 14:
- return (liczba>>1);
- case 7:
- case 128:
- case 131:
- case 192:
- case 193:
- return (liczba>>1)+128;
- }
- }
- int SNAKEREV(liczba){
- switch(liczba){
- case 1:
- case 3:
- return (liczba<<1)+1;
- case 7:
- case 14:
- case 28:
- case 56:
- case 112:
- return (liczba<<1);
- case 224:
- case 193:
- case 131:
- return (liczba<<1)-255;
- }
- }
- //inicjalizacja
- PORTA=0x0000;
- TRISA=0xFF00;
- TRISD=0xFFFF;
- //niekoA?czÄ?ca siÄ? pÄ?tla
- again:
- Nop();
- PORTA=(unsigned int) display;
- for(i=500L*SCALE;i>0;i--) Nop();
- if (PORTDbits.RD13 == 0){
- display = 0;
- licznikGray = 0;
- licznikGrayRev = 255;
- if(licznik == 1){
- licznik = 9;
- }
- else licznik--;
- wezyk = 128;
- wezykRev = 1;
- rnd = 1;
- }
- else if(PORTDbits.RD6 == 0){
- display = 255;
- licznikGray = 0;
- licznikGrayRev = 255;
- if(licznik == 9){
- licznik = 1;
- }
- else licznik++;
- wezyk = 128;
- wezykRev = 1;
- rnd = 1;
- }
- switch(licznik){
- case 1:
- display = display+1;
- break;
- case 2:
- display = display-1;
- break;
- case 3:
- display = (dziesiatki<<4) + cyfry;
- BCD();
- break;
- case 4:
- display = (dziesiatkirev<<4) + cyfryrev;
- BCDREVERSE();
- break;
- case 5:
- display = GRAY(licznikGray);
- licznikGray++;
- break;
- case 6:
- display = GRAY(licznikGrayRev);
- licznikGrayRev--;
- break;
- case 7:
- display = wezyk;
- wezyk = SNAKE(wezyk);
- break;
- case 8:
- display = wezykRev;
- wezykRev = SNAKEREV(wezykRev);
- break;
- case 9:
- display = rnd;
- rnd = wylosuj(rnd);
- break;
- }
- goto again;
- goto again;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement