发新话题
打印

[资料整理]UT62256 32K RAM driver

本主题由 YYLT 于 2008-8-15 20:30 解除置顶

[资料整理]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;
}
}
本帖最近评分记录
  • 谷雨 经验值 +7 2007-10-17 21:44
我是个好男人啊 嫁给我吧 我们村很好的 我还有几亩地,家里有一头牛,2个猪 还有很多 够你吃的了
佛曰:人脸是一个苦字,苦今生,修来世!
我的博客:http://hi.baidu.com/murufy

TOP

  

这个程序当时写得匆忙,也没写太多的注释,如果有用得着的就自己找芯片手册看一下吧,挺简单的.
我是个好男人啊 嫁给我吧 我们村很好的 我还有几亩地,家里有一头牛,2个猪 还有很多 够你吃的了
佛曰:人脸是一个苦字,苦今生,修来世!
我的博客:http://hi.baidu.com/murufy

TOP

无意间又看了下这个程序,发现一点小错误:第二个函数RAM_write中在开始应加上一句:

Data=Data&0x00ff;

不影响高八位的值
我是个好男人啊 嫁给我吧 我们村很好的 我还有几亩地,家里有一头牛,2个猪 还有很多 够你吃的了
佛曰:人脸是一个苦字,苦今生,修来世!
我的博客:http://hi.baidu.com/murufy

TOP

发新话题
版块跳转