首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

51单片机扩展RAM读写子程序

51单片机扩展RAM读写子程序

  下面的程序在11.0592MHz的STC89C52做过测试,C代码也很简单:

  #Include

  #Define Uchar Unsigned Char

  #Define Uint Unsigned Int

  Uchar Xdata LD _at_ 0x7fff;

  Void Delay(Uint Cnt)

  {

  Uint I;

  For(I=0;I

  }

  Void Main(Void)

  {

  Uchar I;

  Delay(1000);

  While(1)

  {

  LD = 0x00;

  LD = 0xf0;

  LD = 0x73;

  // I = LD;

  Delay(1000);

  LD = 0xff;

  Delay(1000);

  }

  }

  LD就是扩展的外部RAM变量,地址是0x7fff,也就是说P2的最高位就是CS信号。示波器测试了P0口任意一个数据的变化、CS的变化、WRRD信号的变化。大体整理了一下,波形基本如下:  




  另外,除了第一次LD读操作需要5个指令周期外(1.085us*5),以后每次LD读操作都只要3个指令周期(1.085*3)。这也是从汇编的代码里仿真后得出来的结论。而从上图也可以知道CS有效时间其实是一个指令周期(1.085us)。平均3个指令周期完成一次数据传输(所谓的RAM方式读写数据),这应该是单片机和外部通信的最快速度了。
返回列表