?

Log in

No account? Create an account
  Journal   Friends   Calendar   User Info   Memories
 

Электронный миссионер

28th July, 2006. 2:45 am. Перенесённый код.

Я таки перенёс код с одного камня на другой. Вышла очень даже ничего. Правда пришлось RFM по обоим кристаллам. Так вот что вышло:
Код АТ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

Make Notes

28th July, 2006. 11:14 am. Всех кто ф теме!

С праздником!!!!

Read 7 Notes -Make Notes

28th July, 2006. 5:28 pm. Это я так с асмом ночами

Read 1 Note -Make Notes

Back A Day - Forward A Day