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

📄 ex8-5.asm

📁 本文件好似一系列的仿真
💻 ASM
字号:
ACK		BIT	10H		;应答标志位
SLA		DATA	50H		;器件地址字
SUBA		DATA	51H		;器件子地址
NUMBYTE		DATA	52H		;读/写字节数
SDA		BIT	P3.1
SCL		BIT	P3.0		;I2C总线定义
MTD		EQU	30H		;发送数据缓存区首地址(30H-3FH)
MRD		EQU	40H		;接收数据缓存区首地址(40H-4FH)
		ORG 	0000H
		AJMP	MAIN
		ORG	0030H

;*********************************************************************
;名称:STRRT
;描述:启动I2C总线子程序—发送I2C总线起始条件
;*********************************************************************
START:		SETB	SDA		;发送起始条件数据信号
		NOP			;起始条件建立时间大于4.7us
   		SETB	SCL		;发送起始条件的时钟信号
		NOP
		NOP
		NOP
		NOP
		NOP			;起始条件锁定时间大于4.7us
   		CLR  	SDA		;发送起始信号
		NOP
		NOP
		NOP
		NOP			;起始条件锁定时间大于4.7us
   		CLR	SCL		;钳住I2C总线,准备发送或接收数据
   		NOP
   		RET

;*********************************************************************
;名称:STOP
;描述:停止I2C总线子程序—发送I2C总线停止条件
;*********************************************************************
STOP:		CLR  	SDA 		;发送停止条件的数据信号
		NOP			   	
		NOP
		SETB  	SCL 		;发送停止条件的时钟信号
		NOP
		NOP
		NOP
		NOP
		NOP			;起始条件建立时间大于4.7us
		SETB 	SDA 		;发送I2C总线停止信号
		NOP
		NOP
		NOP
		NOP
		NOP			;延迟时间大于4.7us
		RET

;*********************************************************************
;名称:MACK
;描述:发送应答信号子程序
;*********************************************************************
MACK:		CLR	SDA		;将SDA置0
		NOP
		NOP
		SETB	SCL
		NOP
		NOP
		NOP
		NOP
		NOP			;保持数据时间,大于4.7us
		CLR	SCL
		NOP
		NOP
		RET

;*********************************************************************
;名称:MNACK
;描述:发送非应答信号子程序
;*********************************************************************
MNACK:		SETB	SDA		;将SDA置1
		NOP
		NOP
		SETB	SCL
		NOP
		NOP
		NOP
		NOP
		NOP
		CLR	SCL		;保持数据时间,大于4.7us
		NOP
		NOP
		RET

;*********************************************************************
;名称:CACK
;描述:检查应答位子程序,返回值:ACK=1时表示有应答
;*********************************************************************
CACK:		SETB	SDA
		NOP
		NOP
		SETB	SCL
		CLR	ACK
		NOP
		NOP
		MOV	C,SDA
		JC	CEND
		SETB	ACK		;判断应答位
CEND:		NOP
		CLR	SCL
		NOP
		RET

;*********************************************************************	
;名称:WRBYTE
;描述:发送字节子程序,字节数据放入ACC
;*********************************************************************
WRBYTE:		MOV	R0,#08H
WLP:		RLC	A		;取数据位
		JC	WRI
		SJMP	WRO		;判断数据位
WLP1:		DJNZ	R0,WLP
		NOP
		RET
WRI:		SETB	SDA		;发送1
		NOP
		SETB	SCL
		NOP
		NOP
		NOP
		NOP
		NOP
		CLR	SCL
		SJMP	WLP1
WRO:		CLR	SDA		;发送0
		NOP
		SETB	SCL
		NOP
		NOP
		NOP
		NOP
		NOP
		CLR	SCL
		SJMP	WLP1


;*********************************************************************	
;名称:ADC517
;描述:启动MAX517进行D/A转换子程序,转换数据位于40H
;*********************************************************************
DAC517:		LCALL  	START
		MOV	A,#58H
		LCALL	WRBYTE
		LCALL	MNACK
		MOV	A,#0
		LCALL	WRBYTE
		LCALL	MNACK
		MOV	A,40H
		LCALL	WRBYTE
		LCALL	MNACK
		LCALL	STOP
		RET

;*********************************************************************	
;名称:MAIN
;描述:主程序
;*********************************************************************
MAIN:		MOV 	SP,#60H
		MOV	40H,#00H
LOOP:		LCALL	DAC517
		INC	40H
		SJMP 	LOOP

		END

⌨️ 快捷键说明

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