📄 iic_bit.lst
字号:
C51 COMPILER V7.50 IIC_BIT 10/30/2007 19:00:59 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE IIC_BIT
OBJECT MODULE PLACED IN iic_bit.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE iic_bit.c LARGE OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 #define IIC_READ 0XA1 //定义读指令
2 #define IIC_WRITE 0XA0 //定义写指令
3 #define NOP _nop_()
4 #define uchar unsigned char
5 #define uint unsigned int
6 #include "reg52.h"
7 #define IIC_READ 0XA1 //定义读指令
8 #define IIC_WRITE 0XA0 //定义写指令
9 #define NOP _nop_()
10 //#define SDA INT0
11 //#define SCL T0
12 //==============================
13 uchar xdata buff[2000]; //save the byte read out form iic device in test operation
14 uchar xdata readbuff[232];//测试数组,暂存写入读出数据
15 //uchar writebuff[32];
16 //===============================
17 sbit SDA=P3^5;//P2^7; //THE SDA BIT IS PORT 2 BIT 7
18 sbit SCL=P3^4;//P2^6; //THE SCL BIT IS PORT 2 BIT 6
19 sbit SEN=P3^3;//P2^6; //THE SCL BIT IS PORT 2 BIT 6
20 sbit STE=P3^2;//P2^6; //THE SCL BIT IS PORT 2 BIT 6
21
22 uchar setclk[13]={0x00,0x00,0x12};
23 uchar getclk[13];
24 uchar const seg[11]={0x7f,0x44,0xbd,0xf5,0xe6,0xf3,0xfb,0x65,0xff,0xf7,0x00};
25 uchar dis[8]={0,0,0,0}; //设置显示缓冲存储器
26
27 uchar bdata bbyte;//定义位操作用数组,采用此方法可提高位操作速度
28 sbit a0=bbyte^0;
29 sbit a1=bbyte^1;
30 sbit a2=bbyte^2;
31 sbit a3=bbyte^3;
32 sbit a4=bbyte^4;
33 sbit a5=bbyte^5;
34 sbit a6=bbyte^6;
35 sbit a7=bbyte^7;
36 delay(void);
37 //========================================
38 bit IFACK; //record the SDA state to confirn if ACK has happened
39 bit NO_ACK; //no ack flag
40 bit BUS_FAULT; //bus fault flag
41 //========================================
42 code uchar test_y_z[2000] =
43 {
44 104, //字体构成图象的宽度
45 46, //字体构成图象的高度
46 0, //字体的颜色
47 0xff, //字体的背景色
48
49 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xFF,0xFF,0xFF,
50 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xFF,0xFE,0xDF,0x00,0x1C,0x0E,
51 0x1D,0xFE,0xAF,0xFF,0xFF,0xFF,0xF8,0xFF,0xFE,0xBF,0xF5,0xFD,0xEF,0xD0,0x21,0xB7,
52 0xFF,0xFF,0xFF,0xF8,0xFF,0xFD,0x81,0x80,0x3C,0x0E,0xD7,0xBD,0xBF,0xFF,0xFF,0xFF,
53 0xF8,0xFF,0xF9,0x7D,0xB5,0xBD,0xEE,0xD0,0x20,0x03,0xFF,0xFF,0xFF,0xF8,0xFF,0xF4,
54 0xEF,0x80,0x3C,0x0E,0xD7,0xFD,0xBF,0xFF,0xFF,0xFF,0xF8,0xFF,0xFD,0xAB,0xF7,0xFF,
55 0xFE,0x10,0x3D,0x37,0xFF,0xFF,0xFF,0xF8,0xFF,0xFD,0xAB,0x00,0x00,0x03,0xD2,0xB8,
C51 COMPILER V7.50 IIC_BIT 10/30/2007 19:00:59 PAGE 2
56 0xAF,0xFF,0xFF,0xFF,0xF8,0xFF,0xFD,0x6D,0xEE,0xFB,0x7F,0x90,0x25,0xDF,0xFF,0xFF,
57 0xFF,0xF8,0xFF,0xFC,0xED,0xC5,0xF9,0x06,0x4A,0xBD,0x9B,0xFF,0xFF,0xFF,0xF8,0xFF,
58 0xFD,0xEF,0xF8,0xF6,0x7F,0xDA,0xBC,0x6B,0x7B,0xEF,0xBD,0xF8,0xFF,0xFD,0x8F,0x07,
59 0x2F,0x03,0x1F,0x31,0xF3,0xFF,0xFF,0xFF,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
60 0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
61 0xFF,0xFF,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,
62 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0xEA,0xFF,0xFF,
63 0xFF,0xFF,0xFF,0xFF,0xFF,0xE1,0xFF,0xFD,0xFF,0xF8,0xF1,0xFF,0xFF,0xFF,0xFF,0xFF,
64 0xFF,0xFF,0xE0,0x3F,0xDC,0xFF,0xF8,0xC0,0x2F,0xFF,0xFF,0xF3,0xFF,0xFF,0xFF,0xFF,
65 0xBD,0x8C,0xFF,0xF8,0xF1,0xFF,0xFF,0xFF,0xC7,0xEF,0xFF,0xFC,0xFF,0xB9,0x04,0xFF,
66 0xF8,0xE8,0xFF,0xFF,0xFF,0x07,0x1F,0x7F,0xFF,0x3F,0xF0,0x20,0xFF,0xF8,0xDB,0x7F,
67 0xFF,0xFC,0x0C,0x1C,0x7F,0x7F,0xCF,0xEE,0x71,0xFF,0xF8,0xFB,0xF7,0xE3,0xF8,0x00,
68 0x10,0xDF,0x8F,0xF3,0xFE,0x7D,0xFF,0xF8,0xFF,0xFB,0xC1,0xF0,0x00,0x00,0x97,0xC1,
69 0xF8,0xFE,0xFF,0xEF,0xF8,0xFB,0xEB,0x98,0xE0,0x00,0x39,0x10,0xF0,0x3C,0x3F,0xFF,
70 0xBF,0xF8,0xFF,0xF1,0xA4,0xE0,0x00,0x04,0x10,0x1C,0x06,0x1F,0x8F,0x97,0xF8,0xFF,
71 0xD1,0x8A,0xC0,0x00,0x00,0x30,0x00,0x01,0x0F,0x07,0x8F,0xF8,0xFF,0xE0,0x8A,0x00,
72 0x00,0x00,0x30,0x38,0x00,0x06,0x33,0x1B,0xF8,0xFF,0xA0,0x44,0x00,0x00,0x00,0x50,
73 0x40,0x00,0x06,0x4B,0x17,0xF8,0xFF,0xC0,0x60,0x00,0x0F,0xC0,0x48,0x00,0x00,0x02,
74 0xA2,0x05,0xF8,0xFF,0x40,0x70,0x00,0x3F,0xE0,0x88,0x00,0x00,0x00,0xA2,0x03,0xF8,
75 0xFF,0x80,0xF8,0x00,0x00,0xF1,0x04,0x07,0xE0,0x00,0x44,0x01,0xF8,0xFE,0x81,0xE8,
76 0x00,0x01,0xC2,0x04,0x4F,0xF8,0x00,0x0F,0x03,0xF8,0xFF,0x00,0x08,0x00,0x01,0x84,
77 0x02,0x3E,0x00,0x00,0x1F,0x82,0xF8,0xFD,0x00,0x10,0x00,0x00,0x88,0x01,0x06,0x00,
78 0x00,0x10,0x41,0xF8,0xFE,0x01,0xE0,0x01,0x13,0x08,0x00,0x87,0x00,0x00,0x10,0x01,
79 0xB8,0xFF,0x06,0x20,0x00,0x88,0x10,0x00,0x43,0x00,0x00,0x10,0x01,0x18,0xFD,0x0A,
80 0x10,0x01,0x44,0x10,0x00,0x22,0x00,0x00,0x18,0x01,0xB8,0xF8,0x11,0x10,0x00,0x80,
81 0x10,0x00,0x21,0x91,0x00,0x14,0x01,0xF8,0xFC,0x10,0x88,0x70,0x00,0x10,0x00,0x10,
82 0x22,0x03,0xE0,0x00,0xB8,0xFE,0x20,0x84,0x4C,0x00,0x20,0x00,0x10,0x45,0x05,0x31,
83 0x00,0xF8,0xF4,0x20,0x43,0x8B,0x80,0xC0,0x00,0x10,0x02,0x08,0x88,0x80,0xB8,0xFC,
84 0x20,0x40,0x08,0xFF,0x00,0x00,0x10,0x00,0x18,0x40,0x40,0x78,0xF6,0x20,0x40,0x08,
85 0x80,0x00,0x00,0x08,0x00,0x68,0x40,0x00,0xD8,0xFC,0x20,0x40,0x08,0x80,0x00,0x00,
86 0x06,0x03,0x90,0x20,0x20,0x68,
87
88
89 };
90 code uchar test_y_a[2000] =
91 {
92 24, //字体构成图象的宽度
93 240, //字体构成图象的高度
94 0, //字体的颜色
95 0xff, //字体的背景色
96
97 0x00,0x01,0x00,0x00,0x83,0x00,0x00,0x83, //"单",
98 0x00,0x00,0x42,0x00,0x00,0x62,0x00,0x00,
99 0x64,0x60,0x02,0x1F,0xE0,0x03,0xF8,0x60,
100 0x02,0x18,0x40,0x02,0x1A,0x40,0x02,0xFE,
101 0x40,0x02,0x98,0x40,0x02,0x18,0x40,0x02,
102 0x3F,0xC0,0x03,0xF8,0x00,0x03,0x18,0x00,
103 0x00,0x18,0x7C,0x01,0xFF,0xF0,0x3F,0x98,
104 0x00,0x00,0x18,0x00,0x00,0x18,0x00,0x00,
105 0x18,0x00,0x00,0x18,0x00,0x00,0x18,0x00,
106
107 0x00,0x00,0x20,0x04,0x00,0xF0,0x04,0x7F, //"用",
108 0xE0,0x07,0xF8,0x20,0x06,0x10,0x20,0x06,
109 0x10,0x20,0x06,0x10,0x20,0x06,0x1F,0xA0,
110 0x06,0xFC,0x20,0x06,0x10,0x20,0x06,0x10,
111 0x20,0x06,0x10,0x20,0x04,0x1F,0xA0,0x05,
112 0xF8,0x20,0x04,0x10,0x20,0x04,0x10,0x20,
113 0x04,0x10,0x20,0x08,0x10,0x20,0x08,0x10,
114 0x20,0x18,0x10,0x20,0x10,0x11,0xA0,0x20,
115 0x10,0xE0,0x60,0x10,0x60,0x00,0x00,0x00,
116
117
C51 COMPILER V7.50 IIC_BIT 10/30/2007 19:00:59 PAGE 3
118
119 0x00,0x04,0x00,0x00,0x06,0x00,0x02,0x06, //"片",
120 0x00,0x03,0x06,0x00,0x01,0x06,0x00,0x01,
121 0x06,0x00,0x01,0x06,0x00,0x01,0x06,0x00,
122 0x01,0x06,0x78,0x01,0x3F,0xF0,0x01,0xF8,
123 0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x01,
124 0x03,0x00,0x03,0x7F,0x00,0x03,0xE3,0x00,
125 0x02,0x03,0x00,0x02,0x03,0x00,0x02,0x03,
126 0x00,0x06,0x03,0x00,0x04,0x03,0x00,0x04,
127 0x03,0x00,0x08,0x03,0x00,0x08,0x03,0x00,
128
129 0x04,0x00,0x00,0x02,0x00,0x00,0x02,0x08, //"机",
130 0x40,0x02,0x0F,0xC0,0x02,0x08,0xC0,0x02,
131 0x08,0xC0,0x02,0x68,0xC0,0x7F,0xE8,0xC0,
132 0x66,0x08,0xC0,0x06,0x08,0xC0,0x07,0x08,
133 0xC0,0x0F,0x88,0xC0,0x0A,0xD8,0xC0,0x0A,
134 0x58,0xC0,0x12,0x18,0xC0,0x12,0x18,0xC0,
135 0x22,0x10,0xC4,0x22,0x10,0xC4,0x42,0x10,
136 0xC4,0x02,0x30,0xC6,0x02,0x20,0xC6,0x02,
137 0x20,0xC6,0x06,0x40,0x7E,0x06,0x80,0x00,
138
139 0x00,0x00,0x00,0x00,0x48,0x08,0x1F,0xEF, //"驱",
140 0xFC,0x1C,0x4E,0x00,0x00,0x48,0x20,0x04,
141 0xC8,0x30,0x04,0xC8,0x30,0x04,0x8A,0x20,
142 0x0C,0x89,0x60,0x08,0x89,0xE0,0x08,0xA8,
143 0xC0,0x0B,0xE8,0xC0,0x1F,0x68,0xE0,0x00,
144 0x68,0xA0,0x00,0x69,0xB0,0x01,0x49,0x30,
145 0x1E,0x4A,0x10,0x70,0x4A,0x00,0x00,0x4C,
146 0x00,0x02,0xC8,0x0C,0x03,0x8F,0xFE,0x01,
147 0x8C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
148
149 0x00,0x00,0x80,0x00,0x00,0xC0,0x00,0x00, //"动",
150 0xC0,0x00,0x00,0x80,0x03,0xF0,0x80,0x06,
151 0x00,0x80,0x00,0x00,0x80,0x00,0x01,0x80,
152 0x00,0x01,0x98,0x01,0xFF,0xF8,0x3F,0x0D,
153 0x18,0x01,0x01,0x10,0x03,0x03,0x10,0x02,
154 0x02,0x10,0x02,0x42,0x30,0x04,0x26,0x30,
155 0x04,0x74,0x20,0x0F,0xBC,0x20,0x1E,0x08,
156 0x20,0x18,0x08,0x60,0x00,0x11,0x60,0x00,
157 0x20,0xC0,0x00,0x60,0xC0,0x00,0x80,0x00,
158
159 0x00,0x20,0x00,0x00,0x30,0x00,0x00,0x30, //"电",
160 0x00,0x00,0x30,0x00,0x08,0x20,0x40,0x08,
161 0x27,0xC0,0x0F,0xFF,0xC0,0x0E,0x20,0xC0,
162 0x0C,0x20,0x80,0x0C,0x26,0x80,0x04,0xFE,
163 0x80,0x05,0xA0,0x80,0x04,0x20,0x80,0x04,
164 0x20,0x80,0x04,0x3F,0x80,0x07,0xFC,0x00,
165 0x0C,0x20,0x00,0x04,0x20,0x08,0x04,0x20,
166 0x08,0x00,0x30,0x08,0x00,0x30,0x08,0x00,
167 0x1F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,
168
169 0x00,0x02,0x00,0x08,0x03,0x00,0x09,0x83, //"脑",
170 0x00,0x0F,0x81,0x00,0x08,0x80,0x0C,0x08,
171 0x8F,0xFC,0x08,0xFC,0x00,0x08,0x80,0xC0,
172 0x0F,0x88,0xC0,0x08,0x84,0x90,0x08,0xA5,
173 0x98,0x08,0xB3,0x10,0x0F,0xB3,0x10,0x08,
174 0x93,0x10,0x08,0x93,0x90,0x08,0x96,0x90,
175 0x18,0x94,0xD0,0x10,0x98,0x10,0x10,0x90,
176 0x10,0x10,0x90,0x10,0x37,0xBF,0xF0,0x23,
177 0xB8,0x10,0x21,0x80,0x00,0x00,0x00,0x00,
178
179 0x00,0x00,0x00,0x02,0x00,0xC0,0x03,0xFF, //"显",
C51 COMPILER V7.50 IIC_BIT 10/30/2007 19:00:59 PAGE 4
180 0xC0,0x03,0xE0,0xC0,0x03,0x00,0xC0,0x03,
181 0x06,0x80,0x03,0xFE,0x80,0x03,0x00,0x80,
182 0x01,0x00,0x80,0x01,0x0F,0x80,0x03,0xFE,
183 0x00,0x01,0x44,0x00,0x01,0x64,0x20,0x08,
184 0x64,0x60,0x04,0x64,0x60,0x06,0x64,0xC0,
185 0x03,0x64,0x80,0x03,0x65,0x00,0x02,0x65,
186 0x00,0x00,0x64,0x00,0x00,0x64,0x08,0x00,
187 0x7F,0xFC,0x1F,0xFC,0x00,0x00,0x00,0x00,
188
189 0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x3F, //"示",
190 0xE0,0x03,0xF0,0x00,0x00,0x00,0x00,0x00,
191 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,
192 0x07,0xFF,0xF0,0x1F,0x18,0x00,0x00,0x08,
193 0x00,0x00,0x88,0x00,0x00,0xC9,0x00,0x01,
194 0x88,0xC0,0x01,0x08,0x60,0x03,0x08,0x30,
195 0x06,0x08,0x38,0x04,0x08,0x18,0x08,0x08,
196 0x00,0x10,0x58,0x00,0x00,0x38,0x00,0x00,
197 0x18,0x00,0x00,0x18,0x00,0x00,0x00,0x00
198
199 };
200
201
202
203
204 void start(void)
205 {
206 1 SCL=0;
207 1 SDA=1;
208 1 SCL=1;
209 1 SDA=0;
210 1 SCL=0;
211 1 }
212 //=======================================
213 //FUNCTION:ROUTES TO PROVIDE A STOP SIGNAL
214 void stop(void)
215 {
216 1 SCL=0;
217 1 SDA=0;
218 1 SCL=1;
219 1 SDA=1;
220 1 SCL=0;
221 1 }
222 //=====================================
223 //FUNCTION:ROUTES TO PROVIDE ACK SINGAL
224 void ack(void)
225 {
226 1 SCL=0;
227 1 SDA=0;
228 1 SCL=1;
229 1 SCL=0;
230 1 }
231 //=====================================
232 //FUNCTION:ROUTES TO RELEASE THE SDA TO RECEIVE A ACK SIGNAL
233 // OR TO PROVIDE A NO_ACK SIGNAL
234 //type=1等待应答信号
235 //type=0 产生无应答信号
236 void nack(uchar type)
237 {
238 1 SCL=0;
239 1 SDA=1;
240 1 SCL=1;
241 1 IFACK=SDA;
C51 COMPILER V7.50 IIC_BIT 10/30/2007 19:00:59 PAGE 5
242 1 SCL=0;
243 1 if(type)
244 1 {
245 2 if(IFACK)//如果无应答信号,则置标志位NO_ACK,程序中止
246 2 {
247 3 NO_ACK=1;//用户可以加入自己的异常处理程序
248 3 //while(1);
249 3 }
250 2 else NO_ACK=0;
251 2 }
252 1 }
253 //=======================================================
254 //FUNCTION:THE IIC DEVICE SHIFT OUT A BYTE TO THE MASTER
255 uchar inbyte(void) {//从IIC器件中读出数据
256 1 SDA=1;
257 1 SCL=1;
258 1 a7=SDA;
259 1 SCL=0;
260 1 SCL=1;
261 1 a6=SDA;
262 1 SCL=0;
263 1 SCL=1;
264 1 a5=SDA;
265 1 SCL=0;
266 1 SCL=1;
267 1 a4=SDA;
268 1 SCL=0;
269 1 SCL=1;
270 1 a3=SDA;
271 1 SCL=0;
272 1 SCL=1;
273 1 a2=SDA;
274 1 SCL=0;
275 1 SCL=1;
276 1 a1=SDA;
277 1 SCL=0;
278 1 SCL=1;
279 1 a0=SDA;
280 1 SCL=0;
281 1 return(bbyte);
282 1 }
283 //=======================================================
284 //FUNCTION:THE IIC DEVICE SHIFT IN A BYTE FROM THE MASTER
285 void outbyte(uchar outdata) {//将数据写放IIC器件
286 1 bbyte=outdata;
287 1 SDA=a7;
288 1 SCL=1;
289 1 SCL=0;
290 1 SDA=a6;
291 1 SCL=1;
292 1 SCL=0;
293 1 SDA=a5;
294 1 SCL=1;
295 1 SCL=0;
296 1 SDA=a4;
297 1 SCL=1;
298 1 SCL=0;
299 1 SDA=a3;
300 1 SCL=1;
301 1 SCL=0;
302 1 SDA=a2;
303 1 SCL=1;
C51 COMPILER V7.50 IIC_BIT 10/30/2007 19:00:59 PAGE 6
304 1 SCL=0;
305 1 SDA=a1;
306 1 SCL=1;
307 1 SCL=0;
308 1 SDA=a0;
309 1 SCL=1;
310 1 SCL=0;
311 1 }
312 //======================================================
313 //FUNCTION:BYTE WRITE. 'add' THE WRITE ADDRESS, 'wbyte' THE DATA WANT TO WRITE
314 void writebyte(uint add,uchar wbyte)//add为写入地址,wbyte为写入数据
315 {
316 1 uchar temph,templ;
317 1 temph=(uchar)(add/256);
318 1 templ=(uchar)(add%256);
319 1 if(!STE)
320 1 return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -