void sj(unsigned uchar aa)
{P0=aa;}
这个就是我要传输的数据,只要调用这个函数就完了吗,我感觉有问题啊 这个P0口的数据是怎么送出去的(我知道是通过WR和RD的时序送出去的),问题是怎么 *** 作WR和RD来触发一次时序呢?
---------
WR、RD,不是这样用的。
要想让 WR 或 RD 发挥作用,必须使用《片外 RAM》。
当你对《片外 RAM》进行读、写的时候,WR 和 RD 才会工作。
读写片外 RAM 的汇编语言如下:
读片外 RAM:MOVX A, @DPTR
写片外 RAM:MOVX @DPTR, A
读写片外 RAM 的C 语言如下:
mem_w(0xb700, i);
k = mem_r(0xbb00);
事先要定义这两个函数。
单片机执行上述的读、写指令时:
P0、P2 先输出 16 位的地址,ALE 输出正脉冲,令外接的 373 锁存低八位地址后,
RD 或 WR,就会输出低电平,令《片外 RAM》输出或接收数据。
最后,数据,将从 P0 口输入或输出。
另外,和 WR、RD,协同工作的,还有 ALE。
P0、P2,前面已经说了,也是要用到的。
P1,是用不上的。将数据保存到e2prom或falh里
将e2prom的数据读出来
再通过rs232通信传给PC就ok了
硬件方面单片机应该自带有e2prom,没有的话就外置一个e2prom
另外加一块电平转换芯片就行了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)