238 lines
7.9 KiB
Plaintext
238 lines
7.9 KiB
Plaintext
C51 COMPILER V9.59.0.0 IIC 02/24/2024 21:37:53 PAGE 1
|
||
|
||
|
||
C51 COMPILER V9.59.0.0, COMPILATION OF MODULE IIC
|
||
OBJECT MODULE PLACED IN .\Objects\iic.obj
|
||
COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\Driver\iic.c OPTIMIZE(8,SPEED) BROWSE INCDIR(..\Driver) DEBUG OBJECTE
|
||
-XTEND PRINT(.\Listings\iic.lst) TABS(2) OBJECT(.\Objects\iic.obj)
|
||
|
||
line level source
|
||
|
||
1 /* # I2C莉」遐∫援谿オ隸エ譏<EFBDB4>
|
||
2 1. 譛ャ譁<EFBDAC>サカ螟ケ荳ュ謠蝉セ帷噪鬩ア蜉ィ莉」遐∽セ帛盾襍幃画焔螳梧<E89EB3>遞句コ剰ョセ隶。蜿り<E3828A><EFBFBD>
|
||
3 2. 蜿りオ幃画焔蜿ッ莉・閾ェ陦檎シ門<EFBDBC>逶ク蜈ウ莉」遐∵<E98190>莉・隸・莉」遐∽クコ蝓コ遑<E98191>梧<EFBFBD>ケ謐ョ謇騾牙黒迚<E9BB92>惻邀サ蝙九
|
||
-∬ソ占。碁溷コヲ蜥瑚ッ暮「<E69AAE>
|
||
4 荳ュ蟇ケ蜊慕援譛コ譌カ髓滄「醍紫逧<E7B4AB>ヲ∵アゑシ瑚ソ幄。御サ」遐∬ー<E288AC>ッ募柱菫ョ謾ケ縲<EFBDB9>
|
||
5 */
|
||
6 #include "iic.h"
|
||
7 #include "intrins.h"
|
||
8 #define DELAY_TIME 5
|
||
9 sbit scl = P2 ^ 0;
|
||
10 sbit sda = P2 ^ 1;
|
||
11 //
|
||
12 static void I2C_Delay(unsigned char n)
|
||
13 {
|
||
14 1 do
|
||
15 1 {
|
||
16 2 _nop_();
|
||
17 2 _nop_();
|
||
18 2 _nop_();
|
||
19 2 _nop_();
|
||
20 2 _nop_();
|
||
21 2 _nop_();
|
||
22 2 _nop_();
|
||
23 2 _nop_();
|
||
24 2 _nop_();
|
||
25 2 _nop_();
|
||
26 2 _nop_();
|
||
27 2 _nop_();
|
||
28 2 _nop_();
|
||
29 2 _nop_();
|
||
30 2 _nop_();
|
||
31 2 } while (n--);
|
||
32 1 }
|
||
33
|
||
34 //
|
||
35 void I2CStart(void)
|
||
36 {
|
||
37 1 sda = 1;
|
||
38 1 scl = 1;
|
||
39 1 I2C_Delay(DELAY_TIME);
|
||
40 1 sda = 0;
|
||
41 1 I2C_Delay(DELAY_TIME);
|
||
42 1 scl = 0;
|
||
43 1 }
|
||
44
|
||
45 //
|
||
46 void I2CStop(void)
|
||
47 {
|
||
48 1 sda = 0;
|
||
49 1 scl = 1;
|
||
50 1 I2C_Delay(DELAY_TIME);
|
||
51 1 sda = 1;
|
||
52 1 I2C_Delay(DELAY_TIME);
|
||
53 1 }
|
||
C51 COMPILER V9.59.0.0 IIC 02/24/2024 21:37:53 PAGE 2
|
||
|
||
54
|
||
55 //
|
||
56 void I2CSendByte(unsigned char byt)
|
||
57 {
|
||
58 1 unsigned char i;
|
||
59 1
|
||
60 1 for (i = 0; i < 8; i++)
|
||
61 1 {
|
||
62 2 scl = 0;
|
||
63 2 I2C_Delay(DELAY_TIME);
|
||
64 2 if (byt & 0x80)
|
||
65 2 {
|
||
66 3 sda = 1;
|
||
67 3 }
|
||
68 2 else
|
||
69 2 {
|
||
70 3 sda = 0;
|
||
71 3 }
|
||
72 2 I2C_Delay(DELAY_TIME);
|
||
73 2 scl = 1;
|
||
74 2 byt <<= 1;
|
||
75 2 I2C_Delay(DELAY_TIME);
|
||
76 2 }
|
||
77 1
|
||
78 1 scl = 0;
|
||
79 1 }
|
||
80
|
||
81 //
|
||
82 unsigned char I2CReceiveByte(void)
|
||
83 {
|
||
84 1 unsigned char da;
|
||
85 1 unsigned char i;
|
||
86 1 for (i = 0; i < 8; i++)
|
||
87 1 {
|
||
88 2 scl = 1;
|
||
89 2 I2C_Delay(DELAY_TIME);
|
||
90 2 da <<= 1;
|
||
91 2 if (sda)
|
||
92 2 da |= 0x01;
|
||
93 2 scl = 0;
|
||
94 2 I2C_Delay(DELAY_TIME);
|
||
95 2 }
|
||
96 1 return da;
|
||
97 1 }
|
||
98
|
||
99 //
|
||
100 unsigned char I2CWaitAck(void)
|
||
101 {
|
||
102 1 unsigned char ackbit;
|
||
103 1
|
||
104 1 scl = 1;
|
||
105 1 I2C_Delay(DELAY_TIME);
|
||
106 1 ackbit = sda;
|
||
107 1 scl = 0;
|
||
108 1 I2C_Delay(DELAY_TIME);
|
||
109 1
|
||
110 1 return ackbit;
|
||
111 1 }
|
||
112
|
||
113 //
|
||
114 void I2CSendAck(unsigned char ackbit)
|
||
115 {
|
||
C51 COMPILER V9.59.0.0 IIC 02/24/2024 21:37:53 PAGE 3
|
||
|
||
116 1 scl = 0;
|
||
117 1 sda = ackbit;
|
||
118 1 I2C_Delay(DELAY_TIME);
|
||
119 1 scl = 1;
|
||
120 1 I2C_Delay(DELAY_TIME);
|
||
121 1 scl = 0;
|
||
122 1 sda = 1;
|
||
123 1 I2C_Delay(DELAY_TIME);
|
||
124 1 }
|
||
125
|
||
126 unsigned char Ad_Read(unsigned char addr)
|
||
127 {
|
||
128 1 unsigned char temp;
|
||
129 1 // 騾画叫闃ッ迚<EFBDAF>クコPCF
|
||
130 1 I2CStart();
|
||
131 1 I2CSendByte(0x90);
|
||
132 1 I2CWaitAck();
|
||
133 1 I2CSendByte(addr);
|
||
134 1 I2CWaitAck();
|
||
135 1 I2CStart();
|
||
136 1 I2CSendByte(0x91);
|
||
137 1 I2CWaitAck();
|
||
138 1 temp = I2CReceiveByte();
|
||
139 1 I2CSendAck(1);
|
||
140 1 I2CStop();
|
||
141 1 return temp;
|
||
142 1 }
|
||
143 // 蜀吝<E89C80>逧<EFBFBD>シ譏ッ謨ー蟄怜シ0-255<35>瑚御ク肴弍讓。諡溷シ
|
||
144 void Da_Write(unsigned char dat)
|
||
145 {
|
||
146 1 // 騾画叫闃ッ迚<EFBDAF>クコPCF
|
||
147 1 I2CStart();
|
||
148 1 I2CSendByte(0x90);
|
||
149 1 I2CWaitAck();
|
||
150 1
|
||
151 1 I2CSendByte(0x41);
|
||
152 1 I2CWaitAck();
|
||
153 1 I2CSendByte(dat);
|
||
154 1 I2CWaitAck();
|
||
155 1 I2CStop();
|
||
156 1 }
|
||
157
|
||
158 /// @brief EEPROM 蜀吝<E89C80>謨ー
|
||
159 /// @param EEPROM_String 蜀吝<E89C80>逧<EFBFBD>焚扈<E7849A>欠髓茨シ亥ヲよ棡蜿ェ蜀吝<E89C80>荳荳ェ謨ー謐ョ<E8AC90>碁ぅ荵郁ヲ∫畑&data<74><61>
|
||
160 /// @param addr 8逧<38>肴焚
|
||
161 /// @param num 蜀吝<E89C80>逧<EFBFBD>焚扈<E7849A>、ァ蟆<EFBDA7>
|
||
162 void EEPROM_Write(unsigned char *EEPROM_String, unsigned char addr, unsigned char num)
|
||
163 {
|
||
164 1 // 騾画叫闃ッ迚<EFBDAF>クコEEPROM<4F>梧ィ。蠑丈クコ蜀<EFBDBA>
|
||
165 1 I2CStart();
|
||
166 1 I2CSendByte(0xA0);
|
||
167 1 I2CWaitAck();
|
||
168 1
|
||
169 1 I2CSendByte(addr); // 蜀吝<E89C80>逧<EFBFBD>焚謐ョ逧<EFBDAE>慍蝮
|
||
170 1 I2CWaitAck();
|
||
171 1 while (num--)
|
||
172 1 {
|
||
173 2 I2CSendByte(*EEPROM_String++);
|
||
174 2 I2CWaitAck();
|
||
175 2 I2C_Delay(200);
|
||
176 2 }
|
||
177 1 I2CStop();
|
||
C51 COMPILER V9.59.0.0 IIC 02/24/2024 21:37:53 PAGE 4
|
||
|
||
178 1 }
|
||
179 /// @brief EEPROM 隸サ蜃ス謨ー
|
||
180 /// @param EEPROM_String 隸サ蜿也噪謨ー扈<EFBDB0>欠髓茨シ亥ヲよ棡蜿ェ隸サ蜿紋ク荳ェ謨ー謐ョ<E8AC90>碁ぅ荵郁ヲ∫畑&data<74><61>
|
||
181 /// @param addr 8逧<38>肴焚
|
||
182 /// @param num 隸サ蜿也噪謨ー扈<EFBDB0>、ァ蟆<EFBDA7>
|
||
183 void EEPROM_Read(unsigned char *EEPROM_String, unsigned char addr, unsigned char num)
|
||
184 {
|
||
185 1 // 騾画叫闃ッ迚<EFBDAF>クコEEPROM<4F>梧ィ。蠑丈クコ蜀<EFBDBA>
|
||
186 1 I2CStart();
|
||
187 1 I2CSendByte(0xA0);
|
||
188 1 I2CWaitAck();
|
||
189 1
|
||
190 1 I2CSendByte(addr);
|
||
191 1 I2CWaitAck();
|
||
192 1
|
||
193 1 // 騾画叫闃ッ迚<EFBDAF>クコEEPROM<4F>梧ィ。蠑丈クコ隸サ
|
||
194 1 I2CStart();
|
||
195 1 I2CSendByte(0xA1);
|
||
196 1 I2CWaitAck();
|
||
197 1 while (num--)
|
||
198 1 {
|
||
199 2 *EEPROM_String++ = I2CReceiveByte();
|
||
200 2 if (num)
|
||
201 2 I2CSendAck(0);
|
||
202 2 else
|
||
203 2 I2CSendAck(1); // 蛛懈ュ「隸サ蜿<EFBDBB>
|
||
204 2 }
|
||
205 1 I2CStop();
|
||
206 1 }
|
||
|
||
|
||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||
CODE SIZE = 378 ----
|
||
CONSTANT SIZE = ---- ----
|
||
XDATA SIZE = ---- ----
|
||
PDATA SIZE = ---- ----
|
||
DATA SIZE = ---- 10
|
||
IDATA SIZE = ---- ----
|
||
BIT SIZE = ---- ----
|
||
END OF MODULE INFORMATION.
|
||
|
||
|
||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|