📄 i2c.lst
字号:
C51 COMPILER V8.05a I2C 03/26/2009 14:01:07 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE I2C
OBJECT MODULE PLACED IN I2C.OBJ
COMPILER INVOKED BY: D:\学习\Keil 3\C51\BIN\C51.EXE I2C.C BROWSE DEBUG OBJECTEXTEND
line level source
1 //**********************************************************
2 // I2C总线驱动程序源文件
3 //**********************************************************
4 #include<reg52.h>
5 #include<intrins.h>
6 #include<I2C.h>
7
8 void Start(void) //IC2总线开始信号
9 {
10 1 SDA = 1; //发送起始条件的数据信号
11 1 SCL = 1;
12 1 _nop_();
13 1 SDA = 0; //发送起始信号
14 1 SCL = 0;
15 1 _nop_(); //钳住I2C总线准备发送或接收数据
16 1 }
17
18 void Stop(void) //I2C总线结束信号
19 {
20 1
21 1 SCL = 0;
22 1 SDA = 0; //发送结束条件的数据信号
23 1 SCL = 1;
24 1 _nop_();
25 1 SDA = 1;
26 1 _nop_(); //发送结束信号
27 1 }
28
29 void Ack() //主机发送应答信号
30 {
31 1 SDA=0;
32 1 _nop_();
33 1 SCL=0;
34 1 SCL=1;
35 1 _nop_();
36 1 SCL=0;
37 1 SDA=1;
38 1 }
39
40 void NoAck() //主机发送不应答信号
41 {
42 1 SDA=1;
43 1 SCL=0;
44 1 SCL=1;
45 1 SCL=0;
46 1 SDA=0;
47 1 }
48
49 bit Test_Ack(void) //主器件接收应答信号
50 {
51 1 bit Error;
52 1 SDA = 1; //释放数据总线,准备接收应答位
53 1 SCL = 1; //置时钟线为高电平,使数据线上数据有效
54 1 Error=SDA;
55 1 SCL = 0;
C51 COMPILER V8.05a I2C 03/26/2009 14:01:07 PAGE 2
56 1 return Error;
57 1 }
58
59 void Write_OneByte(unsigned char Data) //主机向I2C器件写一字节数据
60 {
61 1 uchar i;
62 1 for(i=8 ; i ; --i)
63 1 {
64 2 SDA=(bit)(Data&0x80);
65 2 SCL=0;
66 2 SCL=1;
67 2 SCL=0;
68 2 Data <<= 1;
69 2 }
70 1 }
71
72 unsigned char Read_OneByte(void) //主机从I2C总线上读一字节数据
73 {
74 1 uchar i;
75 1 uchar Data = 0;
76 1 for( i=8 ; i ; --i)
77 1 {
78 2 SCL = 0;
79 2 SCL = 1; //置时钟线为高电平,使数据线上数据有效
80 2 Data <<= 1;
81 2 Data=Data|((unsigned char)(SDA));
82 2 SCL = 0;
83 2 }
84 1 return Data;
85 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 101 ----
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 + -