完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 geililai 于 2015-6-10 20:22 编辑
#include #include #include #include #define uchar unsigned char #define uint unsigned int /*flash引脚*/ ***it CPU_LE1=P4^1;//定义锁存器使能 ***it CPU_LE2=P4^5; ***it CPU_LE3=P4^4; ***it uP_RDn=P3^4; ***it up_BLWEn_BLEn=P3^5; uint first; uchar idata buf4[1]; //存储所读取数据 /*1. Load Data AA (hex) into Address 05555 (hex) 2. Load Data 55 into Address 02AAA 3. Load Data A0 into Address 05555 4. Load desired sector with data 5. Pause tWC (device write cycle time) 6. Continue with next operation.*/ void init(void) { TMOD=0x20; TH1=0xfd; TL1=0xfd; PCON=0x00; TR1=1; SCON=0xd0; } void send(uchar addr) { TB8=1; SBUF=addr; while(TI==0) { ; } TI=0; } /************延时程序************/ void delay(uchar k) { uchar j; while((k--)!=0) { for(j=0;j<125;j++) {;} } } void delay1(unsigned int l_time) { unsigned int data lp; for(lp=0;lp } //数据保护模块 void protect() { uP_RDn=1; up_BLWEn_BLEn=1; CPU_LE1=1; P2=0x55; CPU_LE1=0; CPU_LE2=1; P2=0x55; CPU_LE2=0; CPU_LE3=1; P2=0x00; CPU_LE3=0; up_BLWEn_BLEn=0; P2=0xaa; up_BLWEn_BLEn=1; CPU_LE1=1; P2=0xaa; CPU_LE1=0; CPU_LE2=1; P2=0x2a; CPU_LE2=0; CPU_LE3=1; P2=0x00; CPU_LE3=0; up_BLWEn_BLEn=0; P2=0x55; up_BLWEn_BLEn=1; CPU_LE1=1; P2=0x55; CPU_LE1=0; CPU_LE2=1; P2=0x55; CPU_LE2=0; CPU_LE3=1; P2=0x00; CPU_LE3=0; up_BLWEn_BLEn=0; P2=0xa0; up_BLWEn_BLEn=1; } //块选择 bit SectorChoose(uint suba) { suba=suba/256; CPU_LE2=1; P2=suba&0xff; CPU_LE2=0; suba=suba/256; CPU_LE3=1; P2=suba&0xff; CPU_LE3=0; return 0; } //后续数据写入 bit WriteData(uint addr,uint s) { addr=addr&0xff; CPU_LE1=1; P2=addr; CPU_LE1=0; up_BLWEn_BLEn=0; P2=s; up_BLWEn_BLEn=1; return 0; } //读出数据,暂时不知道是否需要连续读出。 bit ReadData(uint suba) { CPU_LE1=1; P2=suba&0xff; CPU_LE1=0; suba=suba/256; CPU_LE2=1; P2=suba&0xff; CPU_LE2=0; suba=suba/256; CPU_LE3=1; P2=suba&0xff; CPU_LE3=0; uP_RDn=0; delay1(1); buf4[0]=P2; //这里可能有问题 uP_RDn=1; return 0; } void main() { int i; uint addr=0x00200; first=0x04; init(); P4M1=0x00; //P4.4,P4.5作为IO口 P4M0=0x72; P4SW=0x70; uP_RDn=1; //读使能关闭 up_BLWEn_BLEn=1; delay1(200); protect(); SectorChoose(addr); for(i=0;i<255;i++) { WriteData(addr,first); addr++; } up_BLWEn_BLEn=0; delay1(1000); while(1) { buf4[0]=0x04; send(buf4[0]); delay(200); ReadData(0x00200); send(buf4[0]); delay(200); ReadData(0x00222); send(buf4[0]); delay(200); ReadData(0x002ff); send(buf4[0]); delay(200); } } 原理图如下
|
|
相关推荐
1个回答
|
|
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32配合可编程加密芯片SMEC88ST的防抄板加密方案设计
657 浏览 0 评论
2334 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
2137 浏览 3 评论
4767 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2282 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-30 03:48 , Processed in 0.723171 second(s), Total 72, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号