📄 iap.c
字号:
#include <reg52.h>
#include "TypeDefines.h"
#include "IAP.h"
#include <intrins.h>
extern void ErasEEEprom(uchar 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 = 0xff;
isp_addrl = 0xff;
EA = 1; /* 开中断 */
}
////一次最多256个,建议试用几个,要存入的数据松在指针指向的缓冲区
extern void WritEEEprom(uchar t_addr_h, uchar t_addr_l, uchar num, uchar *ptr)
{
uchar iic_num;
ErasEEEprom(t_addr_h);
for (iic_num=0; iic_num<num; iic_num++)
{
isp_data = *(ptr+iic_num);
isp_addrh = t_addr_h;
isp_addrl = iic_num+t_addr_l;
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 = 0xff;
isp_addrl = 0xff;
EA = 1; /* 开中断 */
}
}
////从EEprom的t_addr地址开始读出num个数据
////存入以tEmp[0]开始的存储单元
////一次最多256个,读数的数据存入指针指向的缓冲区
extern void REadEEprom(uchar s_addr_h, uchar s_addr_l, uchar num, uchar *ptr)
{
uchar iic_num;
for (iic_num=0; iic_num<num; iic_num++)
{
isp_addrh = s_addr_h;
isp_addrl = iic_num+s_addr_l;
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 = 0xff;
isp_addrl = 0xff;
EA = 1; /* 开中断 */
*(ptr+iic_num) = isp_data;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -