e2prom.txt

来自「eprom的使用,点阵显示汉字,C51编写的,还可以使用的」· 文本 代码 · 共 89 行

TXT
89
字号
/* 
*  
//文件名称:e2prom.c 
//eeprom的读写程序 
*/ 
//////////// 
#include <reg52.h>             ///52的库 
#include <intrins.h> 
///////////////////// 
sfr  isp_wdt     = 0xe1; 
sfr  isp_data    = 0xe2; 
sfr  isp_addrh   = 0xe3; 
sfr  isp_addrl   = 0xe4; 
sfr  isp_cmd     = 0xe5; 
sfr  isp_trig    = 0xe6; 
sfr  isp_contr   = 0xe7; 
///////// 
unsigned char iic_num; 
////写入到从t_addr地址开始 
/* 打开 ISP,IAP 功能 */ 
void EraseEeprom(unsigned char t_addr) 
{ 
    isp_addrh = t_addr; 
    isp_addrl = 0; 
    EA    =    0;            /* 关中断 */ 
    isp_contr = 0x81;       /* 1000,0000 */ 
    isp_cmd = 3; 
    isp_trig = 0x46; 
    isp_trig = 0xb9; 
    _nop_(); 
    _nop_(); 
    isp_contr = 0;    /* 0111,1111 */ 
    isp_cmd = 0; 
    isp_trig = 0; 
    isp_addrh = 0; 
    isp_addrl = 0; 
    EA = 1;                    /* 开中断 */ 
} 
////一次最多256个,建议试用几个,要存入的数据松在指针指向的缓冲区 
void WriteEeprom(unsigned char t_addr, unsigned char num, unsigned char xdata *ptr) 
{ 
    EraseEeprom(t_addr); 
    for (iic_num=0; iic_num<num; iic_num++) 
    { 
        isp_data = *(ptr+iic_num); 
        isp_addrh = t_addr; 
        isp_addrl = iic_num; 
        EA    =    0;                 /* 关中断 */ 
        isp_contr = 0x81;            /* 1000,0000 */ 
        isp_cmd = 2; 
        isp_trig = 0x46; 
        isp_trig = 0xb9; 
        _nop_(); 
        _nop_(); 
        isp_contr = 0;              /* 0111,1111 */ 
        isp_cmd = 0; 
        isp_trig = 0; 
        isp_addrh = 0; 
        isp_addrl = 0;         
        EA = 1;                    /* 开中断 */ 
    } 
} 
////从eeprom的t_addr地址开始读出num个数据 
////存入以temp[0]开始的存储单元 
////一次最多256个,读数的数据存入指针指向的缓冲区 
void ReadEeprom(unsigned char s_addr, unsigned char num, unsigned char xdata *ptr) 
{ 
    for (iic_num=0; iic_num<num; iic_num++) 
    { 
        isp_addrh = s_addr; 
        isp_addrl = iic_num; 
        EA    =    0;            /* 关中断 */ 
        isp_contr = 0x81;       /* 1000,0000 */ 
        isp_cmd = 1; 
        isp_trig = 0x46; 
        isp_trig = 0xb9; 
        _nop_(); 
        _nop_(); 
        isp_contr = 0;         /* 0111,1111 */ 
        isp_cmd = 0; 
        isp_trig = 0; 
        isp_addrh = 0; 
        isp_addrl = 0;         
        EA = 1;                            /* 开中断 */ 
        *(ptr+iic_num) = isp_data; 
    } 
} 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?