📄 lpc915_i2c.lst
字号:
C51 COMPILER V7.50 LPC915_I2C 11/10/2007 23:09:45 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LPC915_I2C
OBJECT MODULE PLACED IN LPC915_I2C.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE LPC915_I2C.C BROWSE DEBUG OBJECTEXTEND
line level source
1
2 #include "reg915.h"
3 #include "LPC915_I2C.H"
4
5 sbit SI = I2CON^3;
6
7 #define GENERATE_STOP 0x54 //置位 STO, 复位 STA 、 SI
8 #define RELEASE_BUS_ACK 0x44 //复位 STO,STA,SI 并置位 AA (ack)
9 #define RELEASE_BUS_NOACK 0x40 //复位 STO,STA,SI 并置位 AA (noack)
10 #define RELEASE_BUS_STA 0x64 //起动总线/重新起动总线, 置位 STA
11
12 #define sla 0x6C //器件地址
13
14 //申请总线
15 void GetBus()
16 { I2SCLH = 15; //柚肧SCL高电平的PCLK周期数
17 1 I2SCLL = 15; //柚肧CL低电平的PCLK周期数,6MHz时为100Kbit/S
18 1 //申请成为主机,起动总线。使用内部SCL发生器,I2EN和AA置位。
19 1 I2CON = RELEASE_BUS_STA;
20 1 while( SI==0 ); //等待起始位的发送
21 1 }
22
23 //发送数据函数
24 void SendByte(unsigned char c)
25 { I2DAT = c;
26 1 I2CON = RELEASE_BUS_ACK; //清除SI位等等
27 1 while( SI==0 ); //等待数据的发送
28 1 }
29
30 //向寄存器地址发送字节数据函数
31
32 bit ISendByte(unsigned char suba, unsigned char dat)
33 { GetBus(); //启动总线
34 1 SendByte(sla); //发送器件地址,并接收应答位
35 1 if( I2STAT!=0x18 ) //无从机应答则退出操作
36 1 { I2CON = GENERATE_STOP;
37 2 return(0);
38 2 }
39 1 SendByte(suba); //寄存器器件地址,并接收应答位
40 1 if( I2STAT!=0x28 )
41 1 { I2CON = GENERATE_STOP;
42 2 return(0);
43 2 }
44 1 SendByte(dat); //发送数据
45 1 if( I2STAT!=0x28 )
46 1 { I2CON = GENERATE_STOP;
47 2 return(0);
48 2 }
49 1 I2CON = GENERATE_STOP; //结束总线
50 1 return(1);
51 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 76 ----
C51 COMPILER V7.50 LPC915_I2C 11/10/2007 23:09:45 PAGE 2
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 + -