发表于:2008-01-22 23:52:00
393楼
谢鸣:
给你一段我用过的程序,89C51单片机,12MHZ晶振,程序正常.
请注意,发送33H后,短暂延时后读取就是了.
getmp:setb dq
bcd: acall b20rst
jb flag1,s22
mov d2,#4
setb flag2
ret
s22: clr flag1
acall delay1
MOV A,#33H ;发送读取ROM码命令
ACALL WRITE ;写入
acall delay1 ;延时
acall read0 ;读取返回的ROM码
ret
WRITE: MOV R2,#8
CLR C
WR1: CLR DQ
MOV R3,#6
DJNZ R3,$
RRC A
MOV DQ,C
MOV R3,#23
DJNZ R3,$
SETB DQ
NOP
DJNZ R2,WR1
SETB DQ
RET
READ0: mov r4,#9
mov r1,#36h
read1: MOV R2,#8
READL: CLR C
SETB DQ
NOP
NOP
CLR DQ
NOP
NOP
NOP
SETB DQ
MOV R3,#7
DJNZ R3,$
MOV C,DQ
MOV R3,#23
DJNZ R3,$
RRC A
DJNZ R2,READL
mov @r1,a
inc r1
djnz r4,read1
RET