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

📄 pointer.inc

📁 keilc关于LM75A温度计的使用例程
💻 INC
字号:
;*************************************************************************
;实用的8051单片机通用指针操作程序
;适用于Keil C51编译器
;*************************************************************************
;关于通用指针:
;	在80C51中,数据可能存储在不同的逻辑地址空间中,如idata、xdata、
;	pdata、code等,如果要进行统一的操作,就必须引入通用指针的概念
;通用指针用3个字节表示,第1字节为指针类型,第2、3字节表示指针内容
;	类型	类型值	属性	常用性
;	idata	0x00	读/写	很常用
;	xdata	0x01	读/写	常用
;	pdata	0xFE	读/写	不常用
;	code	0xFF	只读	很常用
;通用指针的运算:
;	提取指针数据
;	保存指针数据
;	指针加常数
;	指针减常数
;	两个指针相减
;通用指针用法:
;	对数据的存取操作:将通用指针复制到(R1,DPTR)中,再调用相应的子程序
;	对通用指针的算术运算:可通过双字节算术运算来实现
;*************************************************************************


;*************************************************************************
;定义指针类型
;*************************************************************************
PtrTypeIDATA	EQU	0x00
PtrTypeXDATA	EQU	0x01
PtrTypePDATA	EQU	0xFE
PtrTypeCODE	EQU	0xFF


;*************************************************************************
;函数:BytePtrLD()
;功能:从字节型通用指针指向的存储单元提取数据
;参数:(R1,DPTR)为通用指针
;	R1:指针类型
;	DPTR:指针内容
;返回:提取的数据保存在A中
;*************************************************************************
BytePtrLD:
	CJNE	R1, #PtrTypeIDATA, BytePtrLD_code
	MOV	R0, DPL
	MOV	A, @R0
	RET
BytePtrLD_code:
	CJNE	R1, #PtrTypeCODE, BytePtrLD_xdata
	CLR	A
	MOVC	A, @A+DPTR
	RET
BytePtrLD_xdata:
	CJNE	R1, #PtrTypeXDATA, BytePtrLD_pdata
	MOVX	A, @DPTR
	RET
BytePtrLD_pdata:
	CJNE	R1, #PtrTypePDATA, BytePtrLD_end
	MOV	R0, DPL
	MOVX	A, @R0
BytePtrLD_end:
	RET


;*************************************************************************
;函数:BytePtrST()
;功能:保存数据到字节型通用指针指向的存储单元
;参数:(R1,DPTR)为通用指针
;	R1:指针类型
;	DPTR:指针内容
;	A:要保存的数据
;注意:不能是code型指针
;*************************************************************************
BytePtrST:
	CJNE	R1, #PtrTypeIDATA, BytePtrST_xdata
	MOV	R0, DPL
	MOV	@R0, A
	RET
BytePtrST_xdata:
	CJNE	R1, #PtrTypeXDATA, BytePtrST_pdata
	MOVX	@DPTR, A
	RET
BytePtrST_pdata:
	CJNE	R1, #PtrTypePDATA, BytePtrST_end
	MOV	R0, DPL
	MOVX	@R0, A
BytePtrST_end:
	RET

⌨️ 快捷键说明

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