可是我搞了2天没有搞出个读写程序来,感觉很简单,不知道哪里有问题,你是否有程序啊。或者请各位给个提示,看看这个程序有什么错误?<br />unsigned char read_status_register(void)<br />{<br /> unsigned char i;<br /> <br /><br /> AT45DB161_CS=0;<br /><br /> input_8bit(OPCOM_READ_STATUS_REGISTER);<br /> <br /> for(i=0;i<8;i++)<br /> {<br /> AT45DB161_SO=1; //first setup the output pin <br /> AT45DB161_SCK=0; //falling eage to read<br /> rdata=rdata<<1;<br /> BIT0=AT45DB161_SO;<br /> AT45DB161_SCK=1;<br /> }<br /><br /> AT45DB161_CS=1;<br /> <br /> return(rdata);<br />}<br /><br /><br /><br /><br /><br /><br />unsigned char read_flash(unsigned char opcom,unsigned int page_address,unsigned int in_page_address)<br />{<br /> unsigned char i;<br /> unsigned char address_byte_1,address_byte_2,address_byte_3;<br /> unsigned int address;<br /><br /><br /> address=(page_address<<2)|(in_page_address>>8); //combine 14 bits of page address and highest 2 bits of inner page address <br /> address_byte_1=address>>8;<br /> address_byte_2=address;<br /> address_byte_3=in_page_address;<br /><br /> while(!(read_status_register()&0x80));<br /> AT45DB161_CS=0;<br /><br /> input_8bit(opcom);<br /> input_8bit(address_byte_1);<br /> input_8bit(address_byte_2);<br /> input_8bit(address_byte_3);<br /> input_8bit(0x00);//dump byte<br /> <br /> for(i=0;i<8;i++)<br /> {<br /> AT45DB161_SO=1; //first setup the output pin <br /> AT45DB161_SCK=0; //falling eage to read<br /> rdata=rdata<<1;<br /> BIT0=AT45DB161_SO;<br /> AT45DB161_SCK=1;<br /> }<br /><br /> AT45DB161_CS=1;<br /> <br /> return(rdata);<br />}<br /><br /><br /><br /> <br /><br /><br />void write_flash(unsigned char opcom,unsigned int page_address,unsigned int in_page_address,unsigned char wdata)<br />{<br /> unsigned char address_byte_1,address_byte_2,address_byte_3;<br /> unsigned int address;<br /> <br /> address=(page_address<<2)|(in_page_address>>8); //combine 14 bits of page address and highest 2 bits of inner page address <br /> address_byte_1=address>>8;<br /> address_byte_2=address;<br /> address_byte_3=in_page_address;<br /><br /> while(!(read_status_register()&0x80));<br /> AT45DB161_CS=0;<br /><br /> input_8bit(opcom);<br /> input_8bit(address_byte_1);<br /> input_8bit(address_byte_2);<br /> input_8bit(address_byte_3);<br /><br /> input_8bit(wdata);<br /><br /> while(!(read_status_register()&0x80));<br /><br /> AT45DB161_CS=1;<br />}<br /><br /><br /><br /><br /><br />
|