?? i2ctest.lst
字號:
C51 COMPILER V7.02a I2CTEST 09/30/2004 14:29:31 PAGE 1
C51 COMPILER V7.02a, COMPILATION OF MODULE I2CTEST
OBJECT MODULE PLACED IN i2ctest.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE i2ctest.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //i1c test//
2
3 #include "ADUC812.h"
4 #include "math.h"
5 #include "intrins.h"
6 #include "string.h"
7 #include "stdio.h"
8
9 sbit led=P2^1;
10 sbit speak=P2^3;
11 sbit SDA=P3^2;
12 sbit SCL=P3^3;
13 #define deviceadd 0xa0
14
15
16 //************* Delay *********//
17 void delay(int n)
18 {
19 1 int i;
20 1 for(i=0;i<=n;i++)
21 1 {
22 2 _nop_();
23 2 }
24 1 }
25
26 //************* Delay N ms *********//
27 void delay_ms(int n)
28 {
29 1 int i,j;
30 1 for(i=0;i<=n;i++)
31 1 {
32 2 for(j=0;j<=50;j++) //** Delay 1 ms **//
33 2 {
34 3 _nop_();
35 3 }
36 2 }
37 1 }
38
39
40 //**************Start**********//
41 void I2C_start(void)
42 {
43 1 SDA=1;
44 1 SCL=1;
45 1 delay(3);
46 1 SDA=0;
47 1 delay(3);
48 1 SCL=0;
49 1 }
50
51 //*************Stop***********//
52 void I2C_stop(void)
53 {
54 1 SDA=0;
55 1 SCL=1;
C51 COMPILER V7.02a I2CTEST 09/30/2004 14:29:31 PAGE 2
56 1 delay(3);
57 1 SDA=1;
58 1 delay(3);
59 1 SCL=0;
60 1 }
61
62 //*************Ack**************//
63 void I2C_ack(void)
64 {
65 1 SDA=0;
66 1 SCL=1;
67 1 delay(3);
68 1 SCL=0;
69 1 SDA=1;
70 1 }
71
72 //*************No Ack*********//
73 void I2C_nack(void)
74 {
75 1 SDA=1;
76 1 SCL=1;
77 1 delay(3);
78 1 SCL=0;
79 1 SDA=0;
80 1 }
81
82 //*********Check ack signal*******//
83 bit I2C_Cack(void)
84 {
85 1 bit a;
86 1 SDA=1;
87 1 SCL=1;
88 1 delay(1);
89 1 a=SDA;
90 1 delay(1);
91 1 SCL=0;
92 1 delay(3);
93 1 if(a==1)
94 1 {
95 2 return 1;
96 2 }
97 1 else
98 1 {
99 2 return 0;
100 2 }
101 1 }
102
103 //**********Send a Bety*********//
104 void I2C_Send_byte(char da)
105 {
106 1 unsigned char i;
107 1 for(i=0;i<8;i++)
108 1 {
109 2 if((da<<i)&0x80)
110 2 {
111 3 SDA=1; //send "1"//
112 3 SCL=1;
113 3 delay(3);
114 3 SCL=0;
115 3 SDA=0;
116 3 delay(3);
117 3 }
C51 COMPILER V7.02a I2CTEST 09/30/2004 14:29:31 PAGE 3
118 2 else
119 2 {
120 3 SDA=0; //send "0"//
121 3 SCL=1;
122 3 delay(3);
123 3 SCL=0;
124 3 delay(3);
125 3 }
126 2 }
127 1 }
128
129 //*************receive a byte *********//
130 unsigned char I2C_Receive_byte(void)
131 {
132 1 unsigned char i,da=0;
133 1 bit a;
134 1 for(i=0;i<8;i++)
135 1 {
136 2 SDA=1;
137 2 SCL=1;
138 2 delay(3);
139 2 a=SDA;
140 2 delay(3);
141 2 SCL=0;
142 2 if(a==1)
143 2 {
144 3 da=da<<1;
145 3 da=da|0x01;
146 3 }
147 2 else
148 2 {
149 3 da=da<<1;
150 3 }
151 2 }
152 1 return da;
153 1 }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -