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

📄 avr-i2c.txt

📁 关于AVR的一个I/O仿真I2C的源程序
💻 TXT
字号:
//I2C通讯子程序
//初始化
I2C_init:
 			ldi		Temp,$ff
			out		ddrb,Temp
			out		portb,Temp
			ret

//发送数据
I2C_communication:
			rcall 	I2C_start
			ldi		Temp1,$60
			rcall 	I2C_send	
			mov		Temp1,Senddata
			rcall	I2C_send
			rcall	I2C_stop
			ret	

//发送起始位
I2C_start:

 			sbi		SDA,1
			nop
			;nop
			sbi		SCL,0
			ldi		I2CTime,TimeCoin
			rcall	delay_us
			cbi		SDA,1
			ldi		I2CTime,TimeCoin
			rcall	delay_us
 			cbi		SCL,0
			ldi		I2CTime,TimeCoin
			rcall	delay_us
			ret


//I2C发送结束信号
I2C_stop:
			ldi		I2CTime,TimeCoin2
			rcall	delay_us
			cbi		SDA,1
			nop
			;nop
			sbi		SCL,0
			ldi		I2CTime,TimeCoin
			rcall	delay_us
			sbi		SDA,1
			ldi		I2CTime,TimeCoin
			rcall	delay_us
			ret

//发送一个数据 rol		Temp
I2C_send:
			ldi		Time1,$08		
I2C_send_loop:
			mov		Temp,Temp1
			andi	Temp,0x80
			brne	Send_one
			cbi		SDA,1
			nop
			;nop
			sbi		SCL,0
			ldi		I2CTime,TimeCoin
			rcall	delay_us
			cbi		SCL,0
			ldi		I2CTime,TimeCoin2
			rcall	delay_us
			rjmp	Check_loop			
Send_one:
			sbi		SDA,1
			nop
			;nop
			sbi		SCL,0
			ldi		I2CTime,TimeCoin
			rcall	delay_us
			cbi		SCL,0
			ldi		I2CTime,TimeCoin2
			rcall	delay_us
Check_loop:
			rol		Temp1
			dec		Time1
			brne	I2C_send_loop
			ldi		I2CTime,TimeCoin3
			rcall	delay_us
;Check_ACK:
			sbi		SDA,1
			nop
			;nop
			sbi		SCL,0
			ldi		I2CTime,TimeCoin
			rcall	delay_us
			cbi		SCL,0
			ldi		I2CTime,TimeCoin2
			rcall	delay_us					                                 			
			ret


delay_us:
			dec		I2CTime	
			brne	delay_us		
			ret

⌨️ 快捷键说明

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