访问对爱特梅尔89S8252从C语言的E2PROM的

B

bobcat1

Guest
访问对爱特梅尔89S8252从C语言的E2PROM的
在K书面*埃勒C编译器此示例ps的下载只有一个文件的第二增长了米斯泰克loadded

享受薄壁
很抱歉,您还没有登录查看此附件

 
其它功能:

/************************************************* ***************************/
/ * EEpromWrite(地址,值)* /
/************************************************* ***************************/
无符号字符EEpromWrite(无符号整型地址,无符号的int值)

无符号字符疏漏,LSB的,最高有效位;
无符号整型b_addr;

b_addr =地址* 2;

犯错=假;

如果(地址“0x03FF)错误=真; / *地址*的范围内/
其他的

TR0 = 0; / * TR0:停止计数器T0代* /
鄂= 0; / *禁用所有Interrups * /

WMCON | = EEMEN; / *使EEPROM的访问* /
WMCON | = EEMWE; / *使EEPROM的写入* /

LSB的价值%= 256; / *计算LSB的字节* /
XBYTE [b_addr] = LSB的; / *写LSB的字节* /
而(!(WMCON及特殊功能)); / *等待写入EEPROM的结束* /

最高位=价值/ 256; / *计算最高位字节* /
XBYTE [b_addr 1] =最高位; / *写的MSB字节* /
而(!(WMCON及特殊功能)); / *等待写入EEPROM的结束* /

如果(LSB的!= XBYTE [b_addr])错误=真; / *比较数据* /
如果(最高位!= XBYTE [b_addr 1])错误=真; / *比较数据* /

WMCON ^ = EEMWE; / *禁用的EEPROM写入* /
WMCON ^ = EEMEN; / *禁用EEPROM的访问* /

END_SAMP = 0; / * Seted在读* Nsamples /
sample_count = 0; / *清除样本计数器* /

鄂A = 1; / *全部启用Interrups * /
TR0 = 1; / * TR0:运行计数器T0代* /


返回(错误);


/************************************************* ***************************/
/ * EEpromRead(地址) -从Internaal读2字节的EEPROM * /
/ *输入:无符号整型地址-解决的第一个字节的读* /
/ *输出:无符号的int值-值=最高位* 256 LSB的; * /
/************************************************* ***************************/
无符号整型EEpromRead(无符号整型地址)

无符号整型b_addr,价值;

b_addr =地址* 2;

鄂= 0x00; / *禁用所有Interrups * /

WMCON | = EEMEN; / *使EEPROM的访问* /

值= XBYTE [b_addr 1];
价值*= 256;
价值 = XBYTE [b_addr];

WMCON ^ = EEMEN; / *禁用EEPROM的访问* /

鄂= 0x01; / *全部启用Interrups * /

返回值;


 
这些上传是有益的,感谢球员。

爱斯基摩人,我新的C,但should'nt EEpromWrite是一个unsigned int,如果你正在写16位?。

它也要求停止反0。如果一个RTOS是使用这个?。

 

Welcome to EDABoard.com

Sponsor

Back
Top