⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 counter1.jam

📁 用s3c44b0x和 CIS(ContactImage Sensor) 传感器接口
💻 JAM
📖 第 1 页 / 共 3 页
字号:
IF (V4 == 256) THEN CALL L85;
V74 = 0;
ENDPROC;
PROCEDURE L110 USES DEVICE_DATA, TEMP_DATA, L30, L218, L276, L173, L311;
CALL L30;
V37 = 300;
V38 = 100;
V29 = 1;
V11 = 1;
CALL L218;
A18[9..0] = $016;
CALL L276;
V34 = 1;
V97 = 1;
IF (USE_FIXED_ALGORITHM) THEN GOTO L111;
CALL L173;
GOTO L112;
L111:
FOR i = 0 TO V20 - 1;
A31[i] = 0;
A57[i] = 0;
NEXT i;
L112:
FOR i = V1 TO 0 STEP -1;
A48[i] = 0;
IF (((A17[i] & 256) == 0) ||
((A17[i] & 4) == 0)) THEN GOTO L122;
V68 = 0;
FOR j = 0 TO i;
V26 = 0;
V2 = A12[j];
IF (i == j) THEN GOTO L113;
V26 = 1;
IF (((A17[j] & 256) == 0) ||
((A17[j] & 4) == 0)) THEN GOTO L113;
V26 = A5[V2];
L113:
V68 = V68 + V26;
NEXT j;
FOR j = 0 TO 14;
A16[j] = 0;
V46 = A6[V2];
V47 = j / (V46 << 1);
V48 = (j % (V46 << 1)) >> 1;
V69 = 1;
CALL L311;
IF (V48 < (V46 >> 1)) THEN GOTO L114;
V69 = 0;
V48 = V46 - V48 - 1;
L114:
V27 = V68 +
(V69 * ((80 * (V46 >> 1)) + A52[i])) +
(80 * V48) + (40 * (~j & 1)) + (4 - V47);
FOR k = 0 TO 7;
IF (USE_FIXED_ALGORITHM) THEN GOTO L115;
IF (A31[V27 + (5 * k)]) THEN
A16[j] = A16[j] | (1 << k);
GOTO L116;
L115:
IF ((A54[j << 1] & (1 << k)) != 0) THEN
A31[V27 + (5 * k)] = 1;
IF ((A54[(j << 1) + 1] & (1 << k)) != 0) THEN
A57[V27 + (5 * k)] = 1;
L116:
NEXT k;
IF (USE_FIXED_ALGORITHM) THEN
A16[j] = A54[j << 1];
NEXT j;
IF (!USE_FIXED_ALGORITHM) THEN GOTO L117;
PUSH i;
CALL L173;
POP i;
IF (V39) THEN V42 = 6;
L117:
IF ((A16[0] != 65) ||
(A16[1] != 76) ||
(A16[2] != 84) ||
(A16[3] != 69) ||
(A16[4] != 82) ||
(A16[5] != 65))
THEN V42 = 6;
IF (V42 != 0) THEN GOTO L122;
V35 = ((A16[6] - 48) * 10) + (A16[7] - 48);
V36 = A16[9] & 31;
V27 = 5 * 3 * (V2 - 1);
V40 = 0;
V72 = 300;
V73 = 100;
IF ((V36 & 24) == 16) THEN
V40 = 1;
FOR j = 0 TO (5 - 1);
IF (V40 ||
(V35 != A11[V27]) ||
(V36 != A11[V27 + 1])) THEN
GOTO L121;
V40 = 1;
IF ((A11[V27 + 2] & 1) != 1) THEN
GOTO L118;
V72 = A14[A16[8] & 31];
V73 = A15[(A16[8] >> 5) & 7];
L118:
IF ((A11[V27 + 2] & 2) != 2) THEN
GOTO L119;
k = 14;
IF ((V2 == 14) || (V2 == 20) || (V2 == 24)) THEN k = 11;
V72 = A14[((A16[k] >> 3) & 31) + 32];
V73 = A15[(A16[k] & 7) + 8];
L119:
IF ((A11[V27 + 2] & 4) != 4) THEN
GOTO L120;
V72 = 500;
V73 = 500;
L120:
IF ((A11[V27 + 2] & 1024) != 1024) THEN
GOTO L121;
V97 = 0;
L121:
V27 = V27 + 3;
NEXT j;
V27 = 0;
IF ((V36 & 15) > 9) THEN V27 = 7;
PRINT "Device #", V0 - i ," Silicon ID is ",
CHR$(A16[0]), CHR$(A16[1]), CHR$(A16[2]), CHR$(A16[3]),
CHR$(A16[4]), CHR$(A16[5]), CHR$(A16[6]), CHR$(A16[7]),
"(", CHR$(((V36 >> 4) & 1) + 48),
CHR$((V36 & 15) + 48 + V27), ")"
;
IF (V72 > V37) THEN V37 = V72;
IF (V73 > V38) THEN V38 = V73;
IF (!V40) THEN V42 = 7;
L122:
NEXT i;
ENDPROC;
PROCEDURE L169 USES DEVICE_DATA, TEMP_DATA
;
IF (V34 == 0) THEN GOTO L170;
IF (!USE_FIXED_ALGORITHM) THEN
DRSCAN V24, A30[(V24 - 1)..0], CAPTURE A31[V31..V30];
IF (USE_FIXED_ALGORITHM) THEN
DRSCAN V24, A30[(V24 - 1)..0], COMPARE A31[V31..V30],
A57[V31..V30], V40;
GOTO L172;
L170:
IF (V74) THEN GOTO L171;
DRSCAN V24, A30[(V24 - 1)..0], COMPARE A50[V31..V30],
A30[(V24 - 1)..0], V40;
GOTO L172;
L171:
DRSCAN V24, A30[(V24 - 1)..0],
COMPARE A30[(V24 - 1)..0], A30[(V24 - 1)..0],
V40;
L172:
IF (!V40) THEN V39 = 1;
ENDPROC;
PROCEDURE L173 USES DEVICE_DATA, TEMP_DATA, L287, L303, L169;
V39 = 0;
V40 = 1;
IF (V49) THEN CALL L287;
IF (V34 == 1) THEN GOTO L174;
V30 = V89;
V31 = V30 + (V24 - 1);
GOTO L175;
L174:
V30 = 0;
V31 = V24 - 1;
L175:
IF (!V45) THEN GOTO L176;
b = 0;
CALL L303;
L176:
CALL L169;
IF (!V45) THEN GOTO L177;
b = 1;
CALL L303;
L177:
V89 = V89 + V24;
IF (!V39 || (V34 == 1)) THEN
GOTO L178;
IF (V74) THEN V42 = 9;
IF (!V74) THEN V42 = 11;
L178:
ENDPROC;
PROCEDURE L218 USES DEVICE_DATA, TEMP_DATA, L276;
V30 = 0;
FOR j = 0 TO V1;
V31 = V30;
IF (((A17[j] & 256) == 0) ||
((A17[j] & 4) == 0) ||
((A17[j] & 8) != 0)) THEN GOTO L220;
V2 = A12[j];
IF (V11 >= A0[V2]) THEN GOTO L219;
V31 = V31 + (A0[V2] - 1);
A28[V31 - V11] = 1;
GOTO L220;
L219:
IF ((A17[j] & 8) == 0) THEN V49 = 1;
A17[j] = A17[j] | 8;
L220:
V30 = V31 + 1;
NEXT j;
A18[9..0] = $00E;
CALL L276;
DRSCAN V30, A28[(V30 - 1)..0];
V30 = 0;
FOR j = 0 TO V1;
V31 = V30;
V2 = A12[j];
IF (((A17[j] & 256) == 0) ||
((A17[j] & 4) == 0) ||
((A17[j] & 8) != 0)) THEN GOTO L221;
V31 = V31 + (A0[V2] - 1);
A28[V31 - V11] = 0;
L221:
V30 = V31 + 1;
NEXT j;
V10 = V11;
ENDPROC;
PROCEDURE L243 USES DEVICE_DATA, TEMP_DATA, L287, L276, L218;
V30 = V89;
IF (V49) THEN CALL L287;
V31 = V30 + (V23 - 1);
IF (V75) THEN GOTO L244;
DRSCAN V23, A50[V31..V30];
GOTO L245;
L244:
IF (V44) THEN DRSCAN V23, A30[(V23 - 1)..0];
IF (!V44) THEN DRSCAN V23, A29[(V23 - 1)..0];
L245:
IF (V97 && ((V10 > 2) || USE_REV0_PROG_ALG)) THEN
GOTO L246;
V11 = V10;
CALL L218;
WAIT 1000 USEC;
A18[9..0] = $012;
CALL L276;
L246:
WAIT (V37 * 100) USEC;
V89 = V89 + V23;
ENDPROC;
PROCEDURE L257 USES DEVICE_DATA, TEMP_DATA, L30, L287, L276
, L218, L303, L243
;
IF (V107 == 0) THEN GOTO L271;
CALL L30;
FOR i = 0 TO V1;
IF (((A17[i] & V4) == 0) ||
((A17[i] & 4) == 0)) THEN GOTO L258;
IF (((V4 == 1) || (V4 == 256)) &&
((A17[i] & 16) == 0)) THEN
A17[i] = A17[i] | 8;
IF ((V4 == 2) &&
((A17[i] & 16) == 0)) THEN
A17[i] = A17[i] & ~4;
IF ((A17[i] & 16) != 0) THEN V75 = 1;
L258:
NEXT i;
IF (!V106 && (V75 == 0)) THEN
GOTO L271;
IF (V106 && (V75 == 0)) THEN
GOTO L263;
IF (V4 != 256) THEN GOTO L262;
CALL L287;
V11 = 1;
CALL L218;
b = 0;
CALL L303;
IF (USE_REV0_PROG_ALG) THEN GOTO L260;
A18[9..0] = $016;
CALL L276;
GOTO L261;
L260:
A18[9..0] = $012;
V91 = 1;
CALL L276;
V91 = 0;
L261:
V44 = 1;
CALL L243;
b = 1;
CALL L303;
GOTO L263;
L262:
V11 = 0;
L263:
IF (!V106) THEN GOTO L271;
IF (V4 == 1) THEN
A18[9..0] = $03E;
IF ((V4 == 2) || (V4 == 256)) THEN
A18[9..0] = $3FF;
CALL L276;
CALL L30;
V75 = 0;
FOR i = 0 TO V1;
IF (((A17[i] & V4) == 0) ||
((A17[i] & 4) == 0)) THEN GOTO L266;
IF ((A17[i] & 16) != 0) THEN GOTO L264;
A17[i] = A17[i] | 16;
GOTO L265;
L264:
A17[i] = A17[i] & ~16;
L265:
IF (((V4 == 1) || (V4 == 256)) &&
((A17[i] & 16) == 0)) THEN
A17[i] = A17[i] | 8;
IF ((V4 == 2) &&
((A17[i] & 16) == 0)) THEN
A17[i] = A17[i] & ~4;
IF ((A17[i] & 16) != 0) THEN V75 = 1;
L266:
NEXT i;
IF (V75 == 0) THEN GOTO L271;
IF (V4 != 256) THEN GOTO L270;
CALL L287;
V11 = 1;
CALL L218;
b = 0;
CALL L303;
IF (USE_REV0_PROG_ALG) THEN GOTO L268;
A18[9..0] = $016;
CALL L276;
GOTO L269;
L268:
A18[9..0] = $012;
V91 = 1;
CALL L276;
V91 = 0;
L269:
V44 = 1;
CALL L243;
b = 1;
CALL L303;
GOTO L271;
L270:
V11 = 0;
L271:
V75 = 0;
ENDPROC;
PROCEDURE L272 USES DEVICE_DATA, TEMP_DATA
, L274
;
IF (V4 == 256) THEN CALL L274;
ENDPROC;
PROCEDURE L274 USES DEVICE_DATA, TEMP_DATA;
FOR i = 0 TO V1;
V2 = A12[i];
IF (((A17[i] & 256) != 0) &&
((A17[i] & 4) != 0)) THEN
IF (A0[V2] > V32) THEN
V32 = A0[V2];
NEXT i;
ENDPROC;
PROCEDURE L276 USES DEVICE_DATA, TEMP_DATA;
V41 = 0;
V27 = 0;
IF (!V56) THEN GOTO L277;
V56 = 0;
V41 = 50;
IF (!USE_EXTEND_IR_DELAY_METHOD) THEN GOTO L277;
V27 = 50;
A32[49..0] = A30[49..0];
L277:
FOR i = 0 TO V1;
IF ((A17[i] & 8) != 0) THEN GOTO L278;
IF (((A17[i] & V4) != 0) &&
((A17[i] & 4) != 0)) THEN GOTO L280;
A33[(A25[i] - 1)..0] = A39[(A25[i] - 1)..0];
IF (((A17[i] & 1) != 0) &&
((A17[i] & 4) != 0)) THEN
A33[(A25[i] - 1)..0] = $03E;
A32[(V27 + (A25[i] - 1))..V27] = A33[(A25[i] - 1)..0];
V27 = V27 + A25[i];
GOTO L281;
L278:
IF ((A17[i] & 2) != 0) THEN GOTO L279;
A32[(V27 + 9)..V27] = $3FF;
IF ((A17[i] & 1) != 0) THEN
A32[(V27 + 9)..V27] = $03E;
V27 = V27 + 10;
GOTO L281;
L279:
IF (!V57) THEN GOTO L280;
A32[(V27 + 9)..V27] = $02A;
V27 = V27 + 10;
GOTO L281;
L280:
l = 0;
IF ((A18[20] == 1) && ((A17[i] & 64) != 0)) THEN
l = 10;
A32[(V27 + 9)..V27] = A18[(l + 9)..l];
V27 = V27 + 10;
L281:
NEXT i;
IF ((V41 == 0) || USE_EXTEND_IR_DELAY_METHOD) THEN
GOTO L282;
STATE DRPAUSE;
WAIT DRPAUSE, 5 USEC, DRPAUSE;
L282:
IRSCAN V27, A32[(V27 - 1)..0];
V57 = 0;
WAIT IRPAUSE, V83 USEC, IRPAUSE;
IF (V91) THEN GOTO L283;
STATE IDLE;
WAIT 3 CYCLES;
L283:
ENDPROC;
PROCEDURE L287 USES DEVICE_DATA, TEMP_DATA;
V23 = 0;
V24 = 0;
FOR i = 0 TO (V19 - 1);
A30[i] = 1;
NEXT i;
FOR i = 0 TO V1;
V25 = 1;
V26 = 1;
IF (((A17[i] & V4) == 0) ||
((A17[i] & 4) == 0) ||
((A17[i] & 8) != 0)) THEN GOTO L288;
V2 = A12[i];
V25 = A1[V2];
V26 = A5[V2];
GOTO L289;
L288:
IF (V74) THEN A30[V24] = 0;
L289:
V23 = V23 + V25;
V24 = V24 + V26;
NEXT i;
V49 = 0;
ENDPROC;
PROCEDURE L303 USES DEVICE_DATA, TEMP_DATA;
j = 0;
l = 0;
IF (V75) THEN l = 1;
FOR i = 0 TO V1;
k = j;
IF (((A17[i] & 256) == 0) ||
((A17[i] & 4) == 0)) THEN GOTO L304;
V2 = A12[i];
k = k + (A5[V2] - 1);
V27 = (80 * (A6[V2] >> 1)) + A52[i] -
A51[V2 - 13] - 1 + l;
IF (V75 && ((V2 == 13) || (V2 == 19) || (V2 == 23))) THEN V27 = V27 - 2;
A30[V27 + j] = b;
L304:
j = k + 1;
NEXT i;
ENDPROC;
PROCEDURE L311 USES DEVICE_DATA, TEMP_DATA;
INTEGER V93 = V48;
IF ((V2 != 16) && (V2 != 18) && (V2 != 22) && (V2 != 26) && (V2 != 27)) THEN GOTO L312;
V93 = V93 >> 1;
IF (((V48 & 3) % 3) != 0) THEN
V93 = V93 | (A6[V2] >> 2);
L312:
V48 = V93;
ENDPROC;
' END OF FILE
CRC 52F5;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -