📄 i2c.lst
字号:
C51 COMPILER V8.06 I2C 12/25/2007 08:55:45 PAGE 1
C51 COMPILER V8.06, COMPILATION OF MODULE I2C
OBJECT MODULE PLACED IN I2C.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE I2C.c BROWSE MODDP2 DEBUG OBJECTEXTEND
line level source
1 /**********************************
2 函数名:I2C.c
3 功 能:AT24C32读写函数
4 **********************************/
5 #include <W77C32.h>
6 #include <intrins.h>
7 #include "hal.h"
8 #include "I2C.h"
9
10 //I2C起始
11 void I2C_START(void)
12 {I2C_SCL=1;
13 1 _NOP();
14 1 I2C_SDA=1;
15 1 _NOP();
16 1 I2C_SDA=0;
17 1 _NOP();
18 1 I2C_SCL=0;
19 1 _NOP();
20 1 }
21
22 //I2C停止
23 void I2C_STOP(void)
24 {I2C_SDA=0;
25 1 _NOP();
26 1 I2C_SCL=1;
27 1 _NOP();
28 1 I2C_SDA=1;
29 1 _NOP();
30 1 }
31
32 //等待I2C应答
33 void I2C_ACK(void)
34 {uint i=0xffff;
35 1 I2C_SDA=1;
36 1 _NOP();
37 1 I2C_SCL=1;
38 1 _NOP();
39 1 do{i--;
40 2 if(I2C_SDA!=1)
41 2 {I2C_SCL=0;i=0;}
42 2 }while(i!=0);
43 1 I2C_SCL=0;
44 1 _NOP();
45 1 }
46
47 //I2C写8位
48 void I2C_WRITE_8BIT(uchar dat)
49 {uchar i;
50 1 for(i=0;i<8;i++)
51 1 {I2C_SDA=dat&0x80;
52 2 _NOP();
53 2 I2C_SCL=1;
54 2 _NOP();
55 2 I2C_SCL=0;
C51 COMPILER V8.06 I2C 12/25/2007 08:55:45 PAGE 2
56 2 _NOP();
57 2 dat<<=1;
58 2 }
59 1 I2C_ACK();
60 1 }
61
62 //I2C读8位
63 uchar I2C_READ_8BIT(void)
64 {uchar i,dat=0;
65 1 I2C_SDA=1;
66 1 for(i=0;i<8;i++)
67 1 {I2C_SCL=1;
68 2 _NOP();
69 2 if(I2C_SDA==1)
70 2 {dat|=0x01;}
71 2 I2C_SCL=0;
72 2 if(i<7)
73 2 {dat<<=1;}
74 2 }
75 1 return(dat);
76 1 }
77
78 //I2C读指定地址数据
79 uchar I2C_READ(uint addr)
80 {uchar dat;
81 1 I2C_START();
82 1 I2C_WRITE_8BIT(OP_WRITE);
83 1 I2C_WRITE_8BIT((uchar)(addr/256));
84 1 I2C_WRITE_8BIT((uchar)(addr%256));
85 1 I2C_START();
86 1 I2C_WRITE_8BIT(OP_READ);
87 1 dat=I2C_READ_8BIT();
88 1 I2C_STOP();
89 1 return(dat);
90 1 }
91
92 //I2C写数据到指定地址
93 void I2C_WRITE(uint addr,uchar dat)
94 {I2C_START();
95 1 I2C_WRITE_8BIT(OP_WRITE);
96 1 I2C_WRITE_8BIT((uchar)(addr/256));
97 1 I2C_WRITE_8BIT((uchar)(addr%256));
98 1 I2C_WRITE_8BIT(dat);
99 1 I2C_STOP();
100 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 232 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
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 + -