📄 24cxx.lst
字号:
C51 COMPILER V7.06 24CXX 11/06/2008 01:10:35 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 24CXX
OBJECT MODULE PLACED IN 24cxx.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE c51\24cxx.c INCDIR(.\Target\INC\) DEBUG OBJECTEXTEND PRINT(.\24cxx.lst) OBJ
-ECT(24cxx.obj)
stmt level source
1
2
3 #include "AT89X52.h"
4 #include "ES51_II.h"
5 #include "ES51_II_LIB.h"
6
7 #include <intrins.h>
8
9
10 #define DELAY_1US {_nop_();}
11
12
13 // 操作起始
14 void I2c_Start(void)
15 {
16 1 SDA = 1; // 发送起始条件的数据信号
17 1 SCL = 1;
18 1 DELAY_1US;
19 1 SDA = 0; // 发送起始信号
20 1 DELAY_1US;
21 1 SCL = 0; // 钳住I2C总线,准备发送或接收数据
22 1 }
23
24 // 操作结束
25 void I2c_Stop(void)
26 {
27 1 SDA = 0;
28 1 DELAY_1US;
29 1 SCL = 1;
30 1 DELAY_1US;
31 1 SDA = 1; // 发送I2C总线结束信号
32 1 DELAY_1US;
33 1 SDA = 1;; //
34 1 }
35
36 //写一个字节数据
37 void I2c_WrByte(unsigned char dat)
38 {
39 1 unsigned char i;
40 1
41 1 for(i=0;i!=8;i++) // 输出8位数据
42 1 {
43 2 if( dat & 0x80 )
44 2 SDA = 1;
45 2 else
46 2 SDA = 0;
47 2 DELAY_1US;
48 2 SCL = 1;
49 2 dat<<=1;
50 2 DELAY_1US;
51 2 SCL = 0;
52 2 }
53 1 SDA = 1;
54 1 DELAY_1US;
C51 COMPILER V7.06 24CXX 11/06/2008 01:10:35 PAGE 2
55 1 SCL = 1; // 接收应答
56 1 DELAY_1US;
57 1 SCL = 0;
58 1 }
59
60
61 //读一个字节数据
62 unsigned char I2c_RdByte(void)
63 {
64 1 unsigned char dat,i;
65 1
66 1 SDA = 1;
67 1 dat=0;
68 1 for(i=0;i!=8;i++) // 输入8位数据
69 1 {
70 2 DELAY_1US; // 可选延时
71 2 SCL = 1;
72 2 DELAY_1US; // 可选延时
73 2 dat<<=1;
74 2 if( SDA )
75 2 dat++; // 输入1位
76 2 SCL = 0;
77 2 }
78 1 SDA = 1;
79 1 DELAY_1US;
80 1 SCL = 1; // 发出无效应答
81 1 DELAY_1US;
82 1 SCL = 0;
83 1 return(dat);
84 1 }
85
86
87 //
88 void EEPROM_WrOneByte(unsigned char slave,unsigned char addr,unsigned char dat)
89 {
90 1 unsigned char i=200;
91 1
92 1 I2c_Start(); // 启动总线
93 1 I2c_WrByte( slave & 0xfe ); // 写器件从地址,写器件
94 1 I2c_WrByte( addr ); // 写器件片内地址
95 1 I2c_WrByte( dat ); // 发送数据
96 1 I2c_Stop(); // 结束总线
97 1 while(i--);
98 1 }
99
100 //
101 unsigned char EEPROM_RdOneByte(unsigned char slave,unsigned char addr)
102 {
103 1 unsigned char value, i=200;
104 1
105 1 I2c_Start(); // 启动总线
106 1 I2c_WrByte( slave & 0xfe ); // 写器件从地址,写器件
107 1 I2c_WrByte( addr ); // 写器件片内地址
108 1 //I2c_Stop();
109 1
110 1 I2c_Start();
111 1 I2c_WrByte( slave | 0x01 ); // 写器件从地址,读器件
112 1 value = I2c_RdByte(); // 发送数据
113 1 I2c_Stop(); // 结束总线
114 1
115 1 while(i--);
116 1 return value;
C51 COMPILER V7.06 24CXX 11/06/2008 01:10:35 PAGE 3
117 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 160 ----
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 + -