EEPROM多个数据读写

2019-06-11 14:50

#include #include

typedef unsigned char uchar; typedef unsigned int uint; typedef unsigned long ulong;

#define led_port P0 sbit dm=P2^3; sbit wm=P2^2; ulong a,v; //uchar a;

uchar temp1,temp2,temp3,temp4;

uchar code dxian[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码显示区0——9 uchar code wxian[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //选通哪位数码管控制位 uchar bcd[8]; void delay(uint t); void bin_bcd(); void smxs();

//掉电保持寄存器申明 sfr IAP_DATA=0xe2; sfr IAP_ADDRH=0xe3;

//数码管控制芯片段码控制位 //数码管控制芯片位码控制位

//数码管bcd码缓冲区 //延时函数声明

//bcd分离函数

//数码管显示函数

sfr IAP_ADDRL=0xe4; sfr IAP_CMD=0xe5; sfr IAP_TRIG=0xe6; sfr IAP_CONTR=0xe7;

#define CMD_IDLE

0

#define CMD_READ 1 #define CMD_PROGRAM #define CMD_ERASE 3

//定义Flash操作等待时间及允许IAP/ISP/EEPROM操作的常数 //#define ENABLE_IAP 0x82 #define ENABLE_IAP 0x83

//系统工作时钟<20MHZ

2

//系统工作时钟<40MHZ

#define IAP_ADDRESS 0x2000

void cc(uint addr);// 擦除某一扇区 void xcx(uint addr,uchar dat);// 写一字节 uchar dcx(uint addr);// 读一字节 void GB_IAP();//关闭IAP/IAP操作

void delay(uint t) { }

void smxs() {

while(--t);

}

uchar i;

for(i=0;i<8;i++) { }

led_port=0; dm=1; dm=0;

led_port=wxian[i]; wm=1; wm=0;

led_port=dxian[bcd[i]]; if(i==5)

led_port=led_port | 0x80; dm=1; dm=0;

delay(300);

void bin_bcd() {

bcd[0]=a/10000000; bcd[1]=a/1000000; bcd[2]=a/100000;

bcd[3]=(a0000)/10000; bcd[4]=(a000)/1000; bcd[5]=(a00)/100;

}

bcd[6]=(a0)/10; bcd[7]=(a0);

void xs32_8() { }

void xs8_32() {

a =

((ulong)(temp1)<<24)|((ulong)(temp2)<<16)|((ulong)(temp3)<<8)|temp4; }

/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ 函数:主程序

┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/ void main(void) {

uchar num;

temp1=(a>>24)&0xff; temp2=(a>>16)&0xff; temp3=(a>>8)&0xff; temp4=a&0xff;

/*测试Long型转char型是否正确成功*这里如果要验证请把void xs8_32()中的改成v然后调试哈就可以看出来/

/**********************************

a=99999999; xs32_8(); xs8_32();

*********************************/

/******测试存贮多个数据成功**********/

/*************************************************

cc(IAP_ADDRESS);

// 擦除第1个扇区(2000h~21FFh)

temp1++; temp2++; temp3++; temp4++;

a=temp1+temp2+temp3+temp4; temp1=dcx(IAP_ADDRESS); temp2=dcx(IAP_ADDRESS+1); temp3=dcx(IAP_ADDRESS+2); temp4=dcx(IAP_ADDRESS+3);

xcx(IAP_ADDRESS,temp1); xcx(IAP_ADDRESS+1,temp2); xcx(IAP_ADDRESS+2,temp3); xcx(IAP_ADDRESS+3,temp4);

// 对EEPROM区2002h写入

**************************************************/

temp1=dcx(IAP_ADDRESS); temp2=dcx(IAP_ADDRESS+1); temp3=dcx(IAP_ADDRESS+2); temp4=dcx(IAP_ADDRESS+3); num=dcx(IAP_ADDRESS+4);


EEPROM多个数据读写.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:会议室管理细则

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: