微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机EEPROM(E2PROM)测试程序

51单片机EEPROM(E2PROM)测试程序

时间:11-19 来源:互联网 点击:
4 using 1 //using 1:使用第一组寄存器//(对于同级中断,用同样的寄存器组,因为不会中断嵌套,就不会出问题;//对于不同级别的中断,一定不能使用同组寄存器,嵌套可能改变寄存器的值,引起错误){if(RI) //串口每接收完1帧,硬件置1 RI,请求中断。{ //(其实就是请求把RI置0并且取走数据,不然还能干什么呢?//当然你可以加入自己想要的功能在里面)global_c = SBUF;SBUF = global_c;RI = 0; }else TI = 0; }void Uart2_Int() interrupt 8 using 1{if(S2CON&S2RI){S2CON &= 0XFE;global_d = S2BUF;SBUF = global_d; }else S2CON &= 0XFD;}void IapIdle(){IAP_CONTR &= 0X7F; //DISABLE IAP FUNCTIONIAP_CMD = 0;IAP_TRIG = 0; //CLEAR TRIG REGESTERIAP_ADDRH = 0X2000;IAP_ADDRL = 0;}BYTE IapReadByte(WORD addr){BYTE dat;IAP_CONTR = ENABLE_IAP; //使能IAP功能IAP_CMD = CMD_READ; //说明是读还是写还是擦除IAP_ADDRL = addr; //给定要操作的扇区地址IAP_ADDRH = addr>>8;IAP_TRIG = 0X5A; //IAP触发开关 先送5A后送A5才能触发,IAP命令才能生效 每次读写都要重新送值IAP_TRIG = 0XA5;_nop_(); //延时,等待读取dat = IAP_DATA; //将读取的数据赋值给datIapIdle(); //将IAP功能设置成空闲return dat;}void IapProgramByte(WORD addr, BYTE dat){IAP_CONTR = ENABLE_IAP;IAP_CMD = CMD_PROGRAM;IAP_ADDRL = addr;IAP_ADDRH = addr>>8;IAP_DATA = dat;IAP_TRIG = 0X5A;IAP_TRIG = 0XA5;_nop_();IapIdle();}void IapEraseSector(WORD addr){IAP_CONTR = ENABLE_IAP;IAP_CMD = CMD_ERASE;IAP_ADDRL = addr;IAP_ADDRH = addr>>8;IAP_TRIG = 0X5A;IAP_TRIG = 0XA5;_nop_();IapIdle();}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top