62256-32K字节.地址A0 – 14
硬件连接如下图
KEIL中可以直接定义,指明xdata
UCHAR xdata Cache_SRam[3000] = {0x00}; //缓存,预留3K字节
调用此数组的时候系统会自动进行地址分配P36,P37脚也会自动产生相应的读写控制信号,因此只要在定义的时候指明XDATA,后面使用就和使用普通DATA区的内存一样使用. 经测试KEIL会默认从0X0000开始分配地址. 如下:
UCHAR xdata Cache_SRam[3000] = {0x00}; //缓存,预留3K字节 UCHAR xdata *SRAM_ADD1 = 0X00; //指定0X00地址 …
Cache_SRam[0] = 0X77;
send_char_com( Cache_SRam[0] ); //数据低位 send_char_com( *SRAM_ADD1 ); //数据高位 串口调试助手,接收到的 Cache_SRam[0 ]与 *SRAM_ADD1 数据一致. 如下图:
//● int型数值赋给char型变量时,只保留其最低8位,高位部分舍弃。
再测试如下代码:
/****************/
UCHAR xdata Cache_SRam[3000] = {0x00}; //缓存,预留3K字节 UCHAR xdata *SRAM_ADD1 = 0X00;
UCHAR xdata SRAM_DATA2 = 0X66; UCHAR xdata SRAM_DATA3 = 0X66; UCHAR xdata SRAM_DATA4 = 0X66; UCHAR xdata SRAM_DATA5 = 0X66; UCHAR xdata SRAM_DATA6 = 0X66;
/****************/
send_char_com( Cache_SRam[0] ); //Cache_SRam数组的第一个数据 send_char_com( *SRAM_ADD1 ); //SRAM_ADD1指针地址所指向的数据 send_char_com( SRAM_DATA2 ); //变量SRAM_DATA2的值
send_char_com( Cache_SRam ); //Cache_SRam数组的首地址 send_char_com( Cache_SRam + 2999 ); //Cache_SRam数组的尾地址 send_char_com( SRAM_ADD1 ); //指针SRAM_ADD1的值,即地址 send_char_com( &SRAM_DATA2 ); //SRAM_DATA2的地址 send_char_com( &SRAM_DATA3 ); //SRAM_DATA3的地址 send_char_com( &SRAM_DATA6 ); //SRAM_DATA6的地址
send_char_com(0xee); //for TEST send_char_com(0xee); send_char_com(0xee);
测试结果如下:
表明KEIL会自动分配XDATA区域的内存地址,有规律的递增.
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务