- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
STC系列单片机EEPROM程序设计.doc
#includereg52.h
#includeabsacc.h
#includeintrins.h
#define uchar unsigned char
#define uint unsigned int
//--------------------
#define DataPort P0 //LCD数据口DB0--DB7
sbit RS=P2^4;
sbit RW=P2^5;
sbit EN=P2^6;
uint count; //定义计数、整型
//-------------------------
sbit cs=P1^0; //测试用
sbit start_stop=P3^0;//启动、停止复合键
sbit clear=P3^1; //显示清零键
sbit moto=P2^0; //马达控制
sbit warning=P2^3; //计数满
//----------------------------
uchar code tab0[]={model:xy900};
uchar code tab1[]={model:xy900};
uchar code tab2[]={model:xy900};
uchar code tab3[]={model:xy900};
uchar code tab4[]={model:xy900};
uchar code tab5[]={model:xy900};
//--------------------定义操作命令-----------
#define RdCommand 0x01 //定义ISP操作
#define PrgCommand 0x02
#define EraseCommand 0x03
#define Error 1
#define OK 0
#define WaitTime 0x01 //定义CPU等待时间
sfr ISP_DATA=0xe2; //寄存器声明
sfr ISP_ADDRH=0xe3;
sfr ISP_ADDRL=0xe4;
sfr ISP_Order=0xe5;
sfr ISP_TRIG=0xe6;
sfr ISP_CONTR=0xe7;
//---------------打开ISP,IAP功能---------
void ISP_IAP_enable(void)
{
EA=0;
ISP_CONTR=ISP_CONTR0x18; //ISP_COUNT的B4,B3位
ISP_CONTR=ISP_CONTR|WaitTime;
ISP_CONTR=ISP_CONTR|0x80; //ISPEN=1
}
//-------------关闭ISP,IAP功能-----------
void ISP_IAP_disable(void)
{
ISP_CONTR=ISP_CONTR0x7f; //ISPEN=0
ISP_TRIG=0x00;
EA=1; //开中断
}
//--------------公共触发代码---------
void ISPgoon(void)
{
ISP_IAP_enable(); //打开ISP,IAP功能
ISP_TRIG=0x46; //触发ISP_IAP命令字节1
ISP_TRIG=0xb9; //触发ISP_IAP命令字节2
_nop_();
}
//------------字节读--------------
unsigned char byte_read(uint byte_addr)
{
ISP_ADDRH=(uchar)(byte_addr8); //地址赋值
ISP_ADDRL=(uchar)(byte_addr0x00ff);
ISP_Order=ISP_Order0xf8; //清除低三位
ISP_Order=ISP_Order|RdCommand; //写入命令
ISPgoon(); //触发执行
ISP_IAP_disable(); //关闭ISP,IAP功能
return(ISP_DATA); //返回读到的数据
}
//-------------EEPROM操作-------------
/*************扇区擦除****************/
void SectorErase(uint sector_addr)
{
uint iSectorAddr;
iSectorAddr=(sector_addr0xfe00); //取扇区地址
ISP_ADDRH=(uchar)(iSectorAddr8);
ISP_ADDRL=0x00;
ISP_Order=ISP_Order0xf8
文档评论(0)