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

📄 viic.asm

📁 Small RTOS51是为51系列单片机而编写的。它是完全免费的、源代码公开的多任务实时操作系统。它可在无任何外部数据存储器的单片80C51系统上运行
💻 ASM
字号:
;何立民老师编写的VIIC软件包
STA: 	SETB VSDA;启动I2C总线
	SETB VSCL
	NOP
	NOP
	NOP
	NOP
	CLR VSDA
	NOP
	NOP
	NOP
	NOP
	CLR VSCL
	RET 
;*********************************************************************************
STOP: 
	CLR 	VSDA ;停止I2C总线数据传送
	SETB 	VSCL
	NOP
	NOP
	NOP
	NOP
	SETB 	VSDA
	NOP
	NOP
	NOP
	NOP
	CLR	VSDA
	CLR 	VSCL
	RET

MACK: 
	CLR 	VSDA ;发送应答位
	SETB 	VSCL
	NOP
	NOP
	NOP
	NOP	
	CLR 	VSCL
	SETB 	VSDA
	RET 

MNACK: 
	SETB 	VSDA ;发送非应答位
	SETB 	VSCL
	NOP
	NOP
	NOP
	NOP
	CLR 	VSCL
	CLR 	VSDA
	RET 

CACK: 	SETB 	VSDA ;应答位检查
	SETB 	VSCL
	CLR 	F0
	MOV 	C,VSDA
	JNC 	CEND
	SETB 	F0 
CEND: 	CLR 	VSCL
	RET 

WRBYT: 	MOV 	R0,#08H ;向VSDA线上发送1个数据字节 
WLP: 	RLC 	A
	JC 	WR1
	AJMP 	WR0 
WLP1: 	DJNZ 	R0,WLP
	RET 
WR1: 	SETB 	VSDA
	SETB 	VSCL
	NOP
	NOP
	NOP
	NOP
	CLR 	VSCL
	CLR 	VSDA
	AJMP 	WLP1 
WR0: 	CLR 	VSDA
	SETB 	VSCL
	NOP
	NOP
	NOP
	NOP
	CLR 	VSCL
	AJMP 	WLP1 

RDBYT: 	MOV 	R0,#08H ;从VSDA线上读取1个数据字节 
RLP: 	SETB 	VSDA
	SETB 	VSCL
	MOV 	C,VSDA
	MOV 	A,R2
	RLC	A
	MOV 	R2,A
	CLR 	VSCL
	DJNZ 	R0,RLP
	RET 

WRNBYT: MOV 	R3,NUMBYT ;虚拟I2C总线发送N个字节数据
	LCALL 	STA
	MOV 	A,SLA
	LCALL 	WRBYT
	LCALL 	CACK
	JB 	F0,WRNBYT
	MOV 	R1,#MTD 
WRDA: 	MOV 	A,@R1
	LCALL 	WRBYT
	LCALL 	CACK
	JB 	F0,WRNBYT
	INC 	R1
	DJNZ 	R3,WRDA
	LCALL 	STOP
	RET 
RDNBYT: MOV 	R3, NUMBYT ;模拟I2C总线接收n个 ;字节数据
	LCALL 	STA
	MOV 	A,SLA
	LCALL 	WRBYT
	LCALL 	CACK
	JB 	F0,RDNBYT 
RDN: 	MOV 	R1,#MRD 
RDN1:	LCALL 	RDBYT
	MOV 	@R1,A
	DJNZ 	R3,ACK
	LCALL 	MNACK
	LCALL 	STOP
	RET 
ACK: 	LCALL 	MACK
	INC 	R1
	SJMP 	RDN1

⌨️ 快捷键说明

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