为啥proteus11里读不到M45PE16设备ID呢

发布时间 2023-05-07 09:56:59作者: 汀洲杜若

环境:Proteus 8.11 sp0,电路连接如下图。

程序清单是:
SCK BIT P3.0
SI BIT P3.1
SO BIT P3.2
CS BIT P3.3
ORG 00H
MOV SP,#30H
INIT:
CLR SCK
SETB SO
;发送RDID命令(9F)
CLR CS
L0:
MOV A,#9FH
MOV R0,#8
L1:
RLC A
MOV SI,C
SETB SCK
CLR SCK
DJNZ R0,L1
;读8位
L2:
CLR A
MOV R0,#8
L3:
RL A
JNB SO,L4
ORL A,#01H
L4:
SETB SCK
CLR SCK
DJNZ R0,L3
L5:
MOV P1,A
;再读8位
L6:
CLR A
MOV R0,#8
L7:
RL A
JNB SO,L8
ORL A,#01H
L8:
SETB SCK
CLR SCK
DJNZ R0,L7
L9:
MOV P2,A
;结束通信,延时后重复
L10:
SETB CS
DL:
MOV R1,#0FFH
DL0:
MOV R0,#0FFH
DJNZ R0,$
DJNZ R1,DL0
SJMP INIT
END
仿真结果图:

分析仪信号:

M45PE16手册上关于RDID的说明:

为什么出现这种情况(LED上的两个20而不是我想的2040)呢?