先给我的代码,
- CW DATA 0F9FCH ;写指令
- CR DATA 0F9FEH ;读状态
- DIW DATA 0F9FDH ;写数据
- DIR DATA 0F9FFH ;读数据
- ORG 0000H
- AJMP START
- ORG 0030H
- PANYAO:
- DB 'C51',0
- START:
- ;MOV R3,#38H
- ;LCALL XIEZL
- MOV R3,#01H
- LCALL XIEZL
- MOV R3,#0FH
- LCALL XIEZL
- MOV R3,#06H
- LCALL XIEZL
- PAN1:
- MOV DPTR,#PANYAO
- MOV A,R2
- MOVC A,@A+DPTR;按理说应该是显示 C ,但是实际上A的数值是0FFH
- JZ PAN2
- LCALL XIESJ
- INC R2
- LCALL DELAY
- JMP PAN1
- PAN2:
- CLR P1.0
- JMP $
- XIEZL:
- MOV DPTR,#CW
- MOV A,R3 ;1111B
- MOVX @DPTR,A
- LCALL BF
- RET
- XIESJ:
- MOV DPTR,#DIW
- MOVX @DPTR,A
- LCALL BF
- RET
- BF:
- MOV DPTR,#CR
- MOVX A,@DPTR
- JB ACC.7,BF
- RET
- DELAY:
- MOV R6,#50
- D1:MOV R7,#100
- DJNZ R7,$
- DJNZ R6,D1
- DJNZ R5,DELAY
- RET
- END
以上的代码,在Proteus中仿真可以显示C51,但是在实际中,显示的是一团黑,(查了一下是0FFH),为什么呢,我发现问题可能是在
MOVC A,@A+DPTR;按理说应该是显示 C ,但是实际上A的数值是0FFH
不知道为什么!!