


[资料整理]UT62256 32K RAM driver
//============================================================
//UT62256 32K RAM driver
//
//IOA0-14 -->A0-A14
//IOB0-7 <-->IO1-IO8
//OE -->IOB8
//WE -->IOB9
//done by:慕容飞 2007.8.31 EDA实验室
//============================================================
#include "spce061a.h"
#define OE 0x0100 //读控制
#define WE 0x0200 //写控制 均为低有效
void Ram_init()/* RAM 初始化*/
{
*P_IOA_Dir|=0xefff;
*P_IOA_Attrib|=0xefff;//初始化,将地址口线设为输出
*P_IOB_Dir|=(OE+WE);
*P_IOB_Attrib|=(OE+WE);
*P_IOB_Data|=(OE+WE);//将OE,WE控制线设为输出,且为无效状态
}
void Ram_Write(unsigned int Data,unsigned int Add)//往RAM里写数据
{
*P_IOA_Data=Add;//送地址
*P_IOB_Dir|=0x00ff;
*P_IOB_Attrib|=0x00ff;//将数据口设为输出状态
*P_IOB_Data=Data;//往数据口线送数 *********特别注意此处,不能用与或操作.
*P_IOB_Data&=(~WE);//写允许
*P_IOB_Data|=WE;//write stop
}
unsigned int Ram_Read(unsigned int Add)//从RAM里读数据
{
unsigned int Data;
*P_IOA_Data=Add;//set the address
*P_IOB_Dir&=0xff00;
*P_IOB_Attrib&=0xff00;//将数据口设为输入状态
*P_IOB_Data&=(~OE);//读允许
Data=((*P_IOB_Data)&0x00ff);
*P_IOB_Data|=OE;//read stop
return(Data);
}
/*------------主函数-----------------*/
int main(void)
{
unsigned int Ram_Data[48],i=0x0000,num=0x0000;
Ram_init();
for(num=0x00;num<0x30;num++)//往Ram里写48个数
{
Ram_Write(num,num);
}
for(i=0x0000;i<0x0030;i++)//读出来
{
Ram_Data=Ram_Read(i);
}
while(1)
{
*P_Watchdog_Clear=0x01;
}
}