📄 i2c.lst
字号:
A51 MACRO ASSEMBLER I2C 09/13/2009 23:31:56 PAGE 1
MACRO ASSEMBLER A51 V7.09
OBJECT MODULE PLACED IN I2C.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE I2C.SRC SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ; I2C.SRC generated from: I2C.c
2 ; COMPILER INVOKED BY:
3 ; C:\Keil\C51\BIN\C51.EXE I2C.c BROWSE DEBUG OBJECTEXTEND
4
5 $nomod51
6
7 NAME I2C
8
0080 9 P0 DATA 080H
0090 10 P1 DATA 090H
00A0 11 P2 DATA 0A0H
00B0 12 P3 DATA 0B0H
00B4 13 T0 BIT 0B0H.4
00D6 14 AC BIT 0D0H.6
00B5 15 T1 BIT 0B0H.5
0090 16 T2 BIT 090H.0
00AF 17 EA BIT 0A8H.7
00A8 18 IE DATA 0A8H
00CE 19 EXF2 BIT 0C8H.6
00B7 20 RD BIT 0B0H.7
00AC 21 ES BIT 0A8H.4
00B8 22 IP DATA 0B8H
0098 23 RI BIT 098H.0
00B2 24 INT0 BIT 0B0H.2
00D7 25 CY BIT 0D0H.7
0099 26 TI BIT 098H.1
00B3 27 INT1 BIT 0B0H.3
00CB 28 RCAP2H DATA 0CBH
00BC 29 PS BIT 0B8H.4
0081 30 SP DATA 081H
0091 31 T2EX BIT 090H.1
00D2 32 OV BIT 0D0H.2
00CA 33 RCAP2L DATA 0CAH
00C9 34 C_T2 BIT 0C8H.1
00B6 35 WR BIT 0B0H.6
00CD 36 RCLK BIT 0C8H.5
00CC 37 TCLK BIT 0C8H.4
0099 38 SBUF DATA 099H
0087 39 PCON DATA 087H
0098 40 SCON DATA 098H
0089 41 TMOD DATA 089H
0088 42 TCON DATA 088H
0089 43 IE0 BIT 088H.1
008B 44 IE1 BIT 088H.3
00F0 45 B DATA 0F0H
00C8 46 CP_RL2 BIT 0C8H.0
00E0 47 ACC DATA 0E0H
00A9 48 ET0 BIT 0A8H.1
00AB 49 ET1 BIT 0A8H.3
008D 50 TF0 BIT 088H.5
00AD 51 ET2 BIT 0A8H.5
008F 52 TF1 BIT 088H.7
00CF 53 TF2 BIT 0C8H.7
009A 54 RB8 BIT 098H.2
008C 55 TH0 DATA 08CH
00A8 56 EX0 BIT 0A8H.0
0088 57 IT0 BIT 088H.0
008D 58 TH1 DATA 08DH
A51 MACRO ASSEMBLER I2C 09/13/2009 23:31:56 PAGE 2
009B 59 TB8 BIT 098H.3
00AA 60 EX1 BIT 0A8H.2
008A 61 IT1 BIT 088H.2
00CD 62 TH2 DATA 0CDH
00D0 63 P BIT 0D0H.0
009F 64 SM0 BIT 098H.7
008A 65 TL0 DATA 08AH
009E 66 SM1 BIT 098H.6
008B 67 TL1 DATA 08BH
009D 68 SM2 BIT 098H.5
00CC 69 TL2 DATA 0CCH
00B9 70 PT0 BIT 0B8H.1
00BB 71 PT1 BIT 0B8H.3
00D3 72 RS0 BIT 0D0H.3
00BD 73 PT2 BIT 0B8H.5
008C 74 TR0 BIT 088H.4
00D4 75 RS1 BIT 0D0H.4
008E 76 TR1 BIT 088H.6
00A1 77 SDA BIT 0A0H.1
00CA 78 TR2 BIT 0C8H.2
00B8 79 PX0 BIT 0B8H.0
00BA 80 PX1 BIT 0B8H.2
0083 81 DPH DATA 083H
0082 82 DPL DATA 082H
00A0 83 SCL BIT 0A0H.0
00CB 84 EXEN2 BIT 0C8H.3
009C 85 REN BIT 098H.4
00C8 86 T2CON DATA 0C8H
00B0 87 RXD BIT 0B0H.0
00B1 88 TXD BIT 0B0H.1
00D5 89 F0 BIT 0D0H.5
00D0 90 PSW DATA 0D0H
91 ?PR?Start_I2c?I2C SEGMENT CODE
92 ?PR?Stop_I2c?I2C SEGMENT CODE
93 ?PR?_SendByte?I2C SEGMENT CODE
94 ?PR?RcvByte?I2C SEGMENT CODE
95 ?PR?Ack_I2c?I2C SEGMENT CODE
96 ?BI?Ack_I2c?I2C SEGMENT BIT OVERLAYABLE
97 ?BI?I2C SEGMENT BIT
98 PUBLIC ack
99 PUBLIC ?Ack_I2c?BIT
100 PUBLIC Ack_I2c
101 PUBLIC RcvByte
102 PUBLIC _SendByte
103 PUBLIC Stop_I2c
104 PUBLIC Start_I2c
105
---- 106 RSEG ?BI?Ack_I2c?I2C
0000 107 ?Ack_I2c?BIT:
0000 108 a?444: DBIT 1
109
---- 110 RSEG ?BI?I2C
0000 111 ack: DBIT 1
112 ;
113 ; /*************************此部分为I2C总线的驱动程序*************************************/
114
115 ; #include<reg52.h>
116 ; #include <intrins.h>
117 ; #include <I2C.H>
118 ;
119 ;
120 ; #define NOP() _nop_() /* 定义空指令 */
121 ; #define _Nop() _nop_() /*定义空指令*/
122 ;
123 ;
124 ; sbit SCL=P2^0; //I2C 时钟
A51 MACRO ASSEMBLER I2C 09/13/2009 23:31:56 PAGE 3
125 ; sbit SDA=P2^1; //I2C 数据
126 ; bit ack; /*应答标志位*/
127 ;
128 ;
129 ; /*******************************************************************
130 ; 起动总线函数
131 ; 函数原型: void Start_I2c();
132 ; 功能: 启动I2C总线,即发送I2C起始条件.
133 ; ********************************************************************/
134 ; void Start_I2c()
135
---- 136 RSEG ?PR?Start_I2c?I2C
0000 137 Start_I2c:
138 ; SOURCE LINE # 23
139 ; {
140 ; SOURCE LINE # 24
141 ; SDA=1; /*发送起始条件的数据信号*/
142 ; SOURCE LINE # 25
0000 D2A1 143 SETB SDA
144 ; _Nop();
145 ; SOURCE LINE # 26
0002 00 146 NOP
147 ; SCL=1;
148 ; SOURCE LINE # 27
0003 D2A0 149 SETB SCL
150 ; _Nop(); /*起始条件建立时间大于4.7us,延时*/
151 ; SOURCE LINE # 28
0005 00 152 NOP
153 ; _Nop();
154 ; SOURCE LINE # 29
0006 00 155 NOP
156 ; _Nop();
157 ; SOURCE LINE # 30
0007 00 158 NOP
159 ; _Nop();
160 ; SOURCE LINE # 31
0008 00 161 NOP
162 ; _Nop();
163 ; SOURCE LINE # 32
0009 00 164 NOP
165 ; SDA=0; /*发送起始信号*/
166 ; SOURCE LINE # 33
000A C2A1 167 CLR SDA
168 ; _Nop(); /* 起始条件锁定时间大于4μs*/
169 ; SOURCE LINE # 34
000C 00 170 NOP
171 ; _Nop();
172 ; SOURCE LINE # 35
000D 00 173 NOP
174 ; _Nop();
175 ; SOURCE LINE # 36
000E 00 176 NOP
177 ; _Nop();
178 ; SOURCE LINE # 37
000F 00 179 NOP
180 ; _Nop();
181 ; SOURCE LINE # 38
0010 00 182 NOP
183 ; SCL=0; /*钳住I2C总线,准备发送或接收数据 */
184 ; SOURCE LINE # 39
0011 C2A0 185 CLR SCL
186 ; _Nop();
187 ; SOURCE LINE # 40
0013 00 188 NOP
189 ; _Nop();
190 ; SOURCE LINE # 41
A51 MACRO ASSEMBLER I2C 09/13/2009 23:31:56 PAGE 4
0014 00 191 NOP
192 ; }
193 ; SOURCE LINE # 42
0015 22 194 RET
195 ; END OF Start_I2c
196
197 ;
198 ; /*******************************************************************
199 ; 结束总线函数
200 ; 函数原型: void Stop_I2c();
201 ; 功能: 结束I2C总线,即发送I2C结束条件.
202 ; ********************************************************************/
203 ; void Stop_I2c()
204
---- 205 RSEG ?PR?Stop_I2c?I2C
0000 206 Stop_I2c:
207 ; SOURCE LINE # 49
208 ; {
209 ; SOURCE LINE # 50
210 ; SDA=0; /*发送结束条件的数据信号*/
211 ; SOURCE LINE # 51
0000 C2A1 212 CLR SDA
213 ; _Nop(); /*发送结束条件的时钟信号*/
214 ; SOURCE LINE # 52
0002 00 215 NOP
216 ; SCL=1; /*结束条件建立时间大于4μs*/
217 ; SOURCE LINE # 53
0003 D2A0 218 SETB SCL
219 ; _Nop();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -