把相关的原程序写一下:<br />最后串口发出的数据为512个FF.<br /> int main (void)<br />{ <br /> PINSEL0|=UART0_TxD|UART0_RxD; // 设置I/O连接到UART0 ;串口相关<br /> TIME_DELAY(100);<br /> UART0_Ini();<br /> IO_INT();<br /> FLASH_TEST();<br /> return 0;<br />}<br /><br />/********************************************************************************************************<br /> IO_INT<br />********************************************************************************************************/<br />void IO_INT(void)<br />{<br /> IO1DIR&=~FLASH_RB; //RB--OUT;<br /> IO1DIR|=FLASH_RE; //RE--IN;<br /> IO2DIR&=~AD0|AD1|AD2|AD3|AD4|AD5|AD6|AD7; //地址和数据线---OUT;<br /> IO3DIR|=(FLASH_ALE|FLASH_CE|FLASH_CLE|FLASH_WE); //ALE,CE,CLE,WE--OUT;<br />}<br />/********************************************************************************************************<br /> FLASH_W_COMMAND<br />********************************************************************************************************/<br />void FLASH_W_COMMAND(unsigned char command)<br />{<br /> IO2PIN|=command&0X0FF;<br /> SET_CLE; //cle=1;<br /> TIME_DELAY(1);<br /> CLR_WE; //we=0;<br /> TIME_DELAY(1);<br /> SET_WE; //we=1;<br /> TIME_DELAY(1);<br /> CLR_CLE; //cle=0;<br /> <br />}<br />/********************************************************************************************************<br /> FLASH_W_ADDRESS<br />********************************************************************************************************/<br />void FLASH_W_ADDRESS(unsigned char address)<br />{<br /> IO2PIN|=address&0X0FF;<br /> TIME_DELAY(1);<br /> CLR_WE;<br /> TIME_DELAY(1);<br /> SET_WE;<br /> TIME_DELAY(1);<br /> CLR_ALE;<br /> <br />}<br />/********************************************************************************************************<br /> FLASH_W_DATA<br />********************************************************************************************************/<br />void FLASH_W_DATA(unsigned char data)<br />{<br /> IO2PIN|=data&0X0FF;<br /> TIME_DELAY(1);<br /> CLR_WE;<br /> TIME_DELAY(1);<br /> SET_WE;<br /> <br />}<br />/********************************************************************************************************<br /> FLASH_R_DATA<br />********************************************************************************************************/<br />unsigned char FLASH_R_DATA(void)<br />{<br /> unsigned int num;<br /> CLR_RE;<br /> TIME_DELAY(1);<br /> num=IO2PIN&0X0FF;<br /> SET_RE;<br /> return(num);<br /> <br />}<br />/********************************************************************************************************<br /> FLASH_ERASE_BLOCK<br />********************************************************************************************************/<br />unsigned char FLASH_ERASE_BLOCK(unsigned int blocknum)<br />{<br /> unsigned char status;<br /> FLASH_W_COMMAND(0X60); //发送擦除命令;<br /> FLASH_W_ADDRESS((unsigned char)((blocknum<<5)&0XFF));<br /> FLASH_W_ADDRESS((unsigned char)((blocknum>>3)&0XFF));<br /> FLASH_W_COMMAND(0XD0); //启动擦除;<br /> TIME_DELAY(100);<br /> FLASH_W_COMMAND(0X70); //启动擦除;<br /> status=FLASH_R_DATA(); //读状态;<br /> if (status&0X01) //判断编程是否结束;<br /> {<br /> return(0);<br /> }<br /> else<br /> {<br /> return(1);<br /> }<br />}<br /><br />/********************************************************************************************************<br /> FLASH_R_PAGE<br />********************************************************************************************************/<br />void FLASH_R_PAGE(unsigned int blocknum,unsigned int blockpagenum,unsigned char *P,unsigned int data_length)<br />{<br /> unsigned int i;<br /> unsigned int pagenum;<br /> pagenum=blocknum<<5+blockpagenum;<br /> FLASH_W_COMMAND(0X00);<br /> FLASH_W_ADDRESS(0X00);<br /> FLASH_W_ADDRESS((unsigned char)(pagenum&0XFF));<br /> FLASH_W_ADDRESS((unsigned char)((pagenum>>8)&0XFF));<br /> FLASH_W_ADDRESS((unsigned char)((pagenum>>16)&0XFF));<br /> for(i=0;i<data_length;i++)<br /> {<br /> *(P+i)=FLASH_R_DATA();<br /> }<br />}<br />/********************************************************************************************************<br /> FLASH_W_PAGE<br />********************************************************************************************************/<br />unsigned char FLASH_W_PAGE(unsigned int blocknum,unsigned int blockpagenum,unsigned char *P,unsigned int data_length)<br />{<br /> unsigned int i;<br /> unsigned char status;<br /> unsigned int pagenum;<br /> pagenum=blocknum<<5+blockpagenum;<br /> FLASH_W_COMMAND(0X00);<br /> FLASH_W_COMMAND(0X80);<br /> FLASH_W_ADDRESS(0X00);<br /> FLASH_W_ADDRESS((unsigned char)(pagenum&0XFF));<br /> FLASH_W_ADDRESS((unsigned char)((pagenum>>8)&0XFF));<br /> FLASH_W_ADDRESS((unsigned char)((pagenum>>16)&0XFF));<br /> for(i=0;i<data_length;i++)<br /> {<br /> FLASH_W_COMMAND(*(P+i));<br /> }<br /> FLASH_W_COMMAND(0X10);<br /> TIME_DELAY(100);<br /> FLASH_W_COMMAND(0X70);<br /> status=FLASH_R_DATA();<br /> if (status&0X01) //判断编程是否结束;<br /> {<br /> return(0);<br /> }<br /> else<br /> {<br /> return(1);<br /> }<br />}<br />/********************************************************************************************************<br /> TIME_DELAY<br />********************************************************************************************************/<br />void TIME_DELAY(unsigned int time)<br />{<br /> unsigned int i;<br /> for (i=0;i<time;i++)<br /> {<br /> for (i=0;i<100;i++); <br /> }<br />}<br />/********************************************************************************************************<br /> FLASH_TEST<br />********************************************************************************************************/<br />void FLASH_TEST(void)<br />{ <br /> unsigned int i;<br /> FLASH_ERASE_BLOCK(7);<br /> for(i=0;i<512;i++)<br /> {<br /> TEST1=i;<br /> }<br /> FLASH_W_PAGE(7,1,TEST1,512);<br /> for(i=0;i<512;i++)<br /> {<br /> TEST2=0;<br /> }<br /> FLASH_R_PAGE(7,1,TEST2,512);<br /> for(i=0;i<512;i++)<br /> {<br /> UART0_SendByte(TEST2); //串口发数据;<br /> }<br />}<br />/*********************************************************************************************************<br />** End Of File<br />**********************************************************************************************************/<br />
|