Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 61: void LVLch (void){
- 62:
- 63:
- 64:
- 65: unsigned int odczyt = 0;
- C:0x0800 E4 CLR A
- 66: unsigned char kon = 0x00;
- C:0x0801 F51E MOV 0x1E,A
- 67: int i = 0;
- 68:
- C:0x0803 F51F MOV 0x1F,A
- C:0x0805 F520 MOV 0x20,A
- 69: kon = 0;
- C:0x0807 F51E MOV 0x1E,A
- 70: LEDY = 0x80;
- 71:
- C:0x0809 908008 MOV DPTR,#LEDY(0x8008)
- C:0x080C 7480 MOV A,#P0(0x80)
- C:0x080E F0 MOVX @DPTR,A
- 72: while (kon != 0x20)
- C:0x080F E51E MOV A,0x1E
- C:0x0811 6420 XRL A,#0x20
- C:0x0813 7003 JNZ C:0818
- C:0x0815 020917 LJMP C:0917
- 73: {
- 74: Pot0 = 0;
- C:0x0818 E4 CLR A
- C:0x0819 908005 MOV DPTR,#Pot0(0x8005)
- C:0x081C F0 MOVX @DPTR,A
- 75: i = 0;
- 76:
- C:0x081D F51F MOV 0x1F,A
- C:0x081F F520 MOV 0x20,A
- 77: delay(150);
- 78:
- C:0x0821 7F96 MOV R7,#0x96
- C:0x0823 FE MOV R6,A
- C:0x0824 120CF1 LCALL delay(C:0CF1)
- 79: odczyt = PTAC;
- 80:
- C:0x0827 908000 MOV DPTR,#PTAC(0x8000)
- C:0x082A E0 MOVX A,@DPTR
- C:0x082B FF MOV R7,A
- C:0x082C 7E00 MOV R6,#0x00
- 81: if((odczyt < 0x20)&&(odczyt > 0x00)){
- C:0x082E C3 CLR C
- C:0x082F 9420 SUBB A,#0x20
- C:0x0831 EE MOV A,R6
- C:0x0832 9400 SUBB A,#0x00
- C:0x0834 5014 JNC C:084A
- C:0x0836 EF MOV A,R7
- C:0x0837 9400 SUBB A,#0x00
- C:0x0839 EE MOV A,R6
- C:0x083A 9400 SUBB A,#0x00
- C:0x083C 400C JC C:084A
- 82: LEDY = 0x80;
- C:0x083E 908008 MOV DPTR,#LEDY(0x8008)
- C:0x0841 7480 MOV A,#P0(0x80)
- C:0x0843 F0 MOVX @DPTR,A
- 83: LVL = 1;
- C:0x0844 751A00 MOV LVL(0x1A),#0x00
- C:0x0847 751B01 MOV 0x1B,#0x01
- 84: }
- 85:
- 86: if((odczyt < 0x40)&&(odczyt > 0x20)){
- C:0x084A C3 CLR C
- C:0x084B EF MOV A,R7
- C:0x084C 9440 SUBB A,#0x40
- C:0x084E EE MOV A,R6
- C:0x084F 9400 SUBB A,#0x00
- C:0x0851 5014 JNC C:0867
- C:0x0853 EF MOV A,R7
- C:0x0854 9420 SUBB A,#0x20
- C:0x0856 EE MOV A,R6
- C:0x0857 9400 SUBB A,#0x00
- C:0x0859 400C JC C:0867
- 87: LEDY = 0xC0;
- C:0x085B 908008 MOV DPTR,#LEDY(0x8008)
- C:0x085E 74C0 MOV A,#0xC0
- C:0x0860 F0 MOVX @DPTR,A
- 88: LVL = 2;
- C:0x0861 751A00 MOV LVL(0x1A),#0x00
- C:0x0864 751B02 MOV 0x1B,#0x02
- 89: }
- 90:
- 91: if((odczyt < 0x60)&&(odczyt > 0x40)){
- C:0x0867 C3 CLR C
- C:0x0868 EF MOV A,R7
- C:0x0869 9460 SUBB A,#0x60
- C:0x086B EE MOV A,R6
- C:0x086C 9400 SUBB A,#0x00
- C:0x086E 5014 JNC C:0884
- C:0x0870 EF MOV A,R7
- C:0x0871 9440 SUBB A,#0x40
- C:0x0873 EE MOV A,R6
- C:0x0874 9400 SUBB A,#0x00
- C:0x0876 400C JC C:0884
- 92: LEDY = 0xE0;
- C:0x0878 908008 MOV DPTR,#LEDY(0x8008)
- C:0x087B 74E0 MOV A,#ACC(0xE0)
- C:0x087D F0 MOVX @DPTR,A
- 93: LVL = 3;
- C:0x087E 751A00 MOV LVL(0x1A),#0x00
- C:0x0881 751B03 MOV 0x1B,#0x03
- 94: }
- 95:
- 96: if((odczyt < 0x80)&&(odczyt > 0x60)){
- C:0x0884 C3 CLR C
- C:0x0885 EF MOV A,R7
- C:0x0886 9480 SUBB A,#P0(0x80)
- C:0x0888 EE MOV A,R6
- C:0x0889 9400 SUBB A,#0x00
- C:0x088B 5014 JNC C:08A1
- C:0x088D EF MOV A,R7
- C:0x088E 9460 SUBB A,#0x60
- C:0x0890 EE MOV A,R6
- C:0x0891 9400 SUBB A,#0x00
- C:0x0893 400C JC C:08A1
- 97: LEDY = 0xF0;
- C:0x0895 908008 MOV DPTR,#LEDY(0x8008)
- C:0x0898 74F0 MOV A,#B(0xF0)
- C:0x089A F0 MOVX @DPTR,A
- 98: LVL = 4;
- C:0x089B 751A00 MOV LVL(0x1A),#0x00
- C:0x089E 751B04 MOV 0x1B,#0x04
- 99: }
- 100:
- 101: if((odczyt < 0xA0)&&(odczyt > 0x80)){
- C:0x08A1 C3 CLR C
- C:0x08A2 EF MOV A,R7
- C:0x08A3 94A0 SUBB A,#P2(0xA0)
- C:0x08A5 EE MOV A,R6
- C:0x08A6 9400 SUBB A,#0x00
- C:0x08A8 5014 JNC C:08BE
- C:0x08AA EF MOV A,R7
- C:0x08AB 9480 SUBB A,#P0(0x80)
- C:0x08AD EE MOV A,R6
- C:0x08AE 9400 SUBB A,#0x00
- C:0x08B0 400C JC C:08BE
- 102: LEDY = 0xF8;
- C:0x08B2 908008 MOV DPTR,#LEDY(0x8008)
- C:0x08B5 74F8 MOV A,#0xF8
- C:0x08B7 F0 MOVX @DPTR,A
- 103: LVL = 5;
- C:0x08B8 751A00 MOV LVL(0x1A),#0x00
- C:0x08BB 751B05 MOV 0x1B,#0x05
- 104: }
- 105:
- 106: if((odczyt < 0xC0)&&(odczyt > 0xA0)){
- C:0x08BE C3 CLR C
- C:0x08BF EF MOV A,R7
- C:0x08C0 94C0 SUBB A,#0xC0
- C:0x08C2 EE MOV A,R6
- C:0x08C3 9400 SUBB A,#0x00
- C:0x08C5 5014 JNC C:08DB
- C:0x08C7 EF MOV A,R7
- C:0x08C8 94A0 SUBB A,#P2(0xA0)
- C:0x08CA EE MOV A,R6
- C:0x08CB 9400 SUBB A,#0x00
- C:0x08CD 400C JC C:08DB
- 107: LEDY = 0xFC;
- C:0x08CF 908008 MOV DPTR,#LEDY(0x8008)
- C:0x08D2 74FC MOV A,#0xFC
- C:0x08D4 F0 MOVX @DPTR,A
- 108: LVL = 6;
- C:0x08D5 751A00 MOV LVL(0x1A),#0x00
- C:0x08D8 751B06 MOV 0x1B,#0x06
- 109: }
- 110:
- 111: if((odczyt < 0xE0)&&(odczyt > 0xC0)){
- C:0x08DB C3 CLR C
- C:0x08DC EF MOV A,R7
- C:0x08DD 94E0 SUBB A,#ACC(0xE0)
- C:0x08DF EE MOV A,R6
- C:0x08E0 9400 SUBB A,#0x00
- C:0x08E2 5014 JNC C:08F8
- C:0x08E4 EF MOV A,R7
- C:0x08E5 94C0 SUBB A,#0xC0
- C:0x08E7 EE MOV A,R6
- C:0x08E8 9400 SUBB A,#0x00
- C:0x08EA 400C JC C:08F8
- 112: LEDY = 0xFE;
- C:0x08EC 908008 MOV DPTR,#LEDY(0x8008)
- C:0x08EF 74FE MOV A,#0xFE
- C:0x08F1 F0 MOVX @DPTR,A
- 113: LVL = 7;
- C:0x08F2 751A00 MOV LVL(0x1A),#0x00
- C:0x08F5 751B07 MOV 0x1B,#0x07
- 114: }
- 115:
- 116: if(odczyt > 0xE0){
- C:0x08F8 D3 SETB C
- C:0x08F9 EF MOV A,R7
- C:0x08FA 94E0 SUBB A,#ACC(0xE0)
- C:0x08FC EE MOV A,R6
- C:0x08FD 9400 SUBB A,#0x00
- C:0x08FF 400C JC C:090D
- 117: LEDY = 0xFF;
- C:0x0901 908008 MOV DPTR,#LEDY(0x8008)
- C:0x0904 74FF MOV A,#0xFF
- C:0x0906 F0 MOVX @DPTR,A
- 118: LVL = 8;
- C:0x0907 751A00 MOV LVL(0x1A),#0x00
- C:0x090A 751B08 MOV 0x1B,#dobre(0x08)
- 119: }
- 120:
- 121: kon = ~LEDY;
- C:0x090D 908008 MOV DPTR,#LEDY(0x8008)
- C:0x0910 E0 MOVX A,@DPTR
- C:0x0911 F4 CPL A
- C:0x0912 F51E MOV 0x1E,A
- 122: }
- 123: //KONIEC FUNCKI LVL
- 124:
- C:0x0914 02080F LJMP C:080F
- 125: LEDY = 0;
- C:0x0917 E4 CLR A
- C:0x0918 908008 MOV DPTR,#LEDY(0x8008)
- C:0x091B F0 MOVX @DPTR,A
- 126: }
- 127:
- 128: //LOSOWANIE
- 129: unsigned int LOSUJ (int min, int max){
- 130:
- 131: int losowa = 0;
- 132: int zarodek = time/10;
- 133: srand(zarodek);
- 134: losowa = rand()%max+min;
- 135:
- 136:
- 137: return losowa;
- 138: }
- 139:
- 140: //CZAS
- 141: void delay (unsigned int ms)
- 142: {
- 143: k = 0;
- 144: while(k<ms)
- 145: {}
- 146: }
- 147:
- 148:
- 149: //ZAPAL LEDY
- C:0x091C 22 RET
- 150: void zapalledy (void)
- 151: {
- 152: unsigned char key = 0;
- C:0x091D E4 CLR A
- C:0x091E F51E MOV 0x1E,A
- 153: unsigned int proba = 0;
- C:0x0920 F51F MOV 0x1F,A
- C:0x0922 F520 MOV 0x20,A
- 154: delay(1000);
- 155:
- 156: //Rozpoczyna 10 prób refleksu
- C:0x0924 7FE8 MOV R7,#0xE8
- C:0x0926 7E03 MOV R6,#0x03
- C:0x0928 120CF1 LCALL delay(C:0CF1)
- 157: while(proba < 10)
- C:0x092B C3 CLR C
- C:0x092C E520 MOV A,0x20
- C:0x092E 940A SUBB A,#czasy(0x0A)
- C:0x0930 E51F MOV A,0x1F
- C:0x0932 9400 SUBB A,#0x00
- C:0x0934 4003 JC C:0939
- C:0x0936 0209FA LJMP C:09FA
- 158: {
- 159: delay(LOSUJ(2000-(LVL*185),7000-(LVL*475)));
- 160:
- C:0x0939 AE1A MOV R6,LVL(0x1A)
- C:0x093B AF1B MOV R7,0x1B
- C:0x093D 7C00 MOV R4,#0x00
- C:0x093F 7DB9 MOV R5,#0xB9
- C:0x0941 120A9A LCALL C?IMUL(C:0A9A)
- C:0x0944 C3 CLR C
- C:0x0945 74D0 MOV A,#PSW(0xD0)
- C:0x0947 9F SUBB A,R7
- C:0x0948 FB MOV R3,A
- C:0x0949 7407 MOV A,#0x07
- C:0x094B 9E SUBB A,R6
- C:0x094C FA MOV R2,A
- C:0x094D AE1A MOV R6,LVL(0x1A)
- C:0x094F AF1B MOV R7,0x1B
- C:0x0951 0C INC R4
- C:0x0952 7DDB MOV R5,#0xDB
- C:0x0954 120A9A LCALL C?IMUL(C:0A9A)
- C:0x0957 C3 CLR C
- C:0x0958 7458 MOV A,#0x58
- C:0x095A 9F SUBB A,R7
- C:0x095B FD MOV R5,A
- C:0x095C 741B MOV A,#0x1B
- C:0x095E 9E SUBB A,R6
- C:0x095F FC MOV R4,A
- C:0x0960 AF03 MOV R7,0x03
- C:0x0962 AE02 MOV R6,0x02
- C:0x0964 120C97 LCALL LOSUJ(C:0C97)
- C:0x0967 120CF1 LCALL delay(C:0CF1)
- 161: switch(LOSUJ(0,4)){
- 162:
- C:0x096A 7D04 MOV R5,#0x04
- C:0x096C 7C00 MOV R4,#0x00
- C:0x096E E4 CLR A
- C:0x096F FF MOV R7,A
- C:0x0970 FE MOV R6,A
- C:0x0971 120C97 LCALL LOSUJ(C:0C97)
- C:0x0974 EE MOV A,R6
- C:0x0975 702C JNZ C:09A3
- C:0x0977 EF MOV A,R7
- C:0x0978 14 DEC A
- C:0x0979 6012 JZ C:098D
- C:0x097B 14 DEC A
- C:0x097C 6017 JZ C:0995
- C:0x097E 14 DEC A
- C:0x097F 601C JZ C:099D
- C:0x0981 2403 ADD A,#0x03
- C:0x0983 701E JNZ C:09A3
- 163: case 0:
- 164: LEDY = 0x01;
- C:0x0985 908008 MOV DPTR,#LEDY(0x8008)
- C:0x0988 7401 MOV A,#0x01
- C:0x098A F0 MOVX @DPTR,A
- 165: break;
- 166:
- C:0x098B 8016 SJMP C:09A3
- 167: case 1:
- 168: LEDY = 0x02;
- C:0x098D 908008 MOV DPTR,#LEDY(0x8008)
- C:0x0990 7402 MOV A,#0x02
- C:0x0992 F0 MOVX @DPTR,A
- 169: break;
- 170:
- C:0x0993 800E SJMP C:09A3
- 171: case 2:
- 172: LEDY = 0x04;
- C:0x0995 908008 MOV DPTR,#LEDY(0x8008)
- C:0x0998 7404 MOV A,#0x04
- C:0x099A F0 MOVX @DPTR,A
- 173: break;
- 174:
- C:0x099B 8006 SJMP C:09A3
- 175: case 3:
- 176: LEDY = 0x08;
- C:0x099D 908008 MOV DPTR,#LEDY(0x8008)
- C:0x09A0 7408 MOV A,#dobre(0x08)
- C:0x09A2 F0 MOVX @DPTR,A
- 177: break;
- 178: }
- 179:
- 180: //Rozpoczyna zliczanie czasu od zapalenia LED
- 181: k=0;
- C:0x09A3 E4 CLR A
- C:0x09A4 F518 MOV k(0x18),A
- C:0x09A6 F519 MOV 0x19,A
- 182: while(key == 0)
- C:0x09A8 E51E MOV A,0x1E
- C:0x09AA 7009 JNZ C:09B5
- 183: {
- 184: key = ~LEDY;
- C:0x09AC 908008 MOV DPTR,#LEDY(0x8008)
- C:0x09AF E0 MOVX A,@DPTR
- C:0x09B0 F4 CPL A
- C:0x09B1 F51E MOV 0x1E,A
- 185: }
- 186:
- 187:
- C:0x09B3 80F3 SJMP C:09A8
- 188: if(key != ~LEDY){ //udana proba
- C:0x09B5 908008 MOV DPTR,#LEDY(0x8008)
- C:0x09B8 E0 MOVX A,@DPTR
- C:0x09B9 F4 CPL A
- C:0x09BA FF MOV R7,A
- C:0x09BB 651E XRL A,0x1E
- C:0x09BD 600F JZ C:09CE
- 189: czasy[proba]=k;
- C:0x09BF 740A MOV A,#czasy(0x0A)
- C:0x09C1 2520 ADD A,0x20
- C:0x09C3 F8 MOV R0,A
- C:0x09C4 A619 MOV @R0,0x19
- 190: dobre++;
- C:0x09C6 0509 INC 0x09
- C:0x09C8 E509 MOV A,0x09
- C:0x09CA 7002 JNZ C:09CE
- C:0x09CC 0508 INC dobre(0x08)
- 191: }
- 192: if(key == ~LEDY){ //nie udana
- C:0x09CE EF MOV A,R7
- C:0x09CF B51E08 CJNE A,0x1E,C:09DA
- 193: zle++;
- C:0x09D2 0517 INC 0x17
- C:0x09D4 E517 MOV A,0x17
- C:0x09D6 7002 JNZ C:09DA
- C:0x09D8 0516 INC zle(0x16)
- 194: }
- 195:
- 196: while(key != 0)
- C:0x09DA E51E MOV A,0x1E
- C:0x09DC 6009 JZ C:09E7
- 197: {
- 198: key = ~LEDY;
- C:0x09DE 908008 MOV DPTR,#LEDY(0x8008)
- C:0x09E1 E0 MOVX A,@DPTR
- C:0x09E2 F4 CPL A
- C:0x09E3 F51E MOV 0x1E,A
- 199: }
- C:0x09E5 80F3 SJMP C:09DA
- 200: LEDY = 0;
- C:0x09E7 E4 CLR A
- C:0x09E8 908008 MOV DPTR,#LEDY(0x8008)
- C:0x09EB F0 MOVX @DPTR,A
- 201: proba++;
- 202:
- 203:
- C:0x09EC 0520 INC 0x20
- C:0x09EE E520 MOV A,0x20
- C:0x09F0 6003 JZ C:09F5
- C:0x09F2 02092B LJMP C:092B
- C:0x09F5 051F INC 0x1F
- 204: }
- C:0x09F7 02092B LJMP C:092B
- 205: }
- 206:
- 207: //Sortowanie
- 208: void sortowanie (void)
- 209: {
- 210: int i = 0;
- 211: int j = 0;
- 212: int x = 0;
- 213:
- 214: for(i=0; i<10;i++)
- 215: {
- 216: for(j=1; j<9;j++)
- 217: {
- 218: if(czasy[j-1]>czasy[j])
- 219: x = czasy[j-1];
- 220: czasy[j-1] = czasy[j];
- 221: czasy[j] = x;
- 222: }
- 223: }
- 224:
- 225: }
- 226:
- 227:
- 228: //ZEGAR
- C:0x09FA 22 RET
- 229: void przerwanie (void) interrupt 1
- 230: {
- C:0x09FB C0E0 PUSH ACC(0xE0)
- C:0x09FD C0F0 PUSH B(0xF0)
- C:0x09FF C083 PUSH DPH(0x83)
- C:0x0A01 C082 PUSH DPL(0x82)
- C:0x0A03 C0D0 PUSH PSW(0xD0)
- C:0x0A05 75D000 MOV PSW(0xD0),#0x00
- C:0x0A08 C000 PUSH 0x00
- C:0x0A0A C004 PUSH 0x04
- C:0x0A0C C005 PUSH 0x05
- C:0x0A0E C006 PUSH 0x06
- C:0x0A10 C007 PUSH 0x07
- 231: TH0 = (-1000 >> 8) & 0x00FF; //Zapisanie w dwuch rejesterach osmio bitowych
- C:0x0A12 758CFC MOV TH0(0x8C),#0xFC
- 232: TL0 = -1000 & 0x00FF; //wartosci 16 bitiwej. Licznik sygnalizuje przerwaine po 5 ms
- C:0x0A15 758A18 MOV TL0(0x8A),#k(0x18)
- 233: k++;
- C:0x0A18 0519 INC 0x19
- C:0x0A1A E519 MOV A,0x19
- C:0x0A1C 7002 JNZ C:0A20
- C:0x0A1E 0518 INC k(0x18)
- 234: time++;
- 235:
- C:0x0A20 0515 INC 0x15
- C:0x0A22 E515 MOV A,0x15
- C:0x0A24 7002 JNZ C:0A28
- C:0x0A26 0514 INC time(0x14)
- 236: if(k>10000){
- C:0x0A28 D3 SETB C
- C:0x0A29 E519 MOV A,0x19
- C:0x0A2B 9410 SUBB A,#0x10
- C:0x0A2D E518 MOV A,k(0x18)
- C:0x0A2F 9427 SUBB A,#0x27
- C:0x0A31 4017 JC C:0A4A
- 237: k = 0;
- C:0x0A33 751800 MOV k(0x18),#0x00
- C:0x0A36 751900 MOV 0x19,#0x00
- 238: if(time > 2500){
- C:0x0A39 D3 SETB C
- C:0x0A3A E515 MOV A,0x15
- C:0x0A3C 94C4 SUBB A,#0xC4
- C:0x0A3E E514 MOV A,time(0x14)
- C:0x0A40 9409 SUBB A,#0x09
- C:0x0A42 4006 JC C:0A4A
- 239: time = 0;
- C:0x0A44 751400 MOV time(0x14),#0x00
- C:0x0A47 751500 MOV 0x15,#0x00
- 240: }
- 241: }
- 242: if(time%5 == 0){
- C:0x0A4A AE14 MOV R6,time(0x14)
- C:0x0A4C AF15 MOV R7,0x15
- C:0x0A4E 7C00 MOV R4,#0x00
- C:0x0A50 7D05 MOV R5,#0x05
- C:0x0A52 120AAC LCALL C?UIDIV(C:0AAC)
- C:0x0A55 ED MOV A,R5
- C:0x0A56 4C ORL A,R4
- C:0x0A57 702C JNZ C:0A85
- 243: P1_1 = ~P1_1;
- 244:
- C:0x0A59 B291 CPL P1_1(0x90.1)
- 245: if(P1_1 == 0){
- C:0x0A5B 209112 JB P1_1(0x90.1),C:0A70
- 246: SEGMENT = WYSWIETL[dobre];
- C:0x0A5E 74E1 MOV A,#0xE1
- C:0x0A60 2509 ADD A,0x09
- C:0x0A62 F582 MOV DPL(0x82),A
- C:0x0A64 740C MOV A,#0x0C
- C:0x0A66 3508 ADDC A,dobre(0x08)
- C:0x0A68 F583 MOV DPH(0x83),A
- C:0x0A6A E4 CLR A
- C:0x0A6B 93 MOVC A,@A+DPTR
- C:0x0A6C 908018 MOV DPTR,#SEGMENT(0x8018)
- C:0x0A6F F0 MOVX @DPTR,A
- 247: }
- 248: if(P1_1 == 1){
- C:0x0A70 309112 JNB P1_1(0x90.1),C:0A85
- 249: SEGMENT = WYSWIETL[zle];
- C:0x0A73 74E1 MOV A,#0xE1
- C:0x0A75 2517 ADD A,0x17
- C:0x0A77 F582 MOV DPL(0x82),A
- C:0x0A79 740C MOV A,#0x0C
- C:0x0A7B 3516 ADDC A,zle(0x16)
- C:0x0A7D F583 MOV DPH(0x83),A
- C:0x0A7F E4 CLR A
- C:0x0A80 93 MOVC A,@A+DPTR
- C:0x0A81 908018 MOV DPTR,#SEGMENT(0x8018)
- C:0x0A84 F0 MOVX @DPTR,A
- 250: }
- C:0x0A85 D007 POP 0x07
- C:0x0A87 D006 POP 0x06
- C:0x0A89 D005 POP 0x05
- C:0x0A8B D004 POP 0x04
- C:0x0A8D D000 POP 0x00
- C:0x0A8F D0D0 POP PSW(0xD0)
- C:0x0A91 D082 POP DPL(0x82)
- C:0x0A93 D083 POP DPH(0x83)
- C:0x0A95 D0F0 POP B(0xF0)
- C:0x0A97 D0E0 POP ACC(0xE0)
- C:0x0A99 32 RETI
- C?IMUL:
- C:0x0A9A EF MOV A,R7
- C:0x0A9B 8DF0 MOV B(0xF0),R5
- C:0x0A9D A4 MUL AB
- C:0x0A9E A8F0 MOV R0,B(0xF0)
- C:0x0AA0 CF XCH A,R7
- C:0x0AA1 8CF0 MOV B(0xF0),R4
- C:0x0AA3 A4 MUL AB
- C:0x0AA4 28 ADD A,R0
- C:0x0AA5 CE XCH A,R6
- C:0x0AA6 8DF0 MOV B(0xF0),R5
- C:0x0AA8 A4 MUL AB
- C:0x0AA9 2E ADD A,R6
- C:0x0AAA FE MOV R6,A
- C:0x0AAB 22 RET
- C?UIDIV:
- C:0x0AAC BC000B CJNE R4,#0x00,C:0ABA
- C:0x0AAF BE0029 CJNE R6,#0x00,C:0ADB
- C:0x0AB2 EF MOV A,R7
- C:0x0AB3 8DF0 MOV B(0xF0),R5
- C:0x0AB5 84 DIV AB
- C:0x0AB6 FF MOV R7,A
- C:0x0AB7 ADF0 MOV R5,B(0xF0)
- C:0x0AB9 22 RET
- C:0x0ABA E4 CLR A
- C:0x0ABB CC XCH A,R4
- C:0x0ABC F8 MOV R0,A
- C:0x0ABD 75F008 MOV B(0xF0),#dobre(0x08)
- C:0x0AC0 EF MOV A,R7
- C:0x0AC1 2F ADD A,R7
- C:0x0AC2 FF MOV R7,A
- C:0x0AC3 EE MOV A,R6
- C:0x0AC4 33 RLC A
- C:0x0AC5 FE MOV R6,A
- C:0x0AC6 EC MOV A,R4
- C:0x0AC7 33 RLC A
- C:0x0AC8 FC MOV R4,A
- C:0x0AC9 EE MOV A,R6
- C:0x0ACA 9D SUBB A,R5
- C:0x0ACB EC MOV A,R4
- C:0x0ACC 98 SUBB A,R0
- C:0x0ACD 4005 JC C:0AD4
- C:0x0ACF FC MOV R4,A
- C:0x0AD0 EE MOV A,R6
- C:0x0AD1 9D SUBB A,R5
- C:0x0AD2 FE MOV R6,A
- C:0x0AD3 0F INC R7
- C:0x0AD4 D5F0E9 DJNZ B(0xF0),C:0AC0
- C:0x0AD7 E4 CLR A
- C:0x0AD8 CE XCH A,R6
- C:0x0AD9 FD MOV R5,A
- C:0x0ADA 22 RET
- C:0x0ADB ED MOV A,R5
- C:0x0ADC F8 MOV R0,A
- C:0x0ADD F5F0 MOV B(0xF0),A
- C:0x0ADF EE MOV A,R6
- C:0x0AE0 84 DIV AB
- C:0x0AE1 20D21C JB OV(0xD0.2),C:0B00
- C:0x0AE4 FE MOV R6,A
- C:0x0AE5 ADF0 MOV R5,B(0xF0)
- C:0x0AE7 75F008 MOV B(0xF0),#dobre(0x08)
- C:0x0AEA EF MOV A,R7
- C:0x0AEB 2F ADD A,R7
- C:0x0AEC FF MOV R7,A
- C:0x0AED ED MOV A,R5
- C:0x0AEE 33 RLC A
- C:0x0AEF FD MOV R5,A
- C:0x0AF0 4007 JC C:0AF9
- C:0x0AF2 98 SUBB A,R0
- C:0x0AF3 5006 JNC C:0AFB
- C:0x0AF5 D5F0F2 DJNZ B(0xF0),C:0AEA
- C:0x0AF8 22 RET
- C:0x0AF9 C3 CLR C
- C:0x0AFA 98 SUBB A,R0
- C:0x0AFB FD MOV R5,A
- C:0x0AFC 0F INC R7
- C:0x0AFD D5F0EA DJNZ B(0xF0),C:0AEA
- C:0x0B00 22 RET
- C?SIDIV:
- C:0x0B01 C2D5 CLR F0(0xD0.5)
- C:0x0B03 EC MOV A,R4
- C:0x0B04 30E709 JNB 0xE0.7,C:0B10
- C:0x0B07 B2D5 CPL F0(0xD0.5)
- C:0x0B09 E4 CLR A
- C:0x0B0A C3 CLR C
- C:0x0B0B 9D SUBB A,R5
- C:0x0B0C FD MOV R5,A
- C:0x0B0D E4 CLR A
- C:0x0B0E 9C SUBB A,R4
- C:0x0B0F FC MOV R4,A
- C:0x0B10 EE MOV A,R6
- C:0x0B11 30E715 JNB 0xE0.7,C:0B29
- C:0x0B14 B2D5 CPL F0(0xD0.5)
- C:0x0B16 E4 CLR A
- C:0x0B17 C3 CLR C
- C:0x0B18 9F SUBB A,R7
- C:0x0B19 FF MOV R7,A
- C:0x0B1A E4 CLR A
- C:0x0B1B 9E SUBB A,R6
- C:0x0B1C FE MOV R6,A
- C:0x0B1D 120AAC LCALL C?UIDIV(C:0AAC)
- C:0x0B20 C3 CLR C
- C:0x0B21 E4 CLR A
- C:0x0B22 9D SUBB A,R5
- C:0x0B23 FD MOV R5,A
- C:0x0B24 E4 CLR A
- C:0x0B25 9C SUBB A,R4
- C:0x0B26 FC MOV R4,A
- C:0x0B27 8003 SJMP C:0B2C
- C:0x0B29 120AAC LCALL C?UIDIV(C:0AAC)
- C:0x0B2C 30D507 JNB F0(0xD0.5),C:0B36
- C:0x0B2F C3 CLR C
- C:0x0B30 E4 CLR A
- C:0x0B31 9F SUBB A,R7
- C:0x0B32 FF MOV R7,A
- C:0x0B33 E4 CLR A
- C:0x0B34 9E SUBB A,R6
- C:0x0B35 FE MOV R6,A
- C:0x0B36 22 RET
- C:0x0B37 787F MOV R0,#0x7F
- C:0x0B39 E4 CLR A
- C:0x0B3A F6 MOV @R0,A
- C:0x0B3B D8FD DJNZ R0,C:0B3A
- C:0x0B3D 758128 MOV SP(0x81),#0x28
- C:0x0B40 020B7E LJMP C:0B7E
- C:0x0B43 020C56 LJMP main(C:0C56)
- C:0x0B46 E4 CLR A
- C:0x0B47 93 MOVC A,@A+DPTR
- C:0x0B48 A3 INC DPTR
- C:0x0B49 F8 MOV R0,A
- C:0x0B4A E4 CLR A
- C:0x0B4B 93 MOVC A,@A+DPTR
- C:0x0B4C A3 INC DPTR
- C:0x0B4D 4003 JC C:0B52
- C:0x0B4F F6 MOV @R0,A
- C:0x0B50 8001 SJMP C:0B53
- C:0x0B52 F2 MOVX @R0,A
- C:0x0B53 08 INC R0
- C:0x0B54 DFF4 DJNZ R7,C:0B4A
- C:0x0B56 8029 SJMP C:0B81
- C:0x0B58 E4 CLR A
- C:0x0B59 93 MOVC A,@A+DPTR
- C:0x0B5A A3 INC DPTR
- C:0x0B5B F8 MOV R0,A
- C:0x0B5C 5407 ANL A,#0x07
- C:0x0B5E 240C ADD A,#0x0C
- C:0x0B60 C8 XCH A,R0
- C:0x0B61 C3 CLR C
- C:0x0B62 33 RLC A
- C:0x0B63 C4 SWAP A
- C:0x0B64 540F ANL A,#0x0F
- C:0x0B66 4420 ORL A,#0x20
- C:0x0B68 C8 XCH A,R0
- C:0x0B69 83 MOVC A,@A+PC
- C:0x0B6A 4004 JC C:0B70
- C:0x0B6C F4 CPL A
- C:0x0B6D 56 ANL A,@R0
- C:0x0B6E 8001 SJMP C:0B71
- C:0x0B70 46 ORL A,@R0
- C:0x0B71 F6 MOV @R0,A
- C:0x0B72 DFE4 DJNZ R7,C:0B58
- C:0x0B74 800B SJMP C:0B81
- C:0x0B76 0102 AJMP C:0802
- C:0x0B78 04 INC A
- C:0x0B79 08 INC R0
- C:0x0B7A 102040 JBC 0x24.0,C:0BBD
- C:0x0B7D 8090 SJMP C:0B0F
- C:0x0B7F 0C INC R4
- C:0x0B80 C0E4 PUSH 0xE4
- C:0x0B82 7E01 MOV R6,#0x01
- C:0x0B84 93 MOVC A,@A+DPTR
- C:0x0B85 60BC JZ C:0B43
- C:0x0B87 A3 INC DPTR
- C:0x0B88 FF MOV R7,A
- C:0x0B89 543F ANL A,#0x3F
- C:0x0B8B 30E509 JNB 0xE0.5,C:0B97
- C:0x0B8E 541F ANL A,#0x1F
- C:0x0B90 FE MOV R6,A
- C:0x0B91 E4 CLR A
- C:0x0B92 93 MOVC A,@A+DPTR
- C:0x0B93 A3 INC DPTR
- C:0x0B94 6001 JZ C:0B97
- C:0x0B96 0E INC R6
- C:0x0B97 CF XCH A,R7
- C:0x0B98 54C0 ANL A,#0xC0
- C:0x0B9A 25E0 ADD A,ACC(0xE0)
- C:0x0B9C 60A8 JZ C:0B46
- C:0x0B9E 40B8 JC C:0B58
- C:0x0BA0 E4 CLR A
- C:0x0BA1 93 MOVC A,@A+DPTR
- C:0x0BA2 A3 INC DPTR
- C:0x0BA3 FA MOV R2,A
- C:0x0BA4 E4 CLR A
- C:0x0BA5 93 MOVC A,@A+DPTR
- C:0x0BA6 A3 INC DPTR
- C:0x0BA7 F8 MOV R0,A
- C:0x0BA8 E4 CLR A
- C:0x0BA9 93 MOVC A,@A+DPTR
- C:0x0BAA A3 INC DPTR
- C:0x0BAB C8 XCH A,R0
- C:0x0BAC C582 XCH A,DPL(0x82)
- C:0x0BAE C8 XCH A,R0
- C:0x0BAF CA XCH A,R2
- C:0x0BB0 C583 XCH A,DPH(0x83)
- C:0x0BB2 CA XCH A,R2
- C:0x0BB3 F0 MOVX @DPTR,A
- C:0x0BB4 A3 INC DPTR
- C:0x0BB5 C8 XCH A,R0
- C:0x0BB6 C582 XCH A,DPL(0x82)
- C:0x0BB8 C8 XCH A,R0
- C:0x0BB9 CA XCH A,R2
- C:0x0BBA C583 XCH A,DPH(0x83)
- C:0x0BBC CA XCH A,R2
- C:0x0BBD DFE9 DJNZ R7,C:0BA8
- C:0x0BBF DEE7 DJNZ R6,C:0BA8
- C:0x0BC1 80BE SJMP C:0B81
- RAND:
- C:0x0BC3 AC25 MOV R4,?SRAND?BYTE(0x25)
- C:0x0BC5 AD26 MOV R5,0x26
- C:0x0BC7 AE27 MOV R6,0x27
- C:0x0BC9 AF28 MOV R7,0x28
- C:0x0BCB 7810 MOV R0,#0x10
- C:0x0BCD EC MOV A,R4
- C:0x0BCE 4D ORL A,R5
- C:0x0BCF 4E ORL A,R6
- C:0x0BD0 4F ORL A,R7
- C:0x0BD1 7004 JNZ C:0BD7
- C:0x0BD3 7CA5 MOV R4,#0xA5
- C:0x0BD5 7DA5 MOV R5,#0xA5
- C:0x0BD7 C3 CLR C
- C:0x0BD8 EC MOV A,R4
- C:0x0BD9 13 RRC A
- C:0x0BDA FC MOV R4,A
- C:0x0BDB ED MOV A,R5
- C:0x0BDC 13 RRC A
- C:0x0BDD FD MOV R5,A
- C:0x0BDE EE MOV A,R6
- C:0x0BDF 13 RRC A
- C:0x0BE0 FE MOV R6,A
- C:0x0BE1 EF MOV A,R7
- C:0x0BE2 13 RRC A
- C:0x0BE3 FF MOV R7,A
- C:0x0BE4 5010 JNC C:0BF6
- C:0x0BE6 EC MOV A,R4
- C:0x0BE7 64CC XRL A,#0xCC
- C:0x0BE9 FC MOV R4,A
- C:0x0BEA ED MOV A,R5
- C:0x0BEB 644C XRL A,#0x4C
- C:0x0BED FD MOV R5,A
- C:0x0BEE EE MOV A,R6
- C:0x0BEF 644E XRL A,#0x4E
- C:0x0BF1 FE MOV R6,A
- C:0x0BF2 EF MOV A,R7
- C:0x0BF3 64CE XRL A,#0xCE
- C:0x0BF5 FF MOV R7,A
- C:0x0BF6 D8DF DJNZ R0,C:0BD7
- C:0x0BF8 8C25 MOV ?SRAND?BYTE(0x25),R4
- C:0x0BFA 8D26 MOV 0x26,R5
- C:0x0BFC 8E27 MOV 0x27,R6
- C:0x0BFE 8F28 MOV 0x28,R7
- C:0x0C00 EE MOV A,R6
- C:0x0C01 547F ANL A,#0x7F
- C:0x0C03 FE MOV R6,A
- C:0x0C04 22 RET
- SRAND:
- C:0x0C05 8E25 MOV ?SRAND?BYTE(0x25),R6
- C:0x0C07 8F26 MOV 0x26,R7
- C:0x0C09 74A5 MOV A,#0xA5
- C:0x0C0B F527 MOV 0x27,A
- C:0x0C0D F528 MOV 0x28,A
- C:0x0C0F 22 RET
- 208: void sortowanie (void)
- 209: {
- 210: int i = 0;
- C:0x0C10 E4 CLR A
- C:0x0C11 FB MOV R3,A
- C:0x0C12 FA MOV R2,A
- 211: int j = 0;
- 212: int x = 0;
- 213:
- C:0x0C13 F582 MOV DPL(0x82),A
- C:0x0C15 F583 MOV DPH(0x83),A
- 214: for(i=0; i<10;i++)
- 215: {
- 216: for(j=1; j<9;j++)
- C:0x0C17 7C00 MOV R4,#0x00
- C:0x0C19 7D01 MOV R5,#0x01
- 217: {
- 218: if(czasy[j-1]>czasy[j])
- C:0x0C1B 740A MOV A,#czasy(0x0A)
- C:0x0C1D 2D ADD A,R5
- C:0x0C1E F8 MOV R0,A
- C:0x0C1F E6 MOV A,@R0
- C:0x0C20 F9 MOV R1,A
- C:0x0C21 7409 MOV A,#0x09
- C:0x0C23 2D ADD A,R5
- C:0x0C24 F8 MOV R0,A
- C:0x0C25 E6 MOV A,@R0
- C:0x0C26 FE MOV R6,A
- C:0x0C27 D3 SETB C
- C:0x0C28 99 SUBB A,R1
- C:0x0C29 4006 JC C:0C31
- 219: x = czasy[j-1];
- C:0x0C2B EE MOV A,R6
- C:0x0C2C 758300 MOV DPH(0x83),#0x00
- C:0x0C2F F582 MOV DPL(0x82),A
- 220: czasy[j-1] = czasy[j];
- C:0x0C31 7409 MOV A,#0x09
- C:0x0C33 2D ADD A,R5
- C:0x0C34 F8 MOV R0,A
- C:0x0C35 A601 MOV @R0,0x01
- 221: czasy[j] = x;
- C:0x0C37 AF82 MOV R7,DPL(0x82)
- C:0x0C39 740A MOV A,#czasy(0x0A)
- C:0x0C3B 2D ADD A,R5
- C:0x0C3C F8 MOV R0,A
- C:0x0C3D A607 MOV @R0,0x07
- 222: }
- C:0x0C3F 0D INC R5
- C:0x0C40 BD0001 CJNE R5,#0x00,C:0C44
- C:0x0C43 0C INC R4
- C:0x0C44 ED MOV A,R5
- C:0x0C45 6409 XRL A,#0x09
- C:0x0C47 4C ORL A,R4
- C:0x0C48 70D1 JNZ C:0C1B
- 223: }
- 224:
- C:0x0C4A 0B INC R3
- C:0x0C4B BB0001 CJNE R3,#0x00,C:0C4F
- C:0x0C4E 0A INC R2
- C:0x0C4F EB MOV A,R3
- C:0x0C50 640A XRL A,#czasy(0x0A)
- C:0x0C52 4A ORL A,R2
- C:0x0C53 70C2 JNZ C:0C17
- 225: }
- C:0x0C55 22 RET
- 29: void main (void)
- 30: {
- 31: unsigned int cykl = 0;
- 32:
- C:0x0C56 E4 CLR A
- C:0x0C57 F51C MOV 0x1C,A
- C:0x0C59 F51D MOV 0x1D,A
- 33: TMOD = 0x01; //Ustawienia
- C:0x0C5B 758901 MOV TMOD(0x89),#0x01
- 34: TCON = 0x10; //licznika
- C:0x0C5E 758810 MOV TCON(0x88),#0x10
- 35: IE = 0x82; //EA i ET0, flagi dla przerwan
- C:0x0C61 75A882 MOV IE(0xA8),#DPL(0x82)
- 36: TH0 = (-1000 >> 8) & 0x00FF; //Zapisanie w dwuch rejesterach osmio bitowych
- C:0x0C64 758CFC MOV TH0(0x8C),#0xFC
- 37: TL0 = -1000 & 0x00FF; //wartosci 16 bitiwej. Licznik sygnalizuje przerwaine po 1 ms
- 38:
- 39:
- 40:
- C:0x0C67 758A18 MOV TL0(0x8A),#k(0x18)
- 41: while(1)
- 42: {
- 43: LVLch();
- C:0x0C6A 120800 LCALL LVLch(C:0800)
- 44: dobre = 0;
- C:0x0C6D E4 CLR A
- C:0x0C6E F508 MOV dobre(0x08),A
- C:0x0C70 F509 MOV 0x09,A
- 45: zle = 0;
- C:0x0C72 F516 MOV zle(0x16),A
- C:0x0C74 F517 MOV 0x17,A
- 46: SEGMENT = WYSWIETL[LVL];
- C:0x0C76 74E1 MOV A,#0xE1
- C:0x0C78 251B ADD A,0x1B
- C:0x0C7A F582 MOV DPL(0x82),A
- C:0x0C7C 740C MOV A,#0x0C
- C:0x0C7E 351A ADDC A,LVL(0x1A)
- C:0x0C80 F583 MOV DPH(0x83),A
- C:0x0C82 E4 CLR A
- C:0x0C83 93 MOVC A,@A+DPTR
- C:0x0C84 908018 MOV DPTR,#SEGMENT(0x8018)
- C:0x0C87 F0 MOVX @DPTR,A
- 47: zapalledy();
- C:0x0C88 12091D LCALL zapalledy(C:091D)
- 48: sortowanie();
- C:0x0C8B 120C10 LCALL sortowanie(C:0C10)
- 49: delay(4000);
- 50:
- 51:
- 52:
- 53:
- 54:
- C:0x0C8E 7FA0 MOV R7,#P2(0xA0)
- C:0x0C90 7E0F MOV R6,#0x0F
- C:0x0C92 120CF1 LCALL delay(C:0CF1)
- 55: }
- C:0x0C95 80D3 SJMP C:0C6A
- 129: unsigned int LOSUJ (int min, int max){
- 130:
- C:0x0C97 8E21 MOV 0x21,R6
- C:0x0C99 8F22 MOV 0x22,R7
- C:0x0C9B 8C23 MOV 0x23,R4
- C:0x0C9D 8D24 MOV 0x24,R5
- 131: int losowa = 0;
- C:0x0C9F E4 CLR A
- 132: int zarodek = time/10;
- C:0x0CA0 AE14 MOV R6,time(0x14)
- C:0x0CA2 AF15 MOV R7,0x15
- C:0x0CA4 FC MOV R4,A
- C:0x0CA5 7D0A MOV R5,#czasy(0x0A)
- C:0x0CA7 120AAC LCALL C?UIDIV(C:0AAC)
- 133: srand(zarodek);
- C:0x0CAA 120C05 LCALL SRAND(C:0C05)
- 134: losowa = rand()%max+min;
- 135:
- 136:
- C:0x0CAD 120BC3 LCALL RAND(C:0BC3)
- C:0x0CB0 AC23 MOV R4,0x23
- C:0x0CB2 AD24 MOV R5,0x24
- C:0x0CB4 120B01 LCALL C?SIDIV(C:0B01)
- C:0x0CB7 E522 MOV A,0x22
- C:0x0CB9 2D ADD A,R5
- C:0x0CBA FF MOV R7,A
- C:0x0CBB E521 MOV A,0x21
- C:0x0CBD 3C ADDC A,R4
- C:0x0CBE FE MOV R6,A
- 137: return losowa;
- 138: }
- 139:
- 140: //CZAS
- C:0x0CBF 22 RET
- C:0x0CC0 021A00 LJMP C:1A00
- C:0x0CC3 00 NOP
- C:0x0CC4 021800 LJMP C:1800
- C:0x0CC7 00 NOP
- C:0x0CC8 021400 LJMP C:1400
- C:0x0CCB 00 NOP
- C:0x0CCC 020800 LJMP LVLch(C:0800)
- C:0x0CCF 00 NOP
- C:0x0CD0 021600 LJMP C:1600
- C:0x0CD3 00 NOP
- C:0x0CD4 0A INC R2
- C:0x0CD5 0A INC R2
- C:0x0CD6 00 NOP
- C:0x0CD7 00 NOP
- C:0x0CD8 00 NOP
- C:0x0CD9 00 NOP
- C:0x0CDA 00 NOP
- C:0x0CDB 00 NOP
- C:0x0CDC 00 NOP
- C:0x0CDD 00 NOP
- C:0x0CDE 00 NOP
- C:0x0CDF 00 NOP
- C:0x0CE0 00 NOP
- C:0x0CE1 3F ADDC A,R7
- C:0x0CE2 06 INC @R0
- C:0x0CE3 5B ANL A,R3
- C:0x0CE4 4F ORL A,R7
- C:0x0CE5 66 XRL A,@R0
- C:0x0CE6 6D XRL A,R5
- C:0x0CE7 7D07 MOV R5,#0x07
- C:0x0CE9 7F6F MOV R7,#0x6F
- C:0x0CEB 777C MOV @R1,#0x7C
- C:0x0CED 39 ADDC A,R1
- C:0x0CEE 5E ANL A,R6
- C:0x0CEF 7971 MOV R1,#0x71
- 141: void delay (unsigned int ms)
- 142: {
- 143: k = 0;
- C:0x0CF1 E4 CLR A
- C:0x0CF2 F518 MOV k(0x18),A
- C:0x0CF4 F519 MOV 0x19,A
- 144: while(k<ms)
- C:0x0CF6 C3 CLR C
- C:0x0CF7 E519 MOV A,0x19
- C:0x0CF9 9F SUBB A,R7
- C:0x0CFA E518 MOV A,k(0x18)
- C:0x0CFC 9E SUBB A,R6
- C:0x0CFD 40F7 JC C:0CF6
- 145: {}
- C:0x0CFF 22 RET
- 15: GETKEY: MOV DPTR,#0x8008
- C:0x0D00 908008 MOV DPTR,#LEDY(0x8008)
- 16: MOVX A,@DPTR
- C:0x0D03 E0 MOVX A,@DPTR
- 17: CPL A
- C:0x0D04 F4 CPL A
- 18: ANL A,#0x3F
- C:0x0D05 543F ANL A,#0x3F
- 19: MOV R7,A
- 20:
- C:0x0D07 FF MOV R7,A
- 21: RET
- C:0x0D08 22 RET
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement