找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3124|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STC89c52內(nèi)部eeprom測試程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:73711 發(fā)表于 2015-7-24 16:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <STC89C5xRC.H>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
/******************定義命令字節(jié)******************/     
#define Read_COM                   0x01                    //字節(jié)讀數(shù)據(jù)命令   
#define Prog_COM            0x02                    //字節(jié)編程數(shù)據(jù)命令   
#define Erase_COM           0x03                    //扇區(qū)擦除數(shù)據(jù)命令   
#define En_Wait_TIME  0x81                                //設(shè)置等待時間 ,并使能ISP/IAP      
#define Start_ADDRH         0x20                    //扇區(qū)地址高位   
#define Start_ADDRL         0x00                    //扇區(qū)地址低位
/****************特殊功能寄存器聲明****************/
/*
sfr ISP_DATA = 0xe2;                                                                                           //數(shù)據(jù)寄存器
sfr ISP_ADDRH = 0xe3;                                                                                   //地址寄存器高位
sfr ISP_ADDRL = 0xe4;                       //地址寄存器低位
sfr ISP_CMD = 0xe5;                         //命令寄存器
sfr ISP_TRIG = 0xe6;                        //命令觸發(fā)寄存器
sfr ISP_CONTR = 0xe7;                       //命令寄存器
*/
/*****************關(guān)閉ISP&IAP功能*****************/   
void ISP_IAP_disable(void)   
{   
    ISP_CONTR = 0x00;   
    ISP_CMD = 0x00;   
    ISP_TRIG = 0x00;   
}   
/*********************字節(jié)讀**********************/     
uchar Byte_read(uint byte_addr)   
{   
    EA = 0;                                     //關(guān)中斷   
    ISP_CONTR = En_Wait_TIME;                   //開啟ISP&IAP,并送等待時間   
    ISP_CMD = Read_COM;                         //送字節(jié)讀命令字      
    ISP_ADDRH = (uchar)(byte_addr >> 8);        //送地址高字節(jié)   
    ISP_ADDRL = (uchar)(byte_addr & 0x00ff);    //送地址低字節(jié)        
    ISP_TRIG = 0x46;                            //送觸發(fā)命令字0x46   
    ISP_TRIG = 0xB9;                            //送觸發(fā)命令字0xB9   
    _nop_();   
    ISP_IAP_disable();                          //關(guān)閉ISP&IAP功能   
    EA = 1;                                     //開中斷   
    return (ISP_DATA);   
}     
/*********************字節(jié)編程*********************/   
void Byte_program(uint byte_addr,uchar isp_iap_data)   
{   
    EA = 0;                                     //關(guān)中斷   
    ISP_CONTR = En_Wait_TIME;                   //開啟ISP&IAP,并送等待時間   
    ISP_CMD = Prog_COM;                         //送字節(jié)編程命令字      
    ISP_ADDRH = (uchar)(byte_addr >> 8);        //送地址高字節(jié)   
    ISP_ADDRL = (uchar)(byte_addr & 0x00ff);    //送地址低字節(jié)        
    ISP_DATA = isp_iap_data;                    //送數(shù)據(jù)進ISP_DATA   
    ISP_TRIG = 0x46;                            //送觸發(fā)命令字0x46   
    ISP_TRIG = 0xB9;                            //送觸發(fā)命令字0xB9   
    _nop_();   
    ISP_IAP_disable();                          //關(guān)閉ISP&IAP功能   
    EA = 1;                                     //開中斷      
}   

/*********************扇區(qū)擦除*********************/   
void Sector_erase(uint sector_addr)   
{   
    EA = 0;                                     //關(guān)中斷   
    ISP_CONTR = En_Wait_TIME;                   //開啟ISP&IAP;并送等待時間   
    ISP_CMD = Erase_COM;                        //送扇區(qū)擦除命令字      
    ISP_ADDRH = (uchar)(sector_addr >> 8);      //送地址高字節(jié)   
    ISP_ADDRL = (uchar)(sector_addr & 0X00FF);  //送地址低字節(jié)        
    ISP_TRIG = 0X46;                            //送觸發(fā)命令字0x46  
    ISP_TRIG = 0XB9;                            //送觸發(fā)命令字0xB9   
    _nop_();   
    ISP_IAP_disable();                          //關(guān)閉ISP&IAP功能   
    EA = 1;   
}  
void main()   
{      
    Sector_erase(0x2000);                          //扇區(qū)擦除   
    Byte_program(0x2000,0x66);                     //寫EEPROM   
    _nop_();   
    _nop_();   
    _nop_();
    _nop_();   
    _nop_();   
    _nop_();  
    P1=Byte_read(0x2000);                        //讀EEPROM
    while(1);   
}
《注意頭文件》STC89C5xRC.H http://www.torrancerestoration.com/bbs/dpj-36974-1.html

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的積分獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表