DS1990 DALLAS [Dallas Semiconductor], DS1990 Datasheet - Page 8

no-image

DS1990

Manufacturer Part Number
DS1990
Description
Serial Number iButton
Manufacturer
DALLAS [Dallas Semiconductor]
Datasheet

Available stocks

Company
Part Number
Manufacturer
Quantity
Price
Part Number:
DS1990A#A21
Manufacturer:
DALLAS
Quantity:
129
Part Number:
DS1990A#A21
Manufacturer:
DALLAS
Quantity:
689
Part Number:
DS1990A#C19
Manufacturer:
SANYO
Quantity:
900
Part Number:
DS1990A#F5
Manufacturer:
SAMSUNG
Quantity:
160
Part Number:
DS1990A+C4F
Manufacturer:
DALLAS
Quantity:
4 691
Part Number:
DS1990A-F5+
Manufacturer:
MAXIM
Quantity:
5
Part Number:
DS1990A-F5+
Manufacturer:
MAXIM/美信
Quantity:
20 000
CRC ASSEMBLY LANGUAGE PROCEDURE Table 1
CRC GENERATION
To validate the data transmitted from the DS1990A, the bus master may generate a CRC value from the
data as it is received. This generated value is compared to the value stored in the last eight bits of the
DS1990A. The bus master computes the CRC over the 8-bit family code and all 48 ID number data bits,
but not over the stored CRC value itself. If the two CRC values match, the transmission is error-free.
An example of how to generate the CRC using assembly language software is shown in Table 1. This
assembly language code is written for the DS5000 Soft microcontroller which is compatible with the
8031/51 Microcontroller family. The procedure DO_CRC calculates the cumulative CRC of all the bytes
passed to it in the accumulator. It should be noted that the variable CRC needs to be initialized to 0 before
the procedure is executed. Each byte of the data is then placed in the accumulator and DO-CRC is called
to update the CRC variable. After all the data has been passed to DO_CRC, the variable CRC will contain
the result. The equivalent polynomial function of this software routine is:
For more details, see the Book of DS19xx iButton Standards.
DO_CRC:
CRC_LOOP:
ZERO:
PUSH
PUSH
PUSH
MOV
XRL
RRC
MOV
JNC
XRL
RRC
MOV
POP
RR
PUSH
DJNZ
POP
POP
POP
RET
CRC = x
ACC
B
ACC
B,#8
A,CRC
A
A,CRC
ZERO
A,#18H
A
CRC,A
ACC
A
ACC
B,CRC_LOOP
ACC
B
ACC
8 of 10
8
+ x
5
+ x
4
+ 1
; save the accumulator
; save the B register
; save bits to be shifted
;
; calculate CRC
; move it to the carry
; get the last CRC value
; skip if data=0
; update the CRC value
;
; position the new CRC
; store the new CRC
; get the remaining bits
; position the next bit
; save the remaining bits
; repeat for eight bits
; clean up the stack
; restore the B register
; restore the accumulator
set shift=8bits
DS1990A

Related parts for DS1990