📄 routine.lst
字号:
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 1
MCS-51 Family Macro Assembler A S E M - 5 1 V 1.3
=====================================================
Source File: E:\MiCrOConTroller\Coba_M-IDE\I2CROUTINE\ROUTINE.asm
Object File: E:\MiCrOConTroller\Coba_M-IDE\I2CROUTINE\ROUTINE.hex
List File: E:\MiCrOConTroller\Coba_M-IDE\I2CROUTINE\ROUTINE.lst
Line I Addr Code Source
1:
2: ;******************************
3: ;I2C ROUTINS ***
4: ;Published By Mehdi N.Rahni ***
5: ;******************************
6:
7:
8: ;I use this code for i2c devices such as LM75,DS1307,24C256
9: ;For defining any i2c device you must only consider hardwired addressing and address inputs
10: ;So you can extend this code with limited changes
11: ;Example:
12:
13:
14: ;MOV DPTR,#125H
15: ;MOV DYTA,#79H
16: ;LCALL EEPROM_WRITE ;IN ADDRESS 125H DATA IS 79H
17:
18: ;MOV DPTR,#125H
19: ;LCALL EEPROM_READ
20: ;MOV A,DYTA ;NOW ACC IS 79H
21:
22:
23:
24:
25:
26: B 00A6 SDA EQU P2.6
27: B 00A7 SCL EQU P2.7
28: N 0050 DYTA EQU 50H
29: N 0051 ADRES EQU 51H
30:
31:
32: 0000 I2C_READ: ;reading 8 bits from i2c device
33: 0000 7F 08 MOV R7,#8
34: 0002 GFD:
35: 0002 D2 A6 SETB SDA
36: 0004 D2 A7 SETB SCL
37: 0006 A2 A6 MOV C,SDA
38: 0008 33 RLC A
39: 0009 C2 A7 CLR SCL
40: 000B DF F5 DJNZ R7,GFD
41: 000D F5 50 MOV DYTA,A
42: 000F 22 RET
43:
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 2
Line I Addr Code Source
44: 0010 I2C_WRITE: ;writing 8 bits in to i2c device
45: 0010 7F 08 MOV R7,#8
46: 0012 WRITING:
47: 0012 33 RLC A
48: 0013 92 A6 MOV SDA,C
49: 0015 12 00 2D LCALL CLOCK
50: 0018 DF F8 DJNZ R7,WRITING
51: 001A 22 RET
52:
53: 001B I2C_START: ;start of i2c routine
54: 001B D2 A7 SETB SCL
55: 001D D2 A6 SETB SDA
56: 001F C2 A6 CLR SDA
57: 0021 C2 A7 CLR SCL
58: 0023 22 RET
59:
60: 0024 I2C_STOP: ;end of i2c routine
61: 0024 D2 A7 SETB SCL
62: 0026 C2 A6 CLR SDA
63: 0028 D2 A6 SETB SDA
64: 002A C2 A7 CLR SCL
65: 002C 22 RET
66:
67: 002D CLOCK: ;synchronizing clock
68: 002D D2 A7 SETB SCL
69: 002F C2 A7 CLR SCL
70: 0031 22 RET
71:
72:
73:
74: 0032 ACK: ;acknowledge from transmitter or receiver
75: 0032 D2 A6 SETB SDA
76: 0034 D2 A7 SETB SCL
77: 0036 20 A6 FD JB SDA,$
78: 0039 C2 A7 CLR SCL
79: 003B 22 RET
80:
81: 003C NO_ACK: ;no acknowledge from transmitter or receiver
82: 003C D2 A6 SETB SDA
83: 003E C2 A7 CLR SCL
84: 0040 30 A6 FD JNB SDA,$
85: 0043 D2 A7 SETB SCL
86: 0045 22 RET
87:
88:
89:
90: ;*************************
91: ;SERIAL EEPROM PACKAGE****
92: ;*************************
93:
94: 0046 EEPROM_WRITE: ;write in to eeprom
95: 0046 12 00 1B LCALL I2C_START
96: 0049 12 00 A0 LCALL EEPROM_WRITE_ADDR
97: 004C 12 00 32 LCALL ACK
98: 004F E5 83 MOV A,DPH
99: 0051 12 00 10 LCALL I2C_WRITE
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 3
Line I Addr Code Source
100: 0054 12 00 32 LCALL ACK
101: 0057 E5 82 MOV A,DPL
102: 0059 12 00 10 LCALL I2C_WRITE
103: 005C 12 00 32 LCALL ACK
104: 005F E5 50 MOV A,DYTA
105: 0061 12 00 10 LCALL I2C_WRITE
106: 0064 12 00 32 LCALL ACK
107: 0067 12 00 24 LCALL I2C_STOP
108: 006A 12 00 A6 LCALL DELAY_STOP
109: 006D 22 RET
110:
111: 006E EEPROM_READ: ;read from eeprom
112: 006E 12 00 1B LCALL I2C_START
113: 0071 12 00 A0 LCALL EEPROM_WRITE_ADDR
114: 0074 12 00 32 LCALL ACK
115: 0077 E5 83 MOV A,DPH
116: 0079 12 00 10 LCALL I2C_WRITE
117: 007C 12 00 32 LCALL ACK
118: 007F E5 82 MOV A,DPL
119: 0081 12 00 10 LCALL I2C_WRITE
120: 0084 12 00 32 LCALL ACK
121: 0087 12 00 1B LCALL I2C_START
122: 008A 12 00 9A LCALL EEPROM_READ_ADDR
123: 008D 12 00 32 LCALL ACK
124: 0090 12 00 00 LCALL I2C_READ
125: 0093 12 00 3C LCALL NO_ACK
126: 0096 12 00 24 LCALL I2C_STOP
127: 0099 22 RET
128:
129: 009A EEPROM_READ_ADDR: ;A2,A1,A0 are zero
130: 009A 74 A1 MOV A,#10100001B
131: 009C 12 00 10 LCALL I2C_WRITE
132: 009F 22 RET
133:
134: 00A0 EEPROM_WRITE_ADDR: ;A2,A1,A0 are zero
135: 00A0 74 A0 MOV A,#10100000B
136: 00A2 12 00 10 LCALL I2C_WRITE
137: 00A5 22 RET
138:
139: 00A6 DELAY_STOP: ;terminating write process
140: 00A6 75 89 01 MOV TMOD,#00000001B
141: 00A9 75 8C EE MOV TH0,#0EEH
142: 00AC 75 8A 00 MOV TL0,#00H
143: 00AF D2 8C SETB TR0
144: 00B1 SAC:
145: 00B1 30 8D FD JNB TF0,SAC
146: 00B4 C2 8C CLR TR0
147: 00B6 C2 8D CLR TF0
148: 00B8 22 RET
149:
150:
151: END
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 4
register banks used: ---
no errors
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 5
L I S T O F S Y M B O L S
=============================
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
??ASEM_51 NUMBER 8051
??VERSION NUMBER 0130
AC BIT D6
ACC DATA E0
ACK CODE 0032 74
ADRES NUMBER 0051 29
B DATA F0
CLOCK CODE 002D 67
CY BIT D7
DELAY_STOP CODE 00A6 139
DPH DATA 83
DPL DATA 82
DYTA NUMBER 0050 28
EA BIT AF
EEPROM_READ CODE 006E 111
EEPROM_READ_ADDR CODE 009A 129
EEPROM_WRITE CODE 0046 94
EEPROM_WRITE_ADDR CODE 00A0 134
ES BIT AC
ET0 BIT A9
ET1 BIT AB
EX0 BIT A8
EX1 BIT AA
EXTI0 CODE 0003
EXTI1 CODE 0013
F0 BIT D5
GFD CODE 0002 34
I2C_READ CODE 0000 32
I2C_START CODE 001B 53
I2C_STOP CODE 0024 60
I2C_WRITE CODE 0010 44
IE DATA A8
IE0 BIT 89
IE1 BIT 8B
INT0 BIT B2
INT1 BIT B3
IP DATA B8
IT0 BIT 88
IT1 BIT 8A
NO_ACK CODE 003C 81
OV BIT D2
P BIT D0
P0 DATA 80
P1 DATA 90
P2 DATA A0
P3 DATA B0
PCON DATA 87
PS BIT BC
PSW DATA D0
PT0 BIT B9
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 6
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
PT1 BIT BB
PX0 BIT B8
PX1 BIT BA
RB8 BIT 9A
RD BIT B7
REN BIT 9C
RESET CODE 0000
RI BIT 98
RS0 BIT D3
RS1 BIT D4
RXD BIT B0
SAC CODE 00B1 144
SBUF DATA 99
SCL NUMBER 00A7 27
SCON DATA 98
SDA NUMBER 00A6 26
SINT CODE 0023
SM0 BIT 9F
SM1 BIT 9E
SM2 BIT 9D
SP DATA 81
T0 BIT B4
T1 BIT B5
TB8 BIT 9B
TCON DATA 88
TF0 BIT 8D
TF1 BIT 8F
TH0 DATA 8C
TH1 DATA 8D
TI BIT 99
TIMER0 CODE 000B
TIMER1 CODE 001B
TL0 DATA 8A
TL1 DATA 8B
TMOD DATA 89
TR0 BIT 8C
TR1 BIT 8E
TXD BIT B1
WR BIT B6
WRITING CODE 0012 46
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -