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

📄 func.lst

📁 HT单片机模拟I2C通讯
💻 LST
📖 第 1 页 / 共 2 页
字号:
文件:FUNC.c       盛群编译器版本 2.86 页次1



;  26: {
  26  0000              __acsr EQU [023H]
  26  0000              __adcr EQU [022H]
  26  0000              __adrh EQU [021H]
  26  0000              __adrl EQU [020H]
  26  0000              __pwm EQU [01aH]
  26  0000              __pdc EQU [019H]
  26  0000              __pd EQU [018H]
  26  0000              __pbc EQU [015H]
  26  0000              __pb EQU [014H]
  26  0000              __pac EQU [013H]
  26  0000              __pa EQU [012H]
  26  0000              __tmrc EQU [0eH]
  26  0000              __tmr EQU [0dH]
  26  0000              __intc EQU [0bH]
  26  0000              __status EQU [0aH]
  26  0000              __tblh EQU [08H]
  26  0000              __tblp EQU [07H]
  26  0000              __pcl EQU [06H]
  26  0000              __acc EQU [05H]
  26  0000              __mp EQU [01H]
  26  0000              __iar EQU [00H]
  26  0000              @I2C_Start .SECTION 'CODE'
  26  0000              PUBLIC _I2C_Start
  26  0000              _I2C_Start PROC

;  27: 	SCL_OUT();								/*设置SCL和SDA为输出端口*/
  27  0000  3595        CLR __pbc.3

;  28: 	SDA_OUT();
  28  0001  3419        CLR __pdc.0

;  29: 	I2C_SDA = 1;
  29  0002  3018        SET [018H].0

;  30: 	I2C_SCL = 1;
  30  0003  3194        SET [014H].3

;  31: 	_delay(DLY_TIME);						/*延时*/
  31  0004  0F01        MOV A,01H
  31  0005  2000     E  CALL __DELAYX2

;  32: 	I2C_SDA = 0;
  32  0006  3418        CLR [018H].0

;  33: 	_delay(DLY_TIME);
  33  0007  0F01        MOV A,01H
  33  0008  2000     E  CALL __DELAYX2

;  34: 	I2C_SCL = 0;
  34  0009  3594        CLR [014H].3

;  35: 	_delay(DLY_TIME);
  35  000A  0F01        MOV A,01H
  35  000B  2000     E  CALL __DELAYX2
  35  000C              L1:
  35  000C  0003        RET
文件:FUNC.c       盛群编译器版本 2.86 页次2 

  35  000D              _I2C_Start ENDP

;  48: {
  48  0000              @I2C_Stop .SECTION 'CODE'
  48  0000              PUBLIC _I2C_Stop
  48  0000              _I2C_Stop PROC

;  49: 	SCL_OUT();								/*设置SCL和SDA为输出端口*/
  49  0000  3595        CLR __pbc.3
文件:FUNC.C       盛群编译器版本 2.86 页次2


;  50: 	SDA_OUT();
  50  0001  3419        CLR __pdc.0

;  51: 	I2C_SDA = 0;
  51  0002  3418        CLR [018H].0

;  52: 	I2C_SCL = 1;
  52  0003  3194        SET [014H].3

;  53: 	_delay(DLY_TIME);						/*延时*/
  53  0004  0F01        MOV A,01H
  53  0005  2000     E  CALL __DELAYX2

;  54: 	I2C_SDA = 1;
  54  0006  3018        SET [018H].0

;  55: 	_delay(DLY_TIME);
  55  0007  0F01        MOV A,01H
  55  0008  2000     E  CALL __DELAYX2

;  56: 	I2C_SCL = 0;
  56  0009  3594        CLR [014H].3

;  57: 	_delay(DLY_TIME);							/*延时50ms*/
  57  000A  0F01        MOV A,01H
  57  000B  2000     E  CALL __DELAYX2
  57  000C              L2:
  57  000C  0003        RET
  57  000D              _I2C_Stop ENDP

;  70: {
  70  0000              @I2C_Write_Bit .SECTION 'CODE'
  70  0000              PUBLIC _I2C_Write_Bit
  70  0000              _I2C_Write_Bit PROC

;  69: void I2C_Write_Bit(bit dat)
  69  0000              PUBLIC I2C_Write_Bit0
  69  0000  00          LOCAL I2C_Write_Bit0 DBIT ; dat

;  71: 	SCL_OUT();								/*设置SCL和SDA为输出端口*/
  71  0000  3595        CLR __pbc.3

;  72: 	SDA_OUT();
  72  0001  3419        CLR __pdc.0

;  73: 	I2C_SDA = dat;
  73  0002  0718        MOV A,[018H]
  73  0003  3405        CLR [05H].0
文件:FUNC.c       盛群编译器版本 2.86 页次3 

  73  0004  3C00     R  SZ I2C_Write_Bit0
  73  0005  3005        SET [05H].0
  73  0006  0098        MOV [018H],A

;  74: 	I2C_SCL = 1;
  74  0007  3194        SET [014H].3

;  75: 	_delay(DLY_TIME);
  75  0008  0F01        MOV A,01H
  75  0009  2000     E  CALL __DELAYX2

;  76: 	I2C_SCL = 0;
  76  000A  3594        CLR [014H].3

;  77: 	_delay(DLY_TIME);
  77  000B  0F01        MOV A,01H
  77  000C  2000     E  CALL __DELAYX2
  77  000D              L3:
  77  000D  0003        RET
  77  000E              _I2C_Write_Bit ENDP

;  90: {
  90  0000              @I2C_Write_Byte .SECTION 'CODE'
  90  0000              PUBLIC _I2C_Write_Byte
  90  0000              _I2C_Write_Byte PROC
文件:FUNC.C       盛群编译器版本 2.86 页次3


;  89: void I2C_Write_Byte(uint8 dat)
  89  0000              PUBLIC I2C_Write_Byte0
  89  0000  00          LOCAL I2C_Write_Byte0 DB ? ; dat

;  93: 	for(i = 0; i<8;i++)						/*发送8位数据*/
  93  0000  1F00     R  CLR CR1
  93  0001  2800     R  JMP L8
  93  0002              L5:

;  95: 		if((dat&0x80) == 0x80)
  95  0002  3800     R  SNZ I2C_Write_Byte0.7
  95  0003  2800     R  JMP L9

;  97: 			tmp = 1;
  97  0004  3000     R  SET CR2

;  98: 		}
  98  0005  2800     R  JMP L10
  98  0006              L9:

;  99: 		else if((dat&0x80) == 0x00)
  99  0006  3C00     R  SZ I2C_Write_Byte0.7
  99  0007  2800     R  JMP L11

; 101: 			tmp = 0;
 101  0008  3400     R  CLR CR2
 101  0009              L11:
 101  0009              L10:

; 103: 		I2C_Write_Bit(tmp);
 103  0009  3400     R  CLR I2C_Write_Bit0
 103  000A  3C00     R  SZ CR2
文件:FUNC.c       盛群编译器版本 2.86 页次4 

 103  000B  3000     R  SET I2C_Write_Bit0
 103  000C  2000     R  CALL _I2C_Write_Bit

; 104: 		dat <<= 1;
 104  000D  340A        CLR [0AH].0
 104  000E  1A80     R  RLC I2C_Write_Byte0
 104  000F              L6:

;  93: 	for(i = 0; i<8;i++)						/*发送8位数据*/
  93  000F  1480     R  INC CR1
  93  0010              L8:
  93  0010  0700     R  MOV A,CR1
  93  0011  0A08        SUB A,08h
  93  0012  380A        SNZ [0ah].0
  93  0013  2800     R  JMP L5
  93  0014              L4:
  93  0014  0003        RET

;  91: 	uint8 i;
  91  0001  00          LOCAL CR1 DB ? ; i

;  92: 	bit tmp;
  92  0002  00          LOCAL CR2 DBIT ; tmp
  92  0015              _I2C_Write_Byte ENDP

; 118: {
 118  0000              @I2C_Read_Bit .SECTION 'CODE'
 118  0000              PUBLIC _I2C_Read_Bit
文件:FUNC.C       盛群编译器版本 2.86 页次4

 118  0000              _I2C_Read_Bit PROC

; 120: 	SCL_OUT();								/*设置SCL和SDA为输出端口*/
 120  0000  3595        CLR __pbc.3

; 121: 	SDA_OUT();
 121  0001  3419        CLR __pdc.0

; 122: 	I2C_SDA = 1;
 122  0002  3018        SET [018H].0

; 123: 	I2C_SCL = 1;
 123  0003  3194        SET [014H].3

; 124: 	_delay(DLY_TIME);
 124  0004  0F01        MOV A,01H
 124  0005  2000     E  CALL __DELAYX2

; 125: 	SDA_IN();								/*设置SDA为输入*/
 125  0006  3019        SET __pdc.0

; 126: 	dat = I2C_SDA;
 126  0007  3400     R  CLR CR4
 126  0008  3C18        SZ [018H].0
 126  0009  3000     R  SET CR4

; 127: 	_delay(DLY_TIME);
 127  000A  0F01        MOV A,01H
 127  000B  2000     E  CALL __DELAYX2

; 128: 	I2C_SCL = 0;
文件:FUNC.c       盛群编译器版本 2.86 页次5 

 128  000C  3594        CLR [014H].3

; 129: 	return dat;
 129  000D  1F00     R  CLR b0_5
 129  000E  3C00     R  SZ CR4
 129  000F  3000     R  SET b0_5.0
 129  0010  0700     R  MOV A,b0_5
 129  0011              L13:
 129  0011  0003        RET
 129  0000  00          LOCAL b0_5 DB ?

; 119: 	bit dat;
 119  0001  00          LOCAL CR4 DBIT ; dat
 119  0012              _I2C_Read_Bit ENDP

; 141: {
 141  0000              @I2C_Read_Byte .SECTION 'CODE'
 141  0000              PUBLIC _I2C_Read_Byte
 141  0000              _I2C_Read_Byte PROC

; 144: 	data = 0;
 144  0000  1F00     R  CLR CR7

; 145: 	for(i = 0; i<8;i++)						/*发送8位数据*/
 145  0001  1F00     R  CLR CR6
 145  0002  2800     R  JMP L18
 145  0003              L15:

; 147: 		data <<= 1;
 147  0003  340A        CLR [0AH].0
 147  0004  1A80     R  RLC CR7

; 148: 		tmp = I2C_Read_Bit();
 148  0005  2000     R  CALL _I2C_Read_Bit
 148  0006  0080     R  MOV b0_6,A
 148  0007  0700     R  MOV A,b0_6
 148  0008  1F00     R  CLR b0_6
 148  0009  1085        SZ [05H]
 148  000A  3000     R  SET b0_6.0
 148  000B  3400     R  CLR CR5
文件:FUNC.C       盛群编译器版本 2.86 页次5

 148  000C  1080     R  SZ b0_6
 148  000D  3000     R  SET CR5

; 149: 		if(tmp == 0)
 149  000E  3C00     R  SZ CR5
 149  000F  2800     R  JMP L19

; 151: 			data &=0xfe;
 151  0010  3400     R  CLR CR7.0

; 152: 		}
 152  0011  2800     R  JMP L20
 152  0012              L19:

; 153: 		else if(tmp ==1)
 153  0012  3800     R  SNZ CR5
 153  0013  2800     R  JMP L21

; 155: 			data |= 0x01;
文件:FUNC.c       盛群编译器版本 2.86 页次6 

 155  0014  3000     R  SET CR7.0
 155  0015              L21:
 155  0015              L20:
 155  0015              L16:

; 145: 	for(i = 0; i<8;i++)						/*发送8位数据*/
 145  0015  1480     R  INC CR6
 145  0016              L18:
 145  0016  0700     R  MOV A,CR6
 145  0017  0A08        SUB A,08h
 145  0018  380A        SNZ [0ah].0
 145  0019  2800     R  JMP L15

; 158: 	return data;
 158  001A  0700     R  MOV A,CR7
 158  001B              L14:
 158  001B  0003        RET
 158  0000  00          LOCAL b0_6 DB ?

; 143: 	bit tmp;
 143  0001  00          LOCAL CR5 DBIT ; tmp

; 142: 	uint8 i,data;
 142  0002  00          LOCAL CR6 DB ? ; i
 142  0003  00          LOCAL CR7 DB ? ; data
 142  001C              _I2C_Read_Byte ENDP

⌨️ 快捷键说明

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