硬汉嵌入式论坛

 找回密码
 立即注册
查看: 9101|回复: 1
收起左侧

RA8875 模拟8080总线的示范代码,可以移植到任意单片机

[复制链接]

759

主题

1050

回帖

3332

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3332
发表于 2012-10-26 16:36:15 | 显示全部楼层 |阅读模式
1-C.TXT (1 KB, 下载次数: 170)
未经验证,仅供参考。 如有客户移植到其他MCU并成功驱动,推荐分享下相关的底层代码。
/*
        RA8875 模拟8080总线的示范代码,可以移植到任意单片机
        针对不同的MCU,请大家自己完成GPIO的配置,和每个IO置0和置1的宏定义
*/


/* 片选 */
#define         RA8875_CS_0()
#define         RA8875_CS_1()

/* 寄存器选择,0表示REG, 1表示RAM */
#define         RA8875_RS_0()
#define         RA8875_RS_1()

/* 8080 总线读信号 */
#define         RA8875_OE_0()
#define         RA8875_OE_1()

/* 8080 总线写信号 */
#define         RA8875_WE_0()
#define         RA8875_WE_1()

/* 8080 16bit 数据读 */
#define         RA8875_READ_D16()                BUS16

/* 8080 16bit 数据写 */
#define         RA8875_WRITE_D16(x)                BUS16 = x

/* 初始化函数中调用RA8875_InitSoft8080函数 */
static void RA8875_InitSoft8080(void)
{
        /* 此处添加配置CPU GPIO的代码 */

        /* 总线初始状态全部为高 */
        RA8875_CS_1();
        RA8875_RS_1();
        RA8875_OE_1();
        RA8875_WE_1();
}

/*
*********************************************************************************************************
*        函 数 名: RA8875_WriteCmd
*        功能说明: 写RA8875指令寄存器
*        形    参:无
*        返 回 值: 无
*********************************************************************************************************
*/
static void RA8875_WriteCmd(uint8_t _ucRegAddr)
{
        RA8875_CS_0();
        RA8875_RS_1();

        RA8875_WRITE_D16(_ucRegAddr);

        RA8875_WE_0();
        RA8875_WE_1();

        RA8875_CS_1();
}

/*
*********************************************************************************************************
*        函 数 名: RA8875_WriteData
*        功能说明: 写RA8875指令寄存器
*        形    参:无
*        返 回 值: 无
*********************************************************************************************************
*/
static void RA8875_WriteData(uint8_t _ucRegValue)
{
        RA8875_CS_0();
        RA8875_RS_0();

        RA8875_WRITE_D16(_ucRegValue);

        RA8875_WE_0();
        RA8875_WE_1();

        RA8875_CS_1();
}

/*
*********************************************************************************************************
*        函 数 名: RA8875_ReadData
*        功能说明: 读RA8875寄存器值
*        形    参: 无
*        返 回 值: 寄存器值
*********************************************************************************************************
*/
uint8_t RA8875_ReadData(uint8_t _ucRegAddr)
{
        uint8_t value;

        RA8875_CS_0();
        RA8875_RS_0();

        RA8875_OE_0();

        RA8875_OE_1();

        value = RA8875_READ_D16();

        RA8875_CS_1();

        return value;
}

/*
*********************************************************************************************************
*        函 数 名: RA8875_ReadStatus
*        功能说明: 读RA8875状态寄存器
*        形    参:无
*        返 回 值: 无
*********************************************************************************************************
*/
static uint8_t RA8875_ReadStatus(void)
{
        uint8_t value;

        RA8875_CS_0();
        RA8875_RS_1();

        RA8875_OE_0();
        RA8875_OE_1();

        value = RA8875_READ_D16();

        RA8875_CS_1();

        return value;
}

/*
*********************************************************************************************************
*        函 数 名: RA8875_WriteData16
*        功能说明: 写RA8875数据总线,16bit,用于RGB显存写入
*        形    参:无
*        返 回 值: 无
*********************************************************************************************************
*/
static void RA8875_WriteData16(uint16_t _usRGB)
{
        RA8875_CS_0();
        RA8875_RS_0();

        RA8875_WRITE_D16(_usRGB);

        RA8875_WE_0();
        RA8875_WE_1();

        RA8875_CS_1();
}

/*
*********************************************************************************************************
*        函 数 名: RA8875_ReadData16
*        功能说明: 读RA8875显存,16bit RGB
*        形    参:无
*        返 回 值: 无
*********************************************************************************************************
*/
static uint16_t RA8875_ReadData16(void)
{
        uint16_t value;

        RA8875_CS_0();
        RA8875_RS_0();

        RA8875_OE_0();
        RA8875_OE_1();

        RA8875_READ_D16(_usRGB);

        RA8875_CS_1();

        return value;
}

/*
*********************************************************************************************************
*        函 数 名: RA8875_WriteReg
*        功能说明: 写RA8875寄存器. RA8875的寄存器地址和数据都是8bit的
*        形    参:无
*        返 回 值: 无
*********************************************************************************************************
*/
static void RA8875_WriteReg(uint8_t _ucRegAddr, uint8_t _ucRegValue)
{
        s_ucRA8875Busy = 1;

        RA8875_WriteCmd(_ucRegAddr);
        RA8875_WriteData(_ucRegValue);

        s_ucRA8875Busy = 0;
}

/*
*********************************************************************************************************
*        函 数 名: RA8875_ReadReg
*        功能说明: 写RA8875寄存器. RA8875的寄存器地址和数据都是8bit的
*        形    参:无
*        返 回 值: 无
*********************************************************************************************************
*/
static uint8_t RA8875_ReadReg(uint8_t _ucRegAddr)
{
        uint8_t value;

        RA8875_WriteCmd(_ucRegAddr);
        value = RA8875_ReadData();

        return value;
}

回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2012-10-26 17:17:25 | 显示全部楼层
好,晚上试试,谢谢了[s:150]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-7-5 11:40 , Processed in 0.242826 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表