main.c

来自「扩展RAM 扩展RAM 扩展RAM 扩展RAM 扩展RAM 扩展RAM 扩展RA」· C语言 代码 · 共 96 行

C
96
字号
/*******************************************************************************
程序名称:RAM测试
硬件接法:16KB片外RAM接在0x8000~0xBFFF,MOVC和MOVX都可访问,详见电路图
运行效果:如果RAM通过测试,则指示灯常亮,否则指示灯不停闪烁
*******************************************************************************/


//包含头文件
#include <REG51.h>
#include <ABSACC.h>


//定义I/O
sbit LED = P1^1;


/*******************************************************************************
函数:Delay()
功能:延时0.01s~2.56s
参数:t>0时,延时(t*0.01)s
      t=0时,延时2.56s
说明:定时10ms的定时器初值=65536-0.01/(1/(f/12)),其中f为晶振频率
*******************************************************************************/
void Delay(unsigned char t)
{
	do
	{
		TH0 = 0xDC;			//设置T0初值(定时10ms)
		TL0 = 0x00;
		TR0 = 1;			//启动T0
		while ( !TF0 );		//等待T0溢出
		TR0 = 0;			//停止T0
		TF0 = 0;			//清除溢出标志
	} while ( --t != 0 );	//循环t次
}


/*******************************************************************************
函数:WriteRam()
功能:向RAM写入数据
参数:addr-起始地址
      size-存储单元大小
      c-要写入的数据
*******************************************************************************/
void WriteRam(unsigned int addr, unsigned int size, unsigned char c)
{
	do
	{
		XBYTE[addr] = c;
		addr++;
	} while ( --size != 0 );
}


/*******************************************************************************
函数:CheckRam()
功能:检查RAM
参数:addr-起始地址
      size-存储单元大小
      c-核对的数据
*******************************************************************************/
bit CheckRam(unsigned int addr, unsigned int size, unsigned char c)
{
	do
	{
		if ( CBYTE[addr] != c ) return 0;
		addr++;
	} while ( --size != 0 );
	return 1;
}


//主函数
void main()
{
	TMOD &= 0xF0;
	TMOD |= 0x01;
	WriteRam(0x8000,0x4000,0x5A);
	if ( CheckRam(0x8000,0x4000,0x5A) )
	{
		LED = 0;	//测试通过,LED常亮
		for (;;);
	}
	else
	{
		for (;;)	//测试失败,LED不停闪烁
		{
			LED = 0;
			Delay(30);
			LED = 1;
			Delay(30);
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?