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 + -
显示快捷键?