/*晶振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
