欢迎来到天天文库
浏览记录
ID:20442042
大小:39.00 KB
页数:6页
时间:2018-10-12
《给初学者,stc12xx单片机内部eeprom例程解释》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、STC12C5A的eeprom只能按扇区擦除并且只有擦过的才能写数据,很麻烦但是存储一些较大的数组还是很有用的。这是一个示例程序,但是其中使用的部分语句对新手们来说并不常见,我试着解释一下,其中不常见的语句也可以替换,除倾斜字体部分,其余均来自网络。下一篇放上替换过的程序。/*---STCInternationalLimited----------------一个完整的EEPROM测试程序,用宏晶的下载板可以直接测试STC12C5AxxAD系列单片机EEPROM/IAP功能测试程序演示STC12C52xxAD系列单片机EEPROM/IAP功能测试程序演示STC11xx系列单
2、片机EEPROM/IAP功能测试程序演示STC10xx系列单片机EEPROM/IAP功能测试程序演示---STCInternationalLimited---------------------宏晶科技设计2009/1/12V1.0-----------------Mobile:13922805190---------------------------Fax:0755-82944243----------------------------Tel:0755-82948412----------------------------Web:www.MCU-Memory.com
3、--------------------本演示程序在STC-ISPVer3.0A.PCB的下载编程工具上测试通过,EEPROM的数据在P1口上显示,如果要在程序中使用或在文章中引用该程序,请在程序中或文章中注明使用了宏晶科技的资料及程序*/#include#includetypedefunsignedcharINT8U;//替换为#defineucharunsignedchartypedefunsignedint INT16U;//替换为#defineuintunsignedintsfrIAP_DATA =0xC2;sfrIAP
4、_ADDRH =0xC3;sfrIAP_ADDRL =0xC4;sfrIAP_CMD =0xC5;sfrIAP_TRIG =0xC6;sfrIAP_CONTR =0xC7;//使用内部EEPROM时需要用到的寄存器,宏晶的头文件也有定义//定义Flash操作等待时间及允许IAP/ISP/EEPROM操作的常数//#defineENABLE_ISP0x80//系统工作时钟<30MHz时,对IAP_CONTR寄存器设置此值//#defineENABLE_ISP0x81//系统工作时钟<24MHz时,对IAP_CONTR寄存器设置此值#defineENABLE_I
5、SP0x82//系统工作时钟<20MHz时,对IAP_CONTR寄存器设置此值//我用的11.0592晶振,按照<20MHz设置,没问题//#defineENABLE_ISP0x83//系统工作时钟<12MHz时,对IAP_CONTR寄存器设置此值//#defineENABLE_ISP0x84//系统工作时钟<6MHz时,对IAP_CONTR寄存器设置此值//#defineENABLE_ISP0x85//系统工作时钟<3MHz时,对IAP_CONTR寄存器设置此值//#defineENABLE_ISP0x86//系统工作时钟<2MHz时,对IAP_CONTR寄存器设置此值/
6、/#defineENABLE_ISP0x87//系统工作时钟<1MHz时,对IAP_CONTR寄存器设置此值#defineDEBUG_DATA0x5A//本测试程序最终存储在EEPROM单元的数值#defineDATA_FLASH_START_ADDRESS0x00//STC5Axx系列EEPROM测试起始地址unionunion_temp16{ INT16Uun_temp16; INT8Uun_temp8[2];}my_unTemp16;//为了分离出EEPROM16位地址的高位和低位,用除法和求余运算也能实现这个目的/*union共用体名{ 数据类型成员名;
7、 数据类型成员名; ... }变量名;//公用体,百度一下,你就知道。*/INT8UByte_Read(INT16Uadd); //读一字节,调用前需打开IAP功能voidByte_Program(INT16Uadd,INT8Uch);//字节编程,调用前需打开IAP功能voidSector_Erase(INT16Uadd); //擦除扇区voidIAP_Disable(); //关闭IAP功能voidDelay();//函数
此文档下载收益归作者所有