菜鸟求助!!

zhangxiaoxi 2003-08-18 11:07:20
最近我用C51编了一个AT93C46的读写程序,可是怎么调试都有问题,我觉得一定是时序有问题
请问哪位高手能将他编的给我看看,或者能给我详细讲讲时序问题(我总是分不清先后和高低)
求求大家了,催的很紧!!
...全文
49 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuqianyi 2003-08-23
  • 打赏
  • 举报
回复
回复张晓西:
for(i=0;i<5;i++)
{
di=0;
sk=1;
sk=0;
}
为什么i=5而不是4呢?
是这样的:例如EWEN码值为11XXXXX,SB为1,OPCODE为00,将SB和OPCODE及EWEN的前2位11组合为1个数据code_ewen,EWEN码的其余5位组成另一个数据.这样两个数据中只有5位为有用信息.
所以i=5而不是4.你可以从网上下载AT93C46的DATASHEET看看.

zhangxiaoxi 2003-08-20
  • 打赏
  • 举报
回复
非常感谢大家回复,只是还有一点不明白:
for(i=0;i<5;i++)
{
di=0;
sk=1;
sk=0;
}
为什么i=5而不是4呢?是根据时序判断得吗?
还有,我是一个新手,非常盼望大家多多指教!
我的QQ:51587606 EMAIL:xiaoxizhang@hotmail.com
如果愿意,也可以留下联系方法
张晓西再次谢过了!!
zhangxiaoxi 2003-08-20
  • 打赏
  • 举报
回复
谢谢大家对我的关心,本菜鸟真是感激不尽。但时序部分一直是我头痛的地方,请问各位高手能否给在下推荐一些讲时序部分,或者有详细例子的数、或网站?在此先行谢过了!!
SurmountLi 2003-08-20
  • 打赏
  • 举报
回复
订正yuzhang_li@hotmail.com,那个信箱不好用,thx
SurmountLi 2003-08-20
  • 打赏
  • 举报
回复
我在holtek做MCU的Test编程,但也是刚刚进公司,多多探讨!如果有时间看能不能弄到一份执行时序图给你(当然绝对是在公司允许的范围内)。yuzhang@kingteksemi.com.cn 李玉章
多多切磋,共同进取!
CrazyGentleman 2003-08-19
  • 打赏
  • 举报
回复
:(
zhangxiaoxi 2003-08-19
  • 打赏
  • 举报
回复
啊,那没有哪位高手用C51编过93才6吗?这可怎么办???
wwwunix 2003-08-19
  • 打赏
  • 举报
回复
时序问题最好是看着图讲,凭空讲不清楚.:-(
yuqianyi 2003-08-19
  • 打赏
  • 举报
回复
;/***********************************************************/
;/* 93C56 读写程序 2001年4月25日 */
;/* p1.0=DI p1.1=D0 P1.2=SK P1.3=CS */
;/* EWEN=擦写允许 WW=写入 RR=读出 R1=出入 B=地址 */
;/***********************************************************/

EWEN: CLR p1.3 ;片选禁止
MOV A,#30H ;擦写允许 0011XXXX
MOV R7,#05H ;共5位
ACALL WWC
CLR P1.3 ;换CS低
WW: MOV A,#40H ;写命令 01XXXXXX
MOV R7,#03H ;起始写命令供3位
ACALL WWC
MOV A,R1 ;取待传数据
ACALL WWD
CLR P1.3
ACALL DELAY
RET
R: MOV A, #08H ;读命令
MOV R7,#03H
ACALL WWC
ACALL RRD
MOV R1,A
RET
WWD: MOV R7,#80H ;字节长度8位
CLR P1.2 ;SK=0
SETB P1.3 ;CS=1
RLC A ;移最高位到CY
AJMP GGG2 ;
WWC: SETB C
GGG0: CLR P1.2
SETB P1.3
GGG1: MOV P1.1,C ;送数到DI
CPL P1.2 ;SK=1 产生上升沿
RLC A
CPL P1.2 ;SK=0
DJNZ R7,GGG1
MOV R7,#07H ;地址长度
MOV A,B ;取地址
RLC A ;地址移到高位
CLR P1.2
GGG2: MOV P1.1,C
CPL P1.2
RLC A
CPL P1.2
DJNZ R7,GGG2
RET
RRD: SETB P1.3
CLR P1.2
MOV R7,#08H ;数据长度
RRR: CPL P1.2
MOV C,P1.0 ;从DO取数
RLC A
CPL P1.2
DJNZ R7,RRR
CLR P1.3
RET
DELAY:MOV R7,#1FH
DD: MOV R6,#0FFH
DDD: DJNZ R6,DDD
DJNZ R7,DD
RET

END
yuqianyi 2003-08-19
  • 打赏
  • 举报
回复
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define code_ewen 0x98
#define code_write 0xa0
#define code_read 0xc0
#define code_eral 0x90
#define code_erase 0xe0
#define code_wral 0x88

sbit cs=P1^0;
sbit sk=P1^1;
sbit di=P1^2;
sbit dout=P1^3;


uchar mtmp;

void delay()
{uchar i,j;
for(i=0;i<200;i++)
for(j=0;j<10;j++);
}


void str_ewen()
{uchar i;
cs=0;
sk=0;
cs=1;
for(i=0;i<5;i++)
{
di=(bit)((code_ewen>>(7-i))&0X01);
sk=1;
sk=0;
}
for(i=0;i<5;i++)
{
di=0;
sk=1;
sk=0;
}
cs=0;
}

void str_eral()
{
uchar i;
cs=0;
sk=0;
cs=1;
for(i=0;i<5;i++)
{
di=(bit)((code_eral>>(7-i))&0X01);
sk=1;
sk=0;
}
for(i=0;i<5;i++)
{
di=0;
sk=1;
sk=0;
}
cs=0;
delay();

}


void str_wral(uchar dat)
{
uchar i;
cs=0;
sk=0;
cs=1;
for(i=0;i<5;i++)
{
di=(bit)((code_wral>>(7-i))&0X01);
sk=1;
sk=0;
}
for(i=0;i<5;i++)
{
di=0;
sk=1;
sk=0;
}

for(i=0;i<8;i++)
{
di=(bit)((dat>>(7-i))&0X01);
sk=1;
sk=0;
}


cs=0;
delay();
delay();

}


void str_erase(uchar addr)
{
uchar i;
cs=0;
sk=0;
cs=1;
for(i=0;i<3;i++)
{
di=(bit)((code_erase>>(7-i))&0X01);
sk=1;
sk=0;
}
for(i=0;i<7;i++)
{
di=(bit)((addr>>(6-i))&0X01);
sk=1;
sk=0;
}

cs=0;
delay();
}


void str_write(uchar addr,uchar dat)
{
uchar i;
cs=0;
sk=0;
cs=1;
for(i=0;i<3;i++)
{
di=(bit)((code_write>>(7-i))&0X01);
sk=1;
sk=0;
}
for(i=0;i<7;i++)
{
di=(bit)((addr>>(6-i))&0X01);
sk=1;
sk=0;
}

for(i=0;i<8;i++)
{
di=(bit)((dat>>(7-i))&0X01);
sk=1;
sk=0;
}
cs=0;
delay();
}



uchar str_read(uchar addr)
{uchar i;
bit btmp;
uchar tmp=0;

cs=0;
sk=0;
cs=1;
for(i=0;i<3;i++)
{
di=(bit)((code_read>>(7-i))&0X01);
sk=1;
sk=0;
}
for(i=0;i<7;i++)
{
di=(bit)((addr>>(6-i))&0X01) ;
sk=1;
sk=0;
}
for(i=0;i<8;i++)
{
sk=1;
btmp=dout;
tmp=tmp+((((uint)btmp)&0x01)<<(7-i));
sk=0;
}
cs=0;
delay();
return(tmp);
}




void main(void)
{
mtmp=0;
str_ewen();
str_eral();
str_erase(0x00);
str_write(0x00,0x10);
mtmp=str_read(0x00);

mtmp=1;
}

zhangxiaoxi 2003-08-19
  • 打赏
  • 举报
回复
请问就没有人能帮兄弟一把吗 :(
zhangxiaoxi 2003-08-19
  • 打赏
  • 举报
回复
up 100分!! 帮帮我吧!!

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧