📄 i2c.lst
字号:
C51 COMPILER V7.50 I2C 12/01/2007 10:47:34 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE I2C
OBJECT MODULE PLACED IN I2C.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE I2C.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg52.h> //包括一个52标准内核的头文件
2 //变量类型标识的宏定义
3 #define uchar unsigned char //定义一下方便使用
4
5 #define WriteDeviceAddress 0xa0 //定义器件在IIC总线中的地址
6 #define ReadDviceAddress 0xa1
7
8 sbit SCL=P1^7;
9 sbit SDA=P1^6;
10
11 void DelayMs(unsigned int number);
12
13 //开始总线
14 void Start()
15 {
16 1 SDA=1;
17 1 SCL=1;
18 1 SDA=0;
19 1 SCL=0;
20 1 }
21 //结束总线
22 void Stop()
23 {
24 1 SCL=0;
25 1 SDA=0;
26 1 SCL=1;
27 1 SDA=1;
28 1 }
29 //发ACK0
30 void NoAck()
31 {
32 1 SDA=1;
33 1 SCL=1;
34 1 SCL=0;
35 1 }
36 //测试ACK
37 bit TestAck()
38 {
39 1 bit ErrorBit;
40 1 SDA=1;
41 1 SCL=1;
42 1 ErrorBit=SDA;
43 1 SCL=0;
44 1 return(ErrorBit);
45 1 }
46 //写入8个bit到24c02
47 Write8Bit(unsigned char input)
48 {
49 1 unsigned char temp;
50 1 for(temp=8;temp!=0;temp--)
51 1 {
52 2 SDA=(bit)(input&0x80);
53 2 SCL=1;
54 2 SCL=0;
55 2 input=input<<1;
C51 COMPILER V7.50 I2C 12/01/2007 10:47:34 PAGE 2
56 2 }
57 1 }
58 //写入一个字节到24c02中
59 Write24c02(uchar ch,uchar address)
60 {
61 1 Start();
62 1 Write8Bit(WriteDeviceAddress);
63 1 TestAck();
64 1 Write8Bit(address);
65 1 TestAck();
66 1
67 1 Write8Bit(ch);
68 1 TestAck();
69 1
70 1 Stop();
71 1 DelayMs(10);
72 1 }
73 //从24c02中读出8个bit
74 uchar Read8Bit()
75 {
76 1 unsigned char temp,rbyte=0;
77 1 for(temp=8;temp!=0;temp--)
78 1 {
79 2 SCL=1;
80 2 rbyte=rbyte<<1;
81 2 rbyte=rbyte|((unsigned char)(SDA));
82 2 SCL=0;
83 2 }
84 1 return(rbyte);
85 1 }
86 //从24c02中读出1个字节
87 uchar Read24c02(uchar address)
88 {
89 1 uchar ch;
90 1
91 1 Start();
92 1 Write8Bit(WriteDeviceAddress);
93 1 TestAck();
94 1 Write8Bit(address);
95 1 TestAck();
96 1 Start();
97 1 Write8Bit(ReadDviceAddress);
98 1 TestAck();
99 1 ch=Read8Bit();
100 1 NoAck();
101 1 Stop();
102 1 return(ch);
103 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 149 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -