⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ram.c

📁 基于单片机AT89S52系统的一些测试程序
💻 C
字号:
#include <reg52.h>
#include <stdio.h>
#include <absacc.h>

#define RAM(ADDR) XBYTE[ADDR]

typedef unsigned int uint;
typedef unsigned char uchar;

sbit CS=P1^4;
sbit CLK=P1^7;
sbit DIO=P1^6;
sbit KEY=P3^2;

uchar half_hign;
uchar half_low;

bdata uchar com_data;
sbit mos_bit=com_data^7;
sbit low_bit=com_data^0;

void delay_50us()
{   
	uchar i;
	for (i=0; i<6; i++){;}
}

void delay_8us()
{
	uchar i;
	for (i=0; i<1; i++){;}
}
void delay_50ms()
{
	uchar i,j;
	for(j=0;j<50;j++)
		for(i=0;i<125;i++){;}
}
void send(uchar sebuf)
{
	uchar i;
	com_data=sebuf;
	CLK=0;
	CS=0;
	delay_50us();
	for(i=0;i<8;i++)
	{
		delay_8us();
		DIO=mos_bit;
		CLK=1;
		delay_8us();
		com_data=com_data<<1;
		CLK=0;
	}
	DIO=0;
}
uchar receive(void)
{
	uchar i,rebuf;
	CLK=1;
	delay_50us();
	for(i=0;i<8;i++)
	{
		com_data=com_data<<1;
		low_bit=DIO;
		CLK=1;
		delay_8us();
		CLK=0;
		delay_8us();
	}
	rebuf=com_data;
	DIO =1;
	CS=1;
	return rebuf;
}
void reset(void)
{
	DIO=1;
	delay_50ms();
	send(0xa4);
	CS=1;
}
/*  7289显示程序                  */ 
/*  addr为显示位置 范围0~7		  */
/*  dat为现实内容                 */
void display(uchar addr,uchar dat)
{
	if(addr<0 || addr >7)
		return;
	send(0xc8 + addr);
	delay_50us();
	send(dat);
	CS=1;
}
/*  发送双字节命令				*/
void sendcommand(uchar addr,uchar dat)
{
	send(addr);
	delay_50us();
	send(dat);
	CS=1;
}
void main()
{ 
	uchar dat;
	uint i;
	reset();
	for(i=0x0000;i<0x8000;i++)
	{
		/*  对32KRAM的每一个字节进行测试  */
		/*  先写入0xaa,然后看能否读出来  */
		RAM(i + 0x8000) = 0xaa;
		dat = RAM(i + 0x8000);
		if(dat != 0xaa)
			break;
		/*  再写入0x55,然后看能否读出来  */
		RAM(i + 0x8000) = 0x55;
		dat = RAM(i + 0x8000);
		if(dat != 0x55)
			break;
	}
	if(i == 0x8000)  /* 没有问题则显示 P */
		sendcommand(0x80,0x0e);
	else			 /* 有问题则显示 E   */
		sendcommand(0x80,0x0b);

	while(1);
}

⌨️ 快捷键说明

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