我的sst29sf040怎么不能正常发送数据呢?大虾们指导以下好吗,

[复制链接]
2566|0
 楼主| ccjchen 发表于 2007-4-9 20:01 | 显示全部楼层 |阅读模式
ST, TE, AD, ADDR, DDR
我要把&nbsp;sst29sf040当作&nbsp;数据存储器&nbsp;使用,89c52的WR接sst29sf040的WE端,89c52的RD接sst29sf040的OE端,单片机(89c52&nbsp;)的P2.7口和它的CE端相连,P2.6--P2.0和它的A14--A8相连,P07--P00通过373与A7--A0相连,而sst29sf040的A18--A15接地<br />以下是我的程序:程序运行后发现外部地址0x0030上,没有写上数据0x20,用示波器检测各个管脚都有信号,但不知正确与否.<br />#define&nbsp;_SST_C_<br />#include&nbsp;&quot;reg51.h&quot;<br />#include&nbsp;&quot;sst.h&quot;<br />#include&nbsp;&ltintrins.h&gt<br />#include&nbsp;&ltabsacc.h&gt<br /><br />#define&nbsp;FALSE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0<br />#define&nbsp;TRUE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br /><br />#define&nbsp;SECTOR_SIZE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;128&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*Must&nbsp;be&nbsp;128&nbsp;bytes&nbsp;for&nbsp;29EE020*/<br /><br />#define&nbsp;SST_ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0xBF<br />#define&nbsp;SST_29SF040&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0X13<br />#define&nbsp;uchar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;<br />#define&nbsp;uint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />void&nbsp;&nbsp;wait(uchar&nbsp;p,uchar&nbsp;q);<br />int&nbsp;&nbsp;&nbsp;Check_SST_29SF040();<br />void&nbsp;&nbsp;ByteProgram(uchar&nbsp;SrcByte,uint&nbsp;Dst);<br />int&nbsp;&nbsp;&nbsp;Erase_One_Sector(uint&nbsp;Dst);<br />uchar&nbsp;ByteRead(uint&nbsp;addr);<br /><br />void&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;Erase_One_Sector(0);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;//&nbsp;while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;//{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ByteProgram(0x20,0x0030);<br />&nbsp;&nbsp;&nbsp;&nbsp;ByteRead(0x0030);<br />//&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br />void&nbsp;&nbsp;ByteProgram(uchar&nbsp;data&nbsp;SrcByte,uint&nbsp;Dst)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;XBYTE[0x0555]&nbsp;=&nbsp;0xAA;<br />&nbsp;&nbsp;&nbsp;&nbsp;XBYTE[0x02AA]&nbsp;=&nbsp;0x55;<br />&nbsp;&nbsp;&nbsp;&nbsp;XBYTE[0x0555]&nbsp;=&nbsp;0xA0;<br />&nbsp;&nbsp;&nbsp;&nbsp;XBYTE[Dst]&nbsp;&nbsp;&nbsp;=&nbsp;SrcByte;<br />&nbsp;&nbsp;&nbsp;&nbsp;//Check_Toggle_Ready(Dst);<br />&nbsp;&nbsp;&nbsp;&nbsp;wait(1,9);//等待25us<br />}<br />int&nbsp;Check_SST_29SF040()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;&nbsp;SST_id1;<br />&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;&nbsp;SST_id2;<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;ReturnStatus;<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Issue&nbsp;the&nbsp;Software&nbsp;ID&nbsp;code&nbsp;to&nbsp;29sf040*/<br />&nbsp;&nbsp;&nbsp;&nbsp;XBYTE[0x0555]=&nbsp;0xAA;/*&nbsp;set&nbsp;up&nbsp;address&nbsp;to&nbsp;be&nbsp;555h&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;write&nbsp;data&nbsp;0xAA&nbsp;to&nbsp;the&nbsp;address&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;XBYTE[0x02AA]=&nbsp;0x55;/*&nbsp;set&nbsp;up&nbsp;address&nbsp;to&nbsp;be&nbsp;2AAh&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;write&nbsp;data&nbsp;0x55&nbsp;to&nbsp;the&nbsp;address&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;XBYTE[0x0555]=&nbsp;0x90;<br />&nbsp;&nbsp;&nbsp;&nbsp;wait(61,74);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*delay&nbsp;10ms*/<br />&nbsp;&nbsp;&nbsp;&nbsp;/*read&nbsp;the&nbsp;product&nbsp;ID&nbsp;from29sf040*/<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;set&nbsp;up&nbsp;address&nbsp;to&nbsp;be&nbsp;0000h&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;SST_id1&nbsp;&nbsp;=&nbsp;XBYTE[0x0000]&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;get&nbsp;first&nbsp;ID&nbsp;byte???????????????*/<br />&nbsp;&nbsp;&nbsp;&nbsp;SST_id2&nbsp;&nbsp;=&nbsp;XBYTE[0x0001];/*&nbsp;set&nbsp;up&nbsp;address&nbsp;to&nbsp;be&nbsp;0001h&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((SST_id1&nbsp;==SST_ID)&&(SST_id2&nbsp;==&nbsp;SST_29SF040))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReturnStatus&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ReturnStatus&nbsp;=&nbsp;-1;<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;Issue&nbsp;the&nbsp;Soffware&nbsp;Product&nbsp;ID&nbsp;Exit&nbsp;code&nbsp;thus&nbsp;returning&nbsp;the&nbsp;29EE020&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;to&nbsp;the&nbsp;read&nbsp;operating&nbsp;mode&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;set&nbsp;up&nbsp;address&nbsp;to&nbsp;be&nbsp;555h&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;XBYTE[0x0555]&nbsp;=&nbsp;0xAA;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;write&nbsp;data&nbsp;0xAA&nbsp;to&nbsp;the&nbsp;address&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;set&nbsp;up&nbsp;address&nbsp;to&nbsp;be&nbsp;2AAh&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;XBYTE[0x02AA]&nbsp;=&nbsp;0x55;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;write&nbsp;data&nbsp;0x55&nbsp;to&nbsp;the&nbsp;address&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;set&nbsp;up&nbsp;address&nbsp;to&nbsp;be&nbsp;555h&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;XBYTE[0x0555]&nbsp;=0xF0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;write&nbsp;data&nbsp;0xF0&nbsp;to&nbsp;the&nbsp;address&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;wait(61,74);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*delay&nbsp;10ms*/<br />&nbsp;&nbsp;&nbsp;&nbsp;return(ReturnStatus);<br /><br />}<br />int&nbsp;Erase_One_Sector(uint&nbsp;Dst)<br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;&nbsp;Issue&nbsp;the&nbsp;Sector&nbsp;Erase&nbsp;command&nbsp;to&nbsp;39SF040&nbsp;&nbsp;&nbsp;*/<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XBYTE[0x0555]&nbsp;=&nbsp;0xAA;&nbsp;/*&nbsp;set&nbsp;up&nbsp;address&nbsp;to&nbsp;be&nbsp;555h&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;write&nbsp;data&nbsp;0xAA&nbsp;to&nbsp;the&nbsp;address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XBYTE[0x02AA]&nbsp;=&nbsp;0x55;&nbsp;/*&nbsp;set&nbsp;up&nbsp;address&nbsp;to&nbsp;be&nbsp;2AAh&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;write&nbsp;data&nbsp;0x55&nbsp;to&nbsp;the&nbsp;address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XBYTE[0x0555]&nbsp;=&nbsp;0x80;&nbsp;/*&nbsp;set&nbsp;up&nbsp;address&nbsp;to&nbsp;be&nbsp;555h&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;write&nbsp;data&nbsp;0x80&nbsp;to&nbsp;the&nbsp;address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XBYTE[0x0555]&nbsp;=&nbsp;0xAA;&nbsp;/*&nbsp;set&nbsp;up&nbsp;address&nbsp;to&nbsp;be&nbsp;555h&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;write&nbsp;data&nbsp;0xAA&nbsp;to&nbsp;the&nbsp;address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XBYTE[0x02AA]&nbsp;=&nbsp;0x55;&nbsp;/*&nbsp;set&nbsp;up&nbsp;address&nbsp;to&nbsp;be&nbsp;2AAh&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;write&nbsp;data&nbsp;0x55&nbsp;to&nbsp;the&nbsp;address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XBYTE[Dst]&nbsp;&nbsp;&nbsp;=&nbsp;0x20;&nbsp;/*&nbsp;set&nbsp;up&nbsp;starting&nbsp;address&nbsp;to&nbsp;be&nbsp;erased&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;write&nbsp;data&nbsp;0x30&nbsp;to&nbsp;the&nbsp;address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wait(85,134);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;check&nbsp;DATABOOK&nbsp;for&nbsp;the&nbsp;most&nbsp;&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;accurate&nbsp;value&nbsp;--&nbsp;Tse&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*/<br />}<br />uchar&nbsp;ByteRead(uint&nbsp;addr)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;GetData;<br />&nbsp;&nbsp;&nbsp;&nbsp;GetData&nbsp;=&nbsp;XBYTE[addr];<br />&nbsp;&nbsp;&nbsp;&nbsp;return(GetData);<br />}<br />void&nbsp;&nbsp;wait(uchar&nbsp;p,uchar&nbsp;q)<br />{<br />&nbsp;&nbsp;&nbsp;uchar&nbsp;&nbsp;i,j;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//(2*j+3)*i+4<br />&nbsp;&nbsp;&nbsp;for&nbsp;(i=p;i&gt0;i--)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(j=q;j&gt0;j--);<br />}<br /><br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

175

主题

446

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部