?? i2c.lst
字號:
C51 COMPILER V7.06 I2C 12/09/2006 19:37:50 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE I2C
OBJECT MODULE PLACED IN I2C.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE source\I2C.c BROWSE INCDIR(Z:\cb\TV_112\include\) DEBUG OBJECTEXTEND PRINT(
-.\I2C.lst) OBJECT(I2C.obj)
stmt level source
1 #include "reg51.h"
2 #include "common.h"
3 #include "struct.h"
4 #include "system.h"
5 #include "twowire.h"
6
7 #define True 1
8 #define False 0
9 #define High 1
10 #define Low 0
11 //#define nop _nop()_
12
13 /*********************************************************************************************************
-****************************************
14 I2C總線驅動程序
15 **********************************************************************************************************
-****************************************/
16
17
18
19 void Delay_10us(void)
20 {
21 1 twdDelay(5);
22 1
23 1 }
24
25 /*************************************************/
26
27 void Start_I2C(void)
28 {
29 1 P_SCK = False ;
30 1 Delay_10us() ;
31 1 P_SDA = True ;
32 1 Delay_10us() ;
33 1 P_SCK = True ;
34 1 Delay_10us() ;
35 1 P_SDA = False ;
36 1 Delay_10us() ;
37 1 P_SCK = False ;
38 1 }
39
40 /***********************************************/
41
42 void Stop_I2C(void)
43 {
44 1
45 1 P_SCK = False;
46 1 Delay_10us();
47 1 P_SDA = False;
48 1 Delay_10us();
49 1 P_SCK = True;
50 1 Delay_10us();
51 1 P_SDA = True;
52 1 Delay_10us();
C51 COMPILER V7.06 I2C 12/09/2006 19:37:50 PAGE 2
53 1 P_SCK = False;
54 1 }
55
56 /***********************************************/
57
58 void WByte_I2C(uCHAR value)
59 {
60 1 uCHAR i;
61 1 for(i=0;i!=8;i++)
62 1 {
63 2 if( value&0x80 )
64 2 {
65 3 P_SDA = True;
66 3 }
67 2 else
68 2 {
69 3 P_SDA = False;
70 3 }
71 2 value <<=1;
72 2 Delay_10us();
73 2 P_SCK = True;
74 2 Delay_10us();
75 2 P_SCK = False;
76 2 Delay_10us();
77 2 }
78 1 P_SDA = True;
79 1 P_SCK = True;
80 1 do
81 1 {
82 2 i++;
83 2 }while(P_SDA&&i!=255);
84 1 P_SCK = False;
85 1 }
86
87 /**************************************************/
88
89 uCHAR I2C_RByte(void)
90 {
91 1 uCHAR i;
92 1 uCHAR RI2C_data=0;
93 1
94 1 P_SDA = High;
95 1 for(i=0;i!=8;i++)
96 1 {
97 2 P_SCK = High;
98 2 Delay_10us();
99 2 RI2C_data<<=1;
100 2 if(P_SDA)
101 2 {
102 3 RI2C_data ++;
103 3 }
104 2 P_SCK = Low;
105 2 Delay_10us();
106 2 }
107 1 P_SDA = High;
108 1 Delay_10us();
109 1 P_SCK = High;
110 1 Delay_10us();
111 1 P_SCK = Low;
112 1 return RI2C_data;
113 1 }
114 /*******************************************/
C51 COMPILER V7.06 I2C 12/09/2006 19:37:50 PAGE 3
115
116 void W_E2PROM(uCHAR slave_addr,uCHAR W_addr ,uCHAR W_data)
117 {
118 1 Start_I2C();
119 1 WByte_I2C(slave_addr);
120 1 WByte_I2C(W_addr);
121 1 WByte_I2C(W_data);
122 1 Delay_10us();
123 1 ///Wait_64us();
124 1 Stop_I2C();
125 1 }
126
127 /*************************************************/
128 uCHAR R_E2PROM(uCHAR slave_addr,uCHAR R_addr)
129 {
130 1 uCHAR i;
131 1 Start_I2C();
132 1 WByte_I2C(slave_addr);
133 1 WByte_I2C(R_addr);
134 1 Start_I2C();
135 1 WByte_I2C(slave_addr|0x01);
136 1 i=I2C_RByte();
137 1 Stop_I2C();
138 1 return i;
139 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 231 ----
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)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -