/*晶振11.0592M
此程序会向stc内部扩展ram写入4ff个0xAB,然后再读出来发送到串口
如果读的是FF,表示已经没有扩展ram空间了.
你只需要打开串口调试助手,勾选16进制显示把所有的ab复制出来统计
数量即可算出你的stc芯片支持多大的内部扩展ram
下载地址:
http://www.51hei.com/ziliao/file/串口调试助手.rar
小技巧:把所有的ab复制出来保存为文本文件然后点右键查看文件大小
再除以3便是我们要的结果
STC单片机的内部扩展RAM根据我的测试 从255 到 1024字节的芯片都有
*/
// *************************************
// *测试stc单片机内部扩展ram的大小 *
// * 2010.11.29 *
// *************************************
#include <at89x52.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int uchar i,n; uchar xdata remotedata[0x4ff]; uint k,dd,cc,head; uint remdata; uchar ch,huqin,head1,head2; void delay_ms(unsigned int ms) { unsigned int i; unsigned char j; for(i=0;i<ms;i++) { for(j=0;j<200;j++); for(j=0;j<102;j++); } } void init_serialcom( void ) { SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr PCON |= 0x00 ; //SMOD=1; TL1 = 0xFF ; TH1 = 0xFD ; //Baud:9600 fosc=11.0592MHz TR1 = 1 ; // timer 1 run TI=1; } //向串口发送一个字符 void send_char_com( unsigned char ch) { SBUF=ch; while (TI== 0); TI= 0 ; } //初始化函数 clearmen() { IE=0x00; IP=0x02; TMOD=0x22; PCON=0X00; TH0=0xf3; TL0=0xf3; IT0=1; EX0=1; EA=1; } //主函数 void main() { //leds=0; //duan=0; //wei=0; clearmen(); //初始化 init_serialcom(); for(dd=0;dd<0x4ff;dd++) { remotedata[dd]=0xab; } for(dd=0;dd<0x4ff;dd++) { send_char_com(remotedata[dd]); delay_ms(2); } while(1) { ; } } //串口接收中断函数 void serial () interrupt 4 using 3 { if (RI) { RI = 0 ; ch=SBUF; P1_4=0; P0=ch; } }
本程序源代码及其hex文件下载:http://www.51hei.com/f/stcxram.rar