10-4-22 单片机- 好好学习,天天向上- jamsan - 和讯博客
10-4-22 单片机 [原创 2010-04-22 20:33:38]   

   今天收拾控制盒,还算顺利。板子上有一个排阻,没怎么焊好,让别人帮焊了下就好了。

   STC11L16XE功能挺强,没想到还有32K的EEPROM,相当于一片24C32了,而且速度也很快,正好可以作为开关机及其它设定的掉电存储。编了个简单的测试程序,运行没问题。

  在单片机程序里加上了每5分钟检测一次是否自动开关机,结果发现编绎出错,提示空间不够。查了下,原来在Keil C51的编绎优化设置里设为了1,导致所有变量顺序编址都是data型,堆栈空间都没有了。改为4后,编绎通过,但感觉堆栈空间还是有点小。而且代码达到了8K,要是89c52都要放不下了。精简了strcmp()函数后,本想再精简下printf函数。但HEX转BCD不用汇编效率太低,也没搞定。而且Keil生成的prinf共860个字节,相比另外两个自己字的函数也不算太大,决定放弃了,等有时间了再研究。

附eprom测试,测试第1个和{zh1}1个扇区.

void eprom_test()
{
 xdata unsigned char xram=0;
 INT16U i;
 printf("eprom test\n");
 //共32K Eprom
 eprom_Sector_Erase(0); //扇区0
 for(i=0;i<512;i++)
 {
  eprom_Byte_Program(i,i%64);
 }
 eprom_Sector_Erase(32*1024-256); //{zh1}一Sector
 for(i=(32*1024-512);i<(32*1024);i++)
 {
  eprom_Byte_Program(i,i%128);
 }
 printf("\nEprom Sector 0:\n");
 for(i=0;i<512;i++)
 {
  unsigned char ep_data;
  ep_data=eprom_Byte_Read(i);
  printf("0x%x\t",ep_data);
 }
 printf("\nEprom Sector 63:\n");
 for(i=(32*1024-512);i<(32*1024);i++)
 {
  unsigned char ep_data;
  ep_data=eprom_Byte_Read(i);
  printf("0x%x\t",ep_data);  
 }
}

郑重声明:资讯 【10-4-22 单片机- 好好学习,天天向上- jamsan - 和讯博客】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——