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

📄 setiobit.asm

📁 一个机器人控制的源代码
💻 ASM
字号:
//========================================================================
//	文件名称:	SetIOBit.asm
//	功能描述:	IO口位操作接口函数
//	维护记录:	2005-09-06	V1.0
//========================================================================
.INCLUDE  hardware.inc

.DATA
		Bit:	.DW 0xfffe,0xfffd,0xfffb,0xfff7,0xffef,0xffdf,0xffbf,0xff7f
				.DW	0xfeff,0xfdff,0xfbff,0xf7ff,0xefff,0xdfff,0xbfff,0x7fff;
		One:	.DW 0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080
				.DW	0x0100,0x0200,0x0400,0x0800,0x1000,0x2000,0x4000,0x8000;
					
.CODE
//==============================================================================
//汇编语言格式:_Set_IOB_Bit
//功能描述:	对IOB进行位设置
//Set_IOB_Bit(unsigned int, unsigned int, unsigned int , unsigned int , unsigned int);第一个参数为需要对IO口的哪个位进行操作,然后参数依次为操作IO口的Dirretory、Attribion、Data、Buffer。
//入口参数:	unsigned int	-	需要位操作的端口号
//			unsigned int	-	设置端口的Dirretory属性
//			unsigned int	-	设置端口的Attribion属性
//			unsigned int	-	设置端口的Data属性
//			unsigned int	-	设置端口的Buffer属性
//出口参数:	无
//===============================================================================
.PUBLIC _Set_IOB_Bit
.PUBLIC Set_IOB_Bit
_Set_IOB_Bit:.PROC
Set_IOB_Bit:
	push bp to [sp]
	bp = sp + 3
	r4 = [bp+1]
	r1 = [P_IOB_Dir]
	r2 = r4 + Bit
	r2 = [r2]
	r1 = r1 & r2
	r3 = [bp+2]
	cmp r3,0
	je BZeroDir
	r2 = r4 + One
	r2 = [r2]
	r1 = r1 | r2
	[P_IOB_Dir] = r1
BZeroDir:
	[P_IOB_Dir] = r1
	r1 = [P_IOB_Attrib]
	r2 = r4 + Bit
	r2 = [r2]
	r1 = r1 & r2
	r3 = [bp+3]
	cmp r3,0
	je BZeroAttrib
	r2 = r4 + One
	r2 = [r2]
	r1 = r1 | r2
	[P_IOB_Attrib] = r1
BZeroAttrib:
	[P_IOB_Attrib] = r1
	r1 = [P_IOB_Buffer]
	r2 = r4 + Bit
	r2 = [r2]
	r1 = r1 & r2
	r3 = [bp+4]
	cmp r3,0
	je BZeroBuffer
	r2	= r4 + One
	r2 = [r2]
	r1 = r1 | r2
	[P_IOB_Buffer] = r1
BZeroBuffer:
	[P_IOB_Buffer] = r1
	r1 = [P_IOB_Buffer]
	r2 = r4 + Bit
	r2 = [r2]
	r1 = r1 & r2
	r3 = [bp+4]
	cmp r3,0
	je BZeroData
	r2 = r4 + One
	r2 = [r2]
	r1 = r1 | r2
	[P_IOB_Data] = r1
BZeroData:
	[P_IOB_Data] = r1
	pop bp from [sp]
	retf
	.ENDP
//==============================================================================
//汇编语言格式:_Set_IOA_Bit
//功能描述:	对IOA进行位设置
//Set_IOA_Bit(unsigned int, unsigned int, unsigned int , unsigned int , unsigned int);第一个参数为需要对IO口的哪个位进行操作,然后参数依次为操作IO口的Dirretory、Attribion、Data、Buffer。
//入口参数:	unsigned int	-	需要位操作的端口号
//			unsigned int	-	设置端口的Dirretory属性
//			unsigned int	-	设置端口的Attribion属性
//			unsigned int	-	设置端口的Data属性
//			unsigned int	-	设置端口的Buffer属性
//出口参数:	无
//===============================================================================
.PUBLIC _Set_IOA_Bit
.PUBLIC Set_IOA_Bit
_Set_IOA_Bit:.PROC
Set_IOA_Bit:
	push bp to [sp]
	bp = sp + 3
	r4 = [bp+1]
	r1 = [P_IOA_Dir]
	r2 = r4 + Bit
	r2 = [r2]
	r1 = r1 & r2
	r3 = [bp+2]
	cmp r3,0
	je AZeroDir
	r2 = r4 + One
	r2 = [r2]
	r1 = r1 | r2
	[P_IOA_Dir] = r1
AZeroDir:
	[P_IOA_Dir] = r1
	r1 = [P_IOA_Attrib]
	r2 = r4 + Bit
	r2 = [r2]
	r1 = r1 & r2
	r3 = [bp+3]
	cmp r3,0
	je AZeroAttrib
	r2 = r4 + One
	r2 = [r2]
	r1 = r1 | r2
	[P_IOA_Attrib] = r1
AZeroAttrib:
	[P_IOA_Attrib] = r1
	r1 = [P_IOA_Buffer]
	r2 = r4 + Bit
	r2 = [r2]
	r1 = r1 & r2
	r3 = [bp+4]
	cmp r3,0
	je AZeroBuffer
	r2	= r4 + One
	r2 = [r2]
	r1 = r1 | r2
	[P_IOA_Buffer] = r1
AZeroBuffer:
	[P_IOA_Buffer] = r1
	r1 = [P_IOA_Buffer]
	r2 = r4 + Bit
	r2 = [r2]
	r1 = r1 & r2
	r3 = [bp+4]
	cmp r3,0
	je AZeroData
	r2 = r4 + One
	r2 = [r2]
	r1 = r1 | r2
	[P_IOA_Data] = r1
AZeroData:
	[P_IOA_Data] = r1
	pop bp from [sp]
	retf
	.ENDP

⌨️ 快捷键说明

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