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

📄 hi2csla_asm.inc

📁 i2c通信协议及程序。适合各种有需要的相关人士.
💻 INC
字号:
;从方式的LPC932硬件I2C
; 1  使用I2C总线软件包时P1.2,P1.3切勿写为0,并要设置为开漏输出。
; 2  总线定义为P1.2=SCL,P1.3=SDA,需外接上拉电阻2-10k。
; 3  相应寄存器:
;    地址寄存器  I2ADR   用于存放自身从地址(从方式时才有用)
;    数据寄存器  I2DAT   接收/发送数据用
;    控制寄存器  I2CON   用于硬件I2C的设置、使能、启动、结束,
;                        应答控制,中断标志等。
;    状态寄存器  I2STAT  指示I2C总线的操作状态码,高5位有效,
;                        若I2C中断志置位,可查询此寄存器判断
;                        总线情况。
;    SCL占空比寄存器  I2SCLH、I2SCLL  设置SCL的频率发生。
;                     设置最好与主机的SCL频率基本一至。  
;使用:使用前要先开中断:总中断EA和I2C中断允许EI2C,其中断入口地址为33H;
;      在中断里进行接收或发送数据操作,调用操作如下:
;      若是从接收,则循环调用RcvByte接收字节数据,直至总线结束/重启;
;      若是从发送,则循环调用SendByte发送数据,直至接收到非应答信号;
;为了防止从器件因总线出错而死机,可用定时器实现超时处理。



;接收字节函数
;功能:读取总线传来的字节数据并发送应答位,正常接收ACK返回1,接
;      收到总线结束信号或重新启动总线信号时ACK返回0.
;出口参数:ACC		读入的数据
RCVBYTE:
        MOV   	I2CON,#44H   	;清除标志位
        JNB   	SI,$          	;放开总线,等待接收
        MOV   	A,I2STAT
        CJNE  	A,#0A0H,RCV_L1	;不是结束总线状态则跳转        
ENDRCV: MOV   	I2CON,#44H   	;放开总线
        CLR   	ACK           	;复位标志位,表明总线结束
        RET                
        
RCV_L1: MOV   	A,I2DAT       	;取字节数据
        SETB  	ACK           	;设置ACK位
        RET           

        
        
        
;发送数据
;功能:向总线发送数据ACC,当接收到非应答位时ACK=0,否则ACK=1
;入口参数:ACC		要发送到总线上的数据
SENDBYTE:
       	PUSH  	ACC             ;暂时保护ACC
        MOV   	A,I2STAT
        CJNE  	A,#0C0H,SEND_L1	;判断上次发送数据时是否返回非应答位
ENDSEND:POP   	ACC             ;接收到非应答信号,退出发送
        MOV   	I2CON,#44H
        CLR   	ACK
        RET                
        
SEND_L1:POP  	ACC
        MOV   	I2DAT,A        	;发送数据
        MOV   	I2CON,#44H     	;释放总线
        JNB   	SI,$            ;等待字节数据发送完成
        SETB  	ACK
        RET




;设置总线函数(设置为从机)
;功能:用于设置I2C控制寄存器,包括总线时钟选择及从地址.不接受广播地址。
;入口参数:ACC      从地址      
SETBUS:
      	ANL   	A,#0FEH       	;设置从地址不接收广播地址
      	MOV   	I2ADR,A
       	MOV  	I2CON,#44H   	;启动硬件I2C
	MOV	I2SCLH,#15	;位速率 = Fpclk / ( 2 x (I2SCLH + I2SCLL) )
	MOV	I2SCLL,#15
      	RET


;使用时要定义LPC932的I2C相关寄存器的定义
;I2ADR	DATA	0DBH
;I2DAT	DATA	0DAH		
;I2CON	DATA	0D8H
;I2STAT	DATA	0D9H
;I2SCLH	DATA	0DDH
;I2SCLL	DATA	0DCH
;SI	BIT	I2CON.3

⌨️ 快捷键说明

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