首页 » 技术SOS » 嵌入式系统 » 中间件和软件库 » 关于X24C45的问题

关于X24C45的问题

菜鸟
2010-06-24 11:59:06     悬赏10分
我在作X24C45存储操作时,单片机有数据送入X24C45,但X24C45没有数据读出,请大家帮着解决一下,谢谢! $include (c8051f000.inc); Include register definition file. SK BIT P1.2; CE BIT P1.3; DIO BIT P1.1; WRDS EQU 80H; ST0 EQU 81H; ENAS EQU 82H; WRITE EQU 83H; WREN EQU 84H; RCL EQU 85H; READ EQU 86H; DATAHI EQU R1 ;数据的高位寄存器 DATALO EQU R2 ;数据的低位寄存器 ADDR EQU R3 ;地址寄存器 COUNT EQU R4 ;计数器 INST EQU R5 ;命令寄存器 ;------------------------------------------------------- ORG 0000H;程序复位地址 LJMP BEGIN; ORG 0100H;程序起始地址BEGIN BEGIN: MOV SP,#60H;初始化堆栈指针 MOV OSCICN,#95H; CLR EA; MOV WDTCN,#0DEH; MOV WDTCN,#0ADH; SETB EA; MOV XBR2,#40H; MOV PRT1CF,#00H; MOV PRT2CF,#0FFH; MOV P1,#0FFH; MOV P2,#0FFH; CLR CE; CLR SK; CLR DIO; MOV A,#RCL; MOV INST,A; SETB CE CLR SK; LCALL OUTBYT; NOP CLR CE; NOP NOP CLR DIO ; MOV A,#09H ;读地址9中的内容,并保在寄存器DATALO与DATAHI中 ; MOV ADDR,A; ; LCALL RDWRD; ; MOV P2,DATAHI; DONE0: MOV A,#WREN;设置“写允许”锁存器 MOV INST,A; SETB CE; CLR SK; LCALL OUTBYT; NOP CLR CE; NOP NOP NOP CLR DIO MOV DATAHI,#0AAH; MOV DATALO,#55H; MOV A,#02H;将数据写入地址2中 MOV ADDR,A; LCALL WRWRD; MOV R7,#10H LOOP1: MOV A,#02H ;读地址2中的内容,并保在寄存器DATALO与DATAHI中 MOV ADDR,A; LCALL RDWRD; MOV R7,#20H LOOP2: DJNZ R7,LOOP2 DONE: LJMP DONE0;循环直到复位 WRWRD: SETB CE ;将寄存器DATALO与DATAHI中的内容写入寄存器ADDR指定的地址中 CLR SK; MOV A,ADDR; RL A;将地址加入指令中 RL A; RL A; ANL A,#78H; ORL A,#83H; MOV INST,A; LCALL OUTBYT; MOV A,DATAHI; MOV INST,A; LCALL OUTBYT;输出数据的高字节 MOV A,DATALO; MOV INST,A; LCALL OUTBYT;输出数据的低字节 NOP CLR CE; CLR DIO RET ;将寄存器INST中的内容传送到X24C45的输入口。 RDWRD: SETB CE;读寄存器ADDR指定的地址中内容 CLR SK; MOV A,ADDR; RL A;将地址编入指令中 RL A; RL A; ANL A,#78H; ORL A,#86H; MOV INST,A; LCALL SEND7; SETB DIO; ; MOV R7,#05H ;LOOP3: DJNZ R7,LOOP3 MOV COUNT,#10H;读进16位数据 MOV A,#00H; SETB SK; NOP NOP NOP NOP CLR SK; BITX: MOV C,DIO; DIONO1:MOV A,DATALO;将数据移进寄存器DATALO与DATAHI中 RLC A; MOV DATALO,A; MOV A,DATAHI; RLC A; MOV DATAHI,A; SETB SK; NOP NOP NOP NOP CLR SK; DJNZ COUNT,BITX;读数据循环 NOP CLR CE; CLR DIO RET ;将寄存器INST中的内容传送到X24C45的输入口。 ;---------------------------------------------------- SEND7: MOV COUNT,#07H;移出7位读命令字 LJMP LOOP0; OUTBYT:MOV COUNT,#08H;移出8位命令字LOOP0: LOOP0: MOV A,INST;为将数据输出到DI作准备 RLC A; MOV INST,A; MOV DIO,C; NOP NOP NOP SETB SK; NOP NOP NOP NOP CLR SK; DJNZ COUNT,LOOP0; RET;产生时钟脉冲 ;-------------------------------------------------------------- END
分享
关键词: X24C45, 问题  
专家
2023-01-10 23:00:23
1楼

这也太难看了,不知道什么问题

高工
2023-01-10 23:03:18
2楼

看起来太乱了

专家
2023-03-05 13:25:56
3楼

完全看不出来

高工
2023-07-15 20:17:18
4楼

学习学习