; Asm codes generated by Shanghai Haier C Compiler
; HRCO, Ver: 1.0,0132

#INCLUDE       	<ES7P169C.INC>
#INCLUDE       	<OPERATION.INC>
	EXTERN         	MUL_TEMP
	EXTERN         	MUL_TEMP
	PUBLIC         	_I2C_Restart
	PUBLIC         	_I2CRB_REG
	PUBLIC         	_I2CTB_REG
	PUBLIC         	_clear_ram
	PUBLIC         	_delay
	PUBLIC         	_Init_i2c
	PUBLIC         	_main
	PUBLIC         	_IG6_INT
#TMP	EQU            	?_TMP+ 0X0		; Bank 0
?_TMP_RET	EQU            	?_TMP		; Bank 0
_I2CRST_0#sh	EQU            	0X6D1		; Bank 0
_I2CTE_0#sh	EQU            	0X6D7		; Bank 0
_I2CRW_0#sh	EQU            	0X6D8		; Bank 0
_I2CSRIE_0#sh	EQU            	0X6F0		; Bank 0
_I2CSPIE_0#sh	EQU            	0X6F1		; Bank 0
_I2CTBIE_0#sh	EQU            	0X6F2		; Bank 0
_I2CRBIE_0#sh	EQU            	0X6F3		; Bank 0
_I2CNAIE_0#sh	EQU            	0X6F6		; Bank 0
_I2CSRIF_0#sh	EQU            	0X6F8		; Bank 0
_I2CSPIF_0#sh	EQU            	0X6F9		; Bank 0
_I2CTBIF_0#sh	EQU            	0X6FA		; Bank 0
_I2CRBIF_0#sh	EQU            	0X6FB		; Bank 0
_I2CNAIF_0#sh	EQU            	0X6FE		; Bank 0
_I2CX16_0#sh	EQU            	0XD9		; Bank 0
_I2CC_0#sh	EQU            	0XDA		; Bank 0
_I2CSA_0#sh	EQU            	0XDB		; Bank 0
_I2CTB_0#sh	EQU            	0XDC		; Bank 0
_I2CRB_0#sh	EQU            	0XDD		; Bank 0
_I2CIEC_0#sh	EQU            	0XDE		; Bank 0
_MULA_0#sh	EQU            	(MULA - 0X6080) % 0X40 + 0xC0		; Bank 0
_MULB_0#sh	EQU            	(MULB - 0X6080) % 0X40 + 0xC0		; Bank 0
_MULL_0#sh	EQU            	(MULL - 0X6080) % 0X40 + 0xC0		; Bank 0
_MULH_0#sh	EQU            	(MULH - 0X6080) % 0X40 + 0xC0		; Bank 0
_DIVEL_0#sh	EQU            	(DIVEL - 0X6080) % 0X40 + 0xC0		; Bank 0
_DIVEM_0#sh	EQU            	(DIVEM - 0X6080) % 0X40 + 0xC0		; Bank 0
_DIVSL_0#sh	EQU            	(DIVSL - 0X6080) % 0X40 + 0xC0		; Bank 0
_DIVSH_0#sh	EQU            	(DIVSH - 0X6080) % 0X40 + 0xC0		; Bank 0
_DIVQL_0#sh	EQU            	(DIVQL - 0X6080) % 0X40 + 0xC0		; Bank 0
_DIVQM_0#sh	EQU            	(DIVQM - 0X6080) % 0X40 + 0xC0		; Bank 0
_DIVRL_0#sh	EQU            	(DIVRL - 0X6080) % 0X40 + 0xC0		; Bank 0
_DIVRH_0#sh	EQU            	(DIVRH - 0X6080) % 0X40 + 0xC0		; Bank 0
_DIVC_0#sh	EQU            	(DIVC - 0X6080) % 0X40 + 0xC0		; Bank 0
_DIVEU_0#sh	EQU            	(DIVEU - 0X6080) % 0X40 + 0xC0		; Bank 0
_DIVEH_0#sh	EQU            	(DIVEH - 0X6080) % 0X40 + 0xC0		; Bank 0
_FRAH_0#sh	EQU            	(FRAH - 0X6080) % 0X40 + 0xC0		; Bank 0
_FRAL_0#sh	EQU            	(FRAL - 0X6080) % 0X40 + 0xC0		; Bank 0
	_DESC          	clear_ram,0X0,0X0
clear_ram#	CSEG           
_clear_ram
; /*********************************************************
; *Copyright (C), 2021, Shanghai Eastsoft Microelectronics Co., Ltd.
; *文件名:    siic.c
; *作  者:    AE Team
; *版  本:    v1.0，编译于iDesigner(v4.2.3.177) + 工具链HRCC(v1.2.0.119)
; *日  期:    2021/3/18
; *描  述:    I2C从机高速传输例程
;             1.本例程使用编译器优化的方法来实现I2C的高速传输，例程中主机写一个数据给
; 			从机，再读回两个数据，从机将接收到的数据以原码和反码的形式发回给主机。
; 			2.使用这种方法实现I2C传输时需要做到：
; 				A.使用向量中断，尽可能将I2C的中断优先级放在最高位；
; 				B.编译之前需要设置编译器，在“项目”菜单->“编译”->“IIC slave high speed mode”选择“true”，
; 										  在“项目”菜单->“编译”->“Support interrupt vectors”选择“true”；
; 				C.用户在处理完数据，写数据到I2CTB寄存器里面后需要软件释放SCL，即“I2CTE = 1”，主机才能读数据；
; 				D.当用户传输速度大于400KHz时，建议除能I2C滤波功能，且系统时钟不低于32MHz。
; *备  注:   本软件仅供学习和演示使用，对用户直接引用代码所带来的风险或后果不承担任何法律责任。
; **********************************************************/
; #include <HIC.h>
; sbit  I2C_Restart;
; unsigned char I2CRB_REG;
; unsigned char I2CTB_REG;
; /*********************************************************
; 函数名: void clear_ram(void)
; 描  述: RAM中数据全部清零
; 输入值: 无
; 输出值: 无
; 返回值: 无 
; **********************************************************/  
; void clear_ram(void) 
; {
#line 33	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;     __asm 
	CLR            	BKSR
; ITemplate_LABEL
;-----------Embedded Asm--------------
	 
#line 35 C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c
         CLR   IAAL;
#line 36 C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c
         CLR   IAAH;
#line 37 C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c
         CLR   IAD;
#line 38 C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c
         INC   IAAL,1;
#line 39 C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c
         JBS   PSW,C
#line 40 C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c
         GOTO  $-3;
#line 41 C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c
         INC   IAAH,1;
#line 42 C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c
         JBS   IAAH,2
#line 43 C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c
         GOTO  $-6;
#line 44 C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c
    
;-------------------------------------
;     { 
;          CLR   IAAL;
;          CLR   IAAH;
;          CLR   IAD;
;          INC   IAAL,1;
;          JBS   PSW,C
;          GOTO  $-3;
;          INC   IAAH,1;
;          JBS   IAAH,2
;          GOTO  $-6;
;     } 
#line 45	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; }
;   45:(       RET,            ,            ,          )

; ITemplate_RET
	RET            			; Bank 0		; ShBank 0
	_DESC          	Init_i2c,0X0,0X0
Init_i2c#	CSEG           
_Init_i2c
; /*********************************************************
; 函数名: void delay(void)
; 描  述: 简单延时函数delay
; 输入值: 无
; 输出值: 无
; 返回值: 无 
; **********************************************************/
; void delay(void)
; {
; 	unsigned char i = 50;
; 	while(i--);
; }
; /*********************************************************
; 函数名: void Init_i2c(void)
; 描  述:  I2CS模块初始化
; 输入值: 无
; 输出值: 无
; 返回值: 无 
; **********************************************************/
; void Init_i2c(void)        
; {
; 	{
#line 70	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 		ANSL = 0xFF;        //选择对应端口为数字IO功能
	CLR            	BKSR
;   70:(    ASGN_1,        255 ,            ,      ANSL)

; ITemplate_ASGN1_4_R
	MOVI           	0xff
	MOVA           	_ANSL_0
#line 71	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 		ANSH = 0xFF;
;   71:(    ASGN_1,        255 ,            ,      ANSH)

; ITemplate_ASGN1_4_R
	MOVI           	0xff
	MOVA           	_ANSH_0
#line 72	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 		PAT = 0x00;         //所有IO设为输出低电平
;   72:(    ASGN_1,          0 ,            ,       PAT)

; ITemplate_CLR1_4_TMP
	CLR            	_PAT_0
#line 73	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 		PBT = 0x00;
;   73:(    ASGN_1,          0 ,            ,       PBT)

; ITemplate_CLR1_4_TMP
	CLR            	_PBT_0
#line 74	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 		PCT = 0x00;
;   74:(    ASGN_1,          0 ,            ,       PCT)

; ITemplate_CLR1_4_TMP
	CLR            	_PCT_0
#line 75	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 		PA = 0x00;
;   75:(    ASGN_1,          0 ,            ,        PA)

; ITemplate_CLR1_4_TMP
	CLR            	_PA_0
#line 76	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 		PB = 0x00;
;   76:(    ASGN_1,          0 ,            ,        PB)

; ITemplate_CLR1_4_TMP
	CLR            	_PB_0
#line 77	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 		PC = 0x00;
;   77:(    ASGN_1,          0 ,            ,        PC)

; ITemplate_CLR1_4_TMP
	CLR            	_PC_0
#line 79	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 		PBT0 = 1;					//I2C_SDA,输入
;   79:(    ASGN_0,          1 ,            ,      PBT0)

; ITemplate_SET_0_TMP
	BSS            	(_PBT0_0)/8,	(_PBT0_0)%8
#line 80	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 		PBT1 = 0;					//I2C_SCL,输出
;   80:(    ASGN_0,          0 ,            ,      PBT1)

; ITemplate_CLR_0_TMP
	BCC            	(_PBT1_0)/8,	(_PBT1_0)%8
; 	}
#line 83	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 	I2C_Restart = 0;		//发送源码或反码标志
;   83:(    ASGN_0,          0 ,            ,I2C_Restart)

; ITemplate_CLR_0_TMP
	BCC            	((_I2C_Restart)/8) & 0X7F,	(_I2C_Restart)%8		; Bank 0
#line 84	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 	I2CRST = 1;				//复位I2C
;   84:(    ASGN_0,          1 ,            ,    I2CRST)

; ITemplate_SET_0_TMP
	BSS            	BKSR,	0x4
	BSS            	(_I2CRST_0#sh)/8,	(_I2CRST_0#sh)%8		; ShBank 1
#line 85	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 	while(I2CRST);
;   85:(     LABEL,    #L20365 ,            ,          )

; ITemplate_LABEL
#L20365
;   85:(     JNZ_0,     I2CRST ,            ,   #L20365)

; ITemplate_JNZ_0
	JBC            	(_I2CRST_0#sh)/8,	(_I2CRST_0#sh)%8		; ShBank 1
	GOTO           	#L20365
#line 86	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 	I2CX16 = 0x0;				//采样滤波，当传输速度大于400KHz时，建议关闭采样滤波
;   86:(    ASGN_1,          0 ,            ,    I2CX16)

; ITemplate_CLR1_4_TMP
	CLR            	_I2CX16_0#sh		; ShBank 1
#line 87	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 	I2CSA = 0x2D<<1;			//从机地址0x2D
;   87:(    ASGN_1,         90 ,            ,     I2CSA)

; ITemplate_ASGN1_4_R
	MOVI           	0x5a
	MOVA           	_I2CSA_0#sh		; ShBank 1
#line 88	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 	I2CC = 0xE1;		//使能I2C端口，开漏，内部弱上拉
;   88:(    ASGN_1,        225 ,            ,      I2CC)

; ITemplate_ASGN1_4_R
	MOVI           	0xe1
	MOVA           	_I2CC_0#sh		; ShBank 1
#line 89	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 	I2CIEC = 0x0B;	//使能“起始位+从地址匹配+发送应答”中断使能，结束位中断使能
;   89:(    ASGN_1,         11 ,            ,    I2CIEC)

; ITemplate_ASGN1_4_R
	MOVI           	0xb
	MOVA           	_I2CIEC_0#sh		; ShBank 1
#line 90	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 	I2CIE = 1;				//开启I2C总中断
;   90:(    ASGN_0,          1 ,            ,     I2CIE)

; ITemplate_SET_0_TMP
	BSS            	(_I2CIE_0)/8,	(_I2CIE_0)%8
#line 91	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; }
;   91:(       RET,            ,            ,          )

; ITemplate_RET
	BCC            	BKSR,	0x4
	RET            			; Bank 0		; ShBank 0
	_DESC          	main,0X0,0X0,clear_ram,Init_i2c
main#	CSEG           
_main
; /*********************************************************
; 函数名: void main()
; 描  述: 主函数
; 输入值: 无
; 输出值: 无 
; 返回值: 无  
; **********************************************************/
; void main(void)
; {
#line 103	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 	clear_ram();
	CLR            	BKSR
;  103:(      CALL, (clear_ram.0) ,            ,          )

; ITemplate_CALL
	SEGMENTSEL     	_clear_ram
	CALL           	_clear_ram		; Bank 0		; ShBank 0
	SEGMENTSEL     	$
#line 104	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;     Init_i2c();
;  104:(      CALL, (Init_i2c.0) ,            ,          )

; ITemplate_CALL
	SEGMENTSEL     	_Init_i2c
	CALL           	_Init_i2c		; Bank 0		; ShBank 0
	SEGMENTSEL     	$
#line 105	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 	INTG = 0b11000111;    //使能全局中断，设置向量中断
;  105:(    ASGN_1,        199 ,            ,      INTG)

; ITemplate_ASGN1_4_R
	MOVI           	0xc7
	MOVA           	_INTG_0
#line 106	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 	INTP = 0b01000000;	  //中断优先级设置,IG6最高
;  106:(    ASGN_1,         64 ,            ,      INTP)

; ITemplate_ASGN1_4_R
	MOVI           	0x40
	MOVA           	_INTP_0
; 	
#line 108	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;     while(1)
;  108:(     LABEL,    #L20423 ,            ,          )

; ITemplate_LABEL
#L20423
;     {
;         ;
#line 111	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;     }
;  111:(       JMP,            ,            ,   #L20423)

; ITemplate_JMP
	GOTO           	#L20423
	_DESC          	##IG6_INT,0X0,0X0
; interrupt fun entry
INT_ENTRY_H_0XC	CSEG           	0XC
	PUSH           	
	AJMP           	_Entry0xc
IG6_INT#	CSEG           
_Entry0xc
	BSS            	BKSR,	0x4
	JBS            	I2CIFC,	0x0
	AJMP           	_INT_ENTRY_0XC
	JBS            	I2CSA,	0x0
	AJMP           	_INT_ENTRY_0XC
	BCC            	I2CC,	0x7
#INCLUDE       	<LIB_INT2.inc>
; ITemplate_InterruptVecHead
_INT_ENTRY_0XC
	SEGMENTSEL     	$
	CLR            	BKSR
	MOV            	IAAL,	0x0
	MOVA           	(SAVED_FSR) & 0X7F		; Bank 0
	MOV            	IAAH,	0x0
	MOVA           	(SAVED_FSR+0x1) & 0X7F		; Bank 0
	MOV            	(MUL_TEMP) & 0X7F,	0x0		; Bank 0
	MOVA           	(MUL_TEMP_INT) & 0X7F		; Bank 0
	MOV            	(MUL_TEMP+0x1) & 0X7F,	0x0		; Bank 0
	MOVA           	(MUL_TEMP_INT+0x1) & 0X7F		; Bank 0
_IG6_INT
; }
; /*********************************************************
; 函数名: void IG6_INT(void) interrupt_high  0x000C
; 描  述: IIC中断服务程序
; 输入值: 无
; 输出值: 无
; 返回值: 无 
; **********************************************************/ 
; void IG6_INT(void) interrupt_high  0x000C
; {
#line 123	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 	if(I2CIF && I2CIE) 
;  123:(      JZ_0,      I2CIF ,            ,   #L20431)

; ITemplate_JZ_0
	JBS            	(_I2CIF_0)/8,	(_I2CIF_0)%8
	GOTO           	#L20431
;  123:(      JZ_0,      I2CIE ,            ,   #L20431)

; ITemplate_JZ_0
	JBS            	(_I2CIE_0)/8,	(_I2CIE_0)%8
	GOTO           	#L20431
;     {
#line 125	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;         if(I2CSRIE && I2CSRIF)/*收到起始位+地址匹配+发送应答位中断*/
;  125:(      JZ_0,    I2CSRIE ,            ,   #L20437)

; ITemplate_JZ_0
	BSS            	BKSR,	0x4
	JBS            	(_I2CSRIE_0#sh)/8,	(_I2CSRIE_0#sh)%8		; ShBank 1
	GOTO           	#L20437
;  125:(      JZ_0,    I2CSRIF ,            ,   #L20437)

; ITemplate_JZ_0
	JBS            	(_I2CSRIF_0#sh)/8,	(_I2CSRIF_0#sh)%8		; ShBank 1
	GOTO           	#L20437
;         {
#line 127	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;             I2CSRIF = 0;               //清I2C起始位+地址匹配+发送应答位标志位            
;  127:(    ASGN_0,          0 ,            ,   I2CSRIF)

; ITemplate_CLR_0_TMP
	BCC            	(_I2CSRIF_0#sh)/8,	(_I2CSRIF_0#sh)%8		; ShBank 1
#line 128	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;             if(I2CRW) /*主机读*/
;  128:(      JZ_0,      I2CRW ,            ,   #L20449)

; ITemplate_JZ_0
	JBS            	(_I2CRW_0#sh)/8,	(_I2CRW_0#sh)%8		; ShBank 1
	GOTO           	#L20449
;             {		
;                 //I2CRBIE = 0;           //I2C接收中断禁止
#line 131	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;                 I2CTBIE = 1;           //I2C发送中断使能
;  131:(    ASGN_0,          1 ,            ,   I2CTBIE)

; ITemplate_SET_0_TMP
	BSS            	(_I2CTBIE_0#sh)/8,	(_I2CTBIE_0#sh)%8		; ShBank 1
#line 132	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;                 I2C_Restart = 1;
;  132:(    ASGN_0,          1 ,            ,I2C_Restart)

; ITemplate_SET_0_TMP
	BSS            	((_I2C_Restart)/8) & 0X7F,	(_I2C_Restart)%8		; Bank 0
#line 133	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;             }
;  133:(       JMP,            ,            ,   #L20431)

; ITemplate_JMP
	GOTO           	#L20431
#line 134	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;             else /*主机写*/
;  134:(     LABEL,    #L20449 ,            ,          )

; ITemplate_LABEL
#L20449
;             {	
;                 //I2CRBIE = 1;           //I2C接收中断使能
#line 137	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;                 I2CTBIE = 0;           //I2C发送中断禁止     
;  137:(    ASGN_0,          0 ,            ,   I2CTBIE)

; ITemplate_CLR_0_TMP
	BCC            	(_I2CTBIE_0#sh)/8,	(_I2CTBIE_0#sh)%8		; ShBank 1
;             }     
#line 139	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;         }
;  139:(       JMP,            ,            ,   #L20431)

; ITemplate_JMP
	GOTO           	#L20431
; 		
#line 141	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;         else if(I2CRBIE && I2CRBIF)/*I2C接收缓冲器有接收数据*/
;  141:(     LABEL,    #L20437 ,            ,          )

; ITemplate_LABEL
#L20437
;  141:(      JZ_0,    I2CRBIE ,            ,   #L20470)

; ITemplate_JZ_0
	JBS            	(_I2CRBIE_0#sh)/8,	(_I2CRBIE_0#sh)%8		; ShBank 1
	GOTO           	#L20470
;  141:(      JZ_0,    I2CRBIF ,            ,   #L20470)

; ITemplate_JZ_0
	JBS            	(_I2CRBIF_0#sh)/8,	(_I2CRBIF_0#sh)%8		; ShBank 1
	GOTO           	#L20470
;         {
#line 143	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;             I2CRB_REG = I2CRB;        //读接收缓冲器，硬件清接收中断标志     
;  143:(    ASGN_1,      I2CRB ,            , I2CRB_REG)

; ITemplate_ASGN1_4_R
	MOV            	_I2CRB_0#sh,	0x0		; ShBank 1
	SECTION        	0x1
	MOVA           	(_I2CRB_REG) & 0X7F		; Bank 1
#line 144	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;         }
;  144:(       JMP,            ,            ,   #L20431)

; ITemplate_JMP
	GOTO           	#L20431
; 		
#line 146	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;         else if(I2CTBIE && I2CTBIF)/*I2C发送缓冲器未满中断*/
;  146:(     LABEL,    #L20470 ,            ,          )

; ITemplate_LABEL
#L20470
;  146:(      JZ_0,    I2CTBIE ,            ,   #L20482)

; ITemplate_JZ_0
	JBS            	(_I2CTBIE_0#sh)/8,	(_I2CTBIE_0#sh)%8		; ShBank 1
	GOTO           	#L20482
;  146:(      JZ_0,    I2CTBIF ,            ,   #L20482)

; ITemplate_JZ_0
	JBS            	(_I2CTBIF_0#sh)/8,	(_I2CTBIF_0#sh)%8		; ShBank 1
	GOTO           	#L20482
;         {
#line 148	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 			I2CTBIF = 0;
;  148:(    ASGN_0,          0 ,            ,   I2CTBIF)

; ITemplate_CLR_0_TMP
	BCC            	(_I2CTBIF_0#sh)/8,	(_I2CTBIF_0#sh)%8		; ShBank 1
#line 149	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;             if(I2C_Restart)
;  149:(      JZ_0, I2C_Restart ,            ,   #L20494)

; ITemplate_JZ_0
	JBS            	((_I2C_Restart)/8) & 0X7F,	(_I2C_Restart)%8		; Bank 0
	GOTO           	#L20494
;             {	                       
#line 151	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;                 I2CTB = I2CRB_REG;   //写原码至发送缓冲器
;  151:(    ASGN_1,  I2CRB_REG ,            ,     I2CTB)

; ITemplate_ASGN1_4_R
	SECTION        	0x1
	MOV            	(_I2CRB_REG) & 0X7F,	0x0		; Bank 1
	MOVA           	_I2CTB_0#sh		; ShBank 1
#line 152	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 				I2CTE = 1; 
;  152:(    ASGN_0,          1 ,            ,     I2CTE)

; ITemplate_SET_0_TMP
	BSS            	(_I2CTE_0#sh)/8,	(_I2CTE_0#sh)%8		; ShBank 1
#line 153	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;                 I2C_Restart = 0;
;  153:(    ASGN_0,          0 ,            ,I2C_Restart)

; ITemplate_CLR_0_TMP
	SECTION        	0x0
	BCC            	((_I2C_Restart)/8) & 0X7F,	(_I2C_Restart)%8		; Bank 0
#line 154	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;             }
;  154:(       JMP,            ,            ,   #L20431)

; ITemplate_JMP
	GOTO           	#L20431
#line 155	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;             else
;  155:(     LABEL,    #L20494 ,            ,          )

; ITemplate_LABEL
#L20494
;             {	
#line 157	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;                 I2CTB_REG = ~I2CRB_REG;
;  157:(    BCOM_1,  I2CRB_REG ,            , I2CTB_REG)

; ITemplate_BCOM1_4
	SECTION        	0x1
	COM            	(_I2CRB_REG) & 0X7F,	0x0		; Bank 1
	MOVA           	(_I2CTB_REG) & 0X7F		; Bank 1
#line 158	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;                 I2CTB = I2CTB_REG;   //写反码至发送缓冲器 
;  158:(    ASGN_1,  I2CTB_REG ,            ,     I2CTB)

; ITemplate_ASGN1_4_R
	MOV            	(_I2CTB_REG) & 0X7F,	0x0		; Bank 1
	MOVA           	_I2CTB_0#sh		; ShBank 1
#line 159	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 				I2CTE = 1; 
;  159:(    ASGN_0,          1 ,            ,     I2CTE)

; ITemplate_SET_0_TMP
	BSS            	(_I2CTE_0#sh)/8,	(_I2CTE_0#sh)%8		; ShBank 1
;             } 
#line 161	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;         }
;  161:(       JMP,            ,            ,   #L20431)

; ITemplate_JMP
	GOTO           	#L20431
; 		
#line 163	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 		else if((I2CNAIE && I2CNAIF)||(I2CSPIE && I2CSPIF))/*接收NACK和停止位中断*/
;  163:(     LABEL,    #L20482 ,            ,          )

; ITemplate_LABEL
#L20482
;  163:(      JZ_0,    I2CNAIE ,            ,   #L20537)

; ITemplate_JZ_0
	JBS            	(_I2CNAIE_0#sh)/8,	(_I2CNAIE_0#sh)%8		; ShBank 1
	GOTO           	#L20537
;  163:(     JNZ_0,    I2CNAIF ,            ,   #L20535)

; ITemplate_JNZ_0
	JBC            	(_I2CNAIF_0#sh)/8,	(_I2CNAIF_0#sh)%8		; ShBank 1
	GOTO           	#L20535
;  163:(     LABEL,    #L20537 ,            ,          )

; ITemplate_LABEL
#L20537
;  163:(      JZ_0,    I2CSPIE ,            ,   #L20431)

; ITemplate_JZ_0
	JBS            	(_I2CSPIE_0#sh)/8,	(_I2CSPIE_0#sh)%8		; ShBank 1
	GOTO           	#L20431
;  163:(      JZ_0,    I2CSPIF ,            ,   #L20431)

; ITemplate_JZ_0
	JBS            	(_I2CSPIF_0#sh)/8,	(_I2CSPIF_0#sh)%8		; ShBank 1
	GOTO           	#L20431
;  163:(     LABEL,    #L20535 ,            ,          )

; ITemplate_LABEL
#L20535
;         {
#line 165	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 			PCT1 = 0;
;  165:(    ASGN_0,          0 ,            ,      PCT1)

; ITemplate_CLR_0_TMP
	BCC            	(_PCT1_0)/8,	(_PCT1_0)%8
#line 166	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 			PC1 = 0;
;  166:(    ASGN_0,          0 ,            ,       PC1)

; ITemplate_CLR_0_TMP
	BCC            	(_PC1_0)/8,	(_PC1_0)%8
; 			
#line 168	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 			I2C_Restart = 0;	    //发送原码或反码标志
;  168:(    ASGN_0,          0 ,            ,I2C_Restart)

; ITemplate_CLR_0_TMP
	BCC            	((_I2C_Restart)/8) & 0X7F,	(_I2C_Restart)%8		; Bank 0
#line 169	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;             I2CRST = 1;				//I2C模块复位使能
;  169:(    ASGN_0,          1 ,            ,    I2CRST)

; ITemplate_SET_0_TMP
	BSS            	(_I2CRST_0#sh)/8,	(_I2CRST_0#sh)%8		; ShBank 1
#line 170	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;             while(I2CRST);          //I2C模块复位完成
;  170:(     LABEL,    #L20568 ,            ,          )

; ITemplate_LABEL
#L20568
;  170:(     JNZ_0,     I2CRST ,            ,   #L20568)

; ITemplate_JNZ_0
	JBC            	(_I2CRST_0#sh)/8,	(_I2CRST_0#sh)%8		; ShBank 1
	GOTO           	#L20568
#line 171	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;             I2CX16 = 0x0;				//采样滤波，速度大于400KHz时建议关闭
;  171:(    ASGN_1,          0 ,            ,    I2CX16)

; ITemplate_CLR1_4_TMP
	CLR            	_I2CX16_0#sh		; ShBank 1
#line 172	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 			I2CSA = 0x2D<<1;			//重置从机地址
;  172:(    ASGN_1,         90 ,            ,     I2CSA)

; ITemplate_ASGN1_4_R
	MOVI           	0x5a
	MOVA           	_I2CSA_0#sh		; ShBank 1
#line 173	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 			I2CC = 0xE1;      //使能I2C端口，开漏，内部弱上拉
;  173:(    ASGN_1,        225 ,            ,      I2CC)

; ITemplate_ASGN1_4_R
	MOVI           	0xe1
	MOVA           	_I2CC_0#sh		; ShBank 1
#line 174	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 			I2CIEC = 0x0B;    //使能“起始位+从地址匹配+发送应答”中断使能，结束位中断使能
;  174:(    ASGN_1,         11 ,            ,    I2CIEC)

; ITemplate_ASGN1_4_R
	MOVI           	0xb
	MOVA           	_I2CIEC_0#sh		; ShBank 1
#line 175	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 			I2CIE = 1;              //开启I2C总中断
;  175:(    ASGN_0,          1 ,            ,     I2CIE)

; ITemplate_SET_0_TMP
	BSS            	(_I2CIE_0)/8,	(_I2CIE_0)%8
;         }
#line 177	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ; 	}
;  177:(     LABEL,    #L20431 ,            ,          )

; ITemplate_LABEL
#L20431
#line 178	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;      I2CIF = 0;
;  178:(    ASGN_0,          0 ,            ,     I2CIF)

; ITemplate_CLR_0_TMP
	BCC            	(_I2CIF_0)/8,	(_I2CIF_0)%8
#line 179	C:\Users\lisq\Desktop\AN135_Examples_ES7P169C\IIC\iic_slave_highspeed\c_siic\siic.c ;  }
;  179:(     RET_I,            ,            ,          )

; ITemplate_RET_I
	SECTION        	0x0
	BCC            	BKSR,	0x4
	GOTO           	_INT_RESTORE_0XC		; Bank 0		; ShBank 0
; interrupt fun restore
; ITemplate_InterruptVecTail
_INT_RESTORE_0XC
	MOV            	(MUL_TEMP_INT) & 0X7F,	0x0		; Bank 0
	MOVA           	(MUL_TEMP) & 0X7F		; Bank 0
	MOVA           	MULA
	MOV            	(MUL_TEMP_INT+0x1) & 0X7F,	0x0		; Bank 0
	MOVA           	(MUL_TEMP+0x1) & 0X7F		; Bank 0
	MOVA           	MULB
	MOV            	(SAVED_FSR+0x1) & 0X7F,	0x0		; Bank 0
	MOVA           	IAAH
	MOV            	(SAVED_FSR) & 0X7F,	0x0		; Bank 0
	MOVA           	IAAL
	POP            	
	RETIE          	
#INCLUDE       	<LIB_RESTORE.inc>

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_IIC_iic_slave_highspeed_c_siic_siic_c_STATIC0	PSECT	FLAG=0X1088,ADDR=0X7FCEE
_I2CIE_0	RSEG           	0X1		; Bank 0

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_IIC_iic_slave_highspeed_c_siic_siic_c_STATIC1	PSECT	FLAG=0X1088,ADDR=0X7FCF6
_I2CIF_0	RSEG           	0X1		; Bank 0

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_IIC_iic_slave_highspeed_c_siic_siic_c_STATIC2	PSECT	FLAG=0X1088,ADDR=0X7FD51
_PC1_0	RSEG           	0X1		; Bank 0

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_IIC_iic_slave_highspeed_c_siic_siic_c_STATIC3	PSECT	FLAG=0X1088,ADDR=0X7FD70
_PBT0_0	RSEG           	0X1		; Bank 0

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_IIC_iic_slave_highspeed_c_siic_siic_c_STATIC4	PSECT	FLAG=0X1088,ADDR=0X7FD71
_PBT1_0	RSEG           	0X1		; Bank 0

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_IIC_iic_slave_highspeed_c_siic_siic_c_STATIC5	PSECT	FLAG=0X1088,ADDR=0X7FD79
_PCT1_0	RSEG           	0X1		; Bank 0

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_IIC_iic_slave_highspeed_c_siic_siic_c_STATIC6	PSECT	FLAG=0X1088,ADDR=0X306D1
_I2CRST_0	RSEG           	0X1		; Bank 0

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_IIC_iic_slave_highspeed_c_siic_siic_c_STATIC7	PSECT	FLAG=0X1088,ADDR=0X306D7
_I2CTE_0	RSEG           	0X1		; Bank 0

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_IIC_iic_slave_highspeed_c_siic_siic_c_STATIC8	PSECT	FLAG=0X1088,ADDR=0X306D8
_I2CRW_0	RSEG           	0X1		; Bank 0

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_IIC_iic_slave_highspeed_c_siic_siic_c_STATIC9	PSECT	FLAG=0X1088,ADDR=0X306F0
_I2CSRIE_0	RSEG           	0X1		; Bank 0

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_IIC_iic_slave_highspeed_c_siic_siic_c_STATIC10	PSECT	FLAG=0X1088,ADDR=0X306F1
_I2CSPIE_0	RSEG           	0X1		; Bank 0

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_IIC_iic_slave_highspeed_c_siic_siic_c_STATIC11	PSECT	FLAG=0X1088,ADDR=0X306F2
_I2CTBIE_0	RSEG           	0X1		; Bank 0

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_IIC_iic_slave_highspeed_c_siic_siic_c_STATIC12	PSECT	FLAG=0X1088,ADDR=0X306F3
_I2CRBIE_0	RSEG           	0X1		; Bank 0

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_IIC_iic_slave_highspeed_c_siic_siic_c_STATIC13	PSECT	FLAG=0X1088,ADDR=0X306F6
_I2CNAIE_0	RSEG           	0X1		; Bank 0

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_IIC_iic_slave_highspeed_c_siic_siic_c_STATIC14	PSECT	FLAG=0X1088,ADDR=0X306F8
_I2CSRIF_0	RSEG           	0X1		; Bank 0

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_IIC_iic_slave_highspeed_c_siic_siic_c_STATIC15	PSECT	FLAG=0X1088,ADDR=0X306F9
_I2CSPIF_0	RSEG           	0X1		; Bank 0

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_IIC_iic_slave_highspeed_c_siic_siic_c_STATIC16	PSECT	FLAG=0X1088,ADDR=0X306FA
_I2CTBIF_0	RSEG           	0X1		; Bank 0

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_IIC_iic_slave_highspeed_c_siic_siic_c_STATIC17	PSECT	FLAG=0X1088,ADDR=0X306FB
_I2CRBIF_0	RSEG           	0X1		; Bank 0

SECTION8C__Users_lisq_Desktop_AN135_Examples_ES7P169C_IIC_iic_slave_highspeed_c_siic_siic_c_STATIC18	PSECT	FLAG=0X1088,ADDR=0X306FE
_I2CNAIF_0	RSEG           	0X1		; Bank 0

SECTION0C__Users_lisq_Desktop_AN135_Examples_ES7P169C_IIC_iic_slave_highspeed_c_siic_siic_c_STATIC19	PSECT	FLAG=0x88
_I2C_Restart	RSEG           	0X1		; Bank 0

SECTION1C__Users_lisq_Desktop_AN135_Examples_ES7P169C_IIC_iic_slave_highspeed_c_siic_siic_c_STATIC	UNINTIAL       	0		; Bank 0
	ORG            	0X80		; Bank 0
_I2CRB_REG	RSEG           	0X1		; Bank 0
	ORG            	0X81		; Bank 0
_I2CTB_REG	RSEG           	0X1		; Bank 0

SECTION8D__Program_Files__x86__HRCC_Tools_HRCC_v1_2_0_119_tools_INCLUDE_ES7P169C_h_STATIC	UNINTIAL       	0		; Bank 0
	ORG            	0XFF8D		; Bank 0
_ANSH_0	RSEG           	0X1		; Bank 0
	ORG            	0XFF96		; Bank 0
_INTG_0	RSEG           	0X1		; Bank 0
	ORG            	0XFF97		; Bank 0
_INTP_0	RSEG           	0X1		; Bank 0
	ORG            	0XFFA8		; Bank 0
_PA_0	RSEG           	0X1		; Bank 0
	ORG            	0XFFA9		; Bank 0
_PB_0	RSEG           	0X1		; Bank 0
	ORG            	0XFFAA		; Bank 0
_PC_0	RSEG           	0X1		; Bank 0
	ORG            	0XFFAD		; Bank 0
_PAT_0	RSEG           	0X1		; Bank 0
	ORG            	0XFFAE		; Bank 0
_PBT_0	RSEG           	0X1		; Bank 0
	ORG            	0XFFAF		; Bank 0
_PCT_0	RSEG           	0X1		; Bank 0
	ORG            	0XFFBC		; Bank 0
_ANSL_0	RSEG           	0X1		; Bank 0
	ORG            	0X60D9		; Bank 0
_I2CX16_0	RSEG           	0X1		; Bank 0
	ORG            	0X60DA		; Bank 0
_I2CC_0	RSEG           	0X1		; Bank 0
	ORG            	0X60DB		; Bank 0
_I2CSA_0	RSEG           	0X1		; Bank 0
	ORG            	0X60DC		; Bank 0
_I2CTB_0	RSEG           	0X1		; Bank 0
	ORG            	0X60DD		; Bank 0
_I2CRB_0	RSEG           	0X1		; Bank 0
	ORG            	0X60DE		; Bank 0
_I2CIEC_0	RSEG           	0X1		; Bank 0
	END
