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

📄 hm6264_driver.asm

📁 TI公司DM642 DSP的RAM读写驱动程序例程
💻 ASM
字号:
//HM6264的驱动程序    基础底层,仅有字节读写....
//2005 08 09  
//Edit by xinqiang (小丑)  Mz出品
//xinqiang@sunnorth.com.cn
//凌阳科技  教育推广中心   TS

.include hardware.inc
//接线:IOA0~IOA12  接13位地址线	输出口
//      IOB0~7      接8位数据线		输入口/输出口  默认输入口
//		IOB8        WE				输出口         默认低电平
//		IOB9		CS2				输出口         默认高电平
//		IOB10		OE				输出口         默认低电平
//		IOB11		CS1				输出口         默认低电平
.define Flag_WE			0x0100			//定义HM6264的WE线
.define Flag_CS2		0x0200			//定义HM6264的CS2线(实际应用中CS2接高电平即可)
.define Flag_OE			0x0400			//定义HM6264的OE线
.define Flag_CS1		0x0800			//定义HM6264的CS1线

.code
M_HM6264_IOPort_IN:.macro 			//端口转换为输入口(IOB0~7)
	r3 = [P_IOB_Dir]
	r3 = r3&0xff00
	[P_IOB_Dir] = r3
	r3 = [P_IOB_Attrib]
	r3 = r3&0xff00
	[P_IOB_Attrib] = r3
.endm
M_HM6264_IOPort_OUT:.macro 			//端口转换为输出口(IOB0~7)
	r3 = [P_IOB_Dir]
	r3 = r3|0x00ff
	[P_IOB_Dir] = r3
	r3 = [P_IOB_Attrib]
	r3 = r3|0x00ff
	[P_IOB_Attrib] = r3
.endm
//==============================================================//
//函数:void HM6264_Initial(void) C语言调用
//描述:HM6264(8KX8Bit RAM)驱动程序端口初始化程序
//参数:无
//返回:无
//注意:IOA0~IOA12  接13位地址线	输出口
//      IOB0~7      接8位数据线		输入口/输出口  默认输入口
//		IOB8        WE				输出口         默认低电平
//		IOB9		CS2				输出口         默认高电平
//		IOB10		OE				输出口         默认低电平
//		IOB11		CS1				输出口         默认低电平
//==============================================================//
.public _HM6264_Initial
_HM6264_Initial:
HM6264_Initial:
	push r1 to [sp]
	r1 = [P_IOA_Dir]		//initial IOA Port IOA0~12 as OutPut
	r1 = r1|0x1fff
	[P_IOA_Dir] = r1
	r1 = [P_IOA_Attrib]
	r1 = r1|0x1fff
	[P_IOA_Attrib] = r1
	r1 = [P_IOA_Buffer]
	r1 = r1|0x1fff
	[P_IOA_Data] = r1
	
	r1 = [P_IOB_Dir]
	r1 = r1|0x0f00
	r1 = r1&0xff00
	[P_IOB_Dir] = r1
	r1 = [P_IOB_Attrib]
	r1 = r1|0x0f00
	r1 = r1&0xff00
	[P_IOB_Attrib] = r1
	r1 = [P_IOB_Buffer]
	r1 = r1|0x0800		///CS1 as hight
	r1 = r1&0xff00
	[P_IOB_Data] = r1
	
	pop r1 from [sp]
	retf
//========================================================================//
//函数:void HM6264_WriteByte(unsigned int Addr,unsigned int Data) C语言调用
//描述:HM6264(8KX8Bit RAM)字节写程序
//参数:Addr   写入地址    Data   写入数据
//返回:无
//注意:Addr  0x0000~0x1fff   Data  低八位有效
//=========================================================================//
.public _HM6264_WriteByte
_HM6264_WriteByte:
HM6264_WriteByte:
	push r1,r5 to [sp]
	r5 = sp+8
	r1 = [r5]				//Get Address
	r1 = r1&0x1fff
	r2 = [r5+1]				//Get Writint Data
	r2 = r2&0x00ff
	M_HM6264_IOPort_OUT		//Set the IO Port as OutPut
	r3 = [P_IOA_Buffer]
	r3 = r3&0xe000
	r3 = r3|r1
	[P_IOA_Data] = r3		//Send Address
	r1 = [P_IOB_Buffer]
	r1 = r1|Flag_OE
	[P_IOB_Buffer] = r1		//OE to Hight
	r1 = r1&(~Flag_CS1)
	[P_IOB_Data] = r1
	r1 = r1&(~Flag_WE)
	[P_IOB_Data] = r1
	r1 = r1&0xff00
	r1 = r1|r2
	[P_IOB_Data] = r1
	nop
	nop
	r1 = r1|(Flag_WE+Flag_CS1)
	[P_IOB_Data] = r1
	r1 = r1|Flag_OE
	[P_IOB_Data] = r1
	M_HM6264_IOPort_IN
	pop r1,r5 from [sp]
	retf
//========================================================================//
//函数:unsigned int HM6264_ReadByte(unsigned int Addr) C语言调用
//描述:HM6264(8KX8Bit RAM)字节读取程序
//参数:Addr   地址
//返回:读回数据,低八位有效,R1返回
//注意:Addr  0x0000~0x1fff   
//=========================================================================//
.public _HM6264_ReadByte
_HM6264_ReadByte:
HM6264_ReadByte:
	push r2,r3 to [sp]
	r5 = sp+5
	r1 = [r5]				//Get Address
	r1 = r1&0x1fff
//	r2 = [r5+1]				//Get Writint Data
//	M_HM6264_IOPort_OUT		//Set the IO Port as OutPut
	r2 = [P_IOB_Buffer]
	r2 = r2|Flag_WE
	[P_IOB_Data] = r2
	r3 = [P_IOA_Buffer]
	r3 = r3&0xe000
	r3 = r3|r1
	[P_IOA_Data] = r3		//Send Address
	r2 = [P_IOB_Buffer]
	r2 = r2&(~Flag_CS1)
	[P_IOB_Buffer] = r2		//
	r2 = r2&(~Flag_CS1)
	[P_IOB_Data] = r2
	r2 = r2&(~Flag_OE)
	[P_IOB_Data] = r2
	nop
	r1 = [P_IOB_Data]
	r1 = r1&0x00ff
	r2 = r2|(Flag_OE+Flag_CS1)
	[P_IOB_Data] = r2
//	r1 = r1|Flag_OE
//	[P_IOB_Data] = r1
//	M_HM6264_IOPort_IN
	pop r2,r3 from [sp]
	retf

⌨️ 快捷键说明

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