Код АТ89С51: DOW_CRC: PUSH ACC ;Save the Accumulator. PUSH B ;Save the B register. PUSH ACC ;Save bits to be shifted. MOV B,#8 ;Set to shift eight bits. CRC_LOOP: XRL A,TEMP ;Calculate DQIN xor CRCT0. RRC A ;Move it to the carry. MOV A,TEMP ;Get the last CRC value. JNC ZERO ;Skip if DQIN xor CRCT0 = 0. XRL A,#18H ;Update the CRC value. ZERO: RRC A ;Position the new CRC. MOV TEMP,A ;Store the new CRC. POP ACC ;Get the remaining bits. RR A ;Position next bit in LSB. PUSH ACC ;Save the remaining bits. DJNZ B,CRC_LOOP ;Repeat for eight bits. POP ACC ;Clean up the stack. POP B ;Restore the B register. POP ACC ;Restore the Accumulator. RET ;Return. Тот же код на AVR (пока на Tiny2313, хотя пишется под Tiny15): DOW_CRC: push reg_TMP ldi reg_count,8 CRC_LOOP: eor reg_TMP,reg_data ror reg_TMP mov reg_TMP,reg_data brcc zero ldi reg_TMP2,0x18 eor reg_TMP,reg_TMP2 ZERO: ror reg_TMP pop reg_TMP mov reg_TMP,r23 lsr reg_TMP push reg_TMP DEC reg_count BRNE CRC_LOOP pop reg_TMP pop reg_count reti
Перенесённый код.
-
Как просверлить отверстие в деревянном цилиндре по оси вращения?
Мне понадобилось просверлить отверстие 6 мм в деревянном цилиндре (черенок для граблей d=25 мм), длинной 18 см, чтобы продеть верёвку. При чём не в…
-
Любителям холодного оружия посвящается.
Я как любитель оружия (очень слабенький такой любитель, ТТХ не знаю), а в особенности холодного не мог пройти мимо такой поделки - тиснение медью и…
-
Жёсткое скрещивание.
Интересный концепт предлагают испанские паяльщики - скрестить дисплей Sony Playstatin с Sega. У меня валяется дома такой дисплейчик. Я попробовал…
- Post a new comment
- 0 comments
- Post a new comment
- 0 comments