📄 open_i2c.lst
字号:
C51 COMPILER V7.06 OPEN_I2C 08/18/2005 15:30:30 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE OPEN_I2C
OBJECT MODULE PLACED IN Open_I2C.OBJ
COMPILER INVOKED BY: d:\Keil777\C51\BIN\C51.EXE Open_I2C.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <io.h>
*** WARNING C318 IN LINE 1 OF Open_I2C.c: can't open file 'io.h'
2 #include "system.h"
3 #include "Open_I2C.h"
4 //-------------------------------------------------------------------------
5 unsigned int I2C_Read_Period()
6 {
7 1 unsigned char low,high;
8 1 low = IORD(I2C_0_BASE,I2C_PRER_LO);
*** WARNING C206 IN LINE 8 OF OPEN_I2C.C: 'IORD': missing function-prototype
*** ERROR C267 IN LINE 8 OF OPEN_I2C.C: 'IORD': requires ANSI-style prototype
9 1 high= IORD(I2C_0_BASE,I2C_PRER_HI);
10 1 return (high<<16)+low;
11 1 }
12 //-------------------------------------------------------------------------
13 unsigned char I2C_Read_Ctrl()
14 {
15 1 return IORD(I2C_0_BASE,I2C_CTR);
16 1 }
17 //-------------------------------------------------------------------------
18 unsigned char I2C_Read_RX()
19 {
20 1 return IORD(I2C_0_BASE,I2C_RXR);
21 1 }
22 //-------------------------------------------------------------------------
23 unsigned char I2C_Read_Status()
24 {
25 1 return IORD(I2C_0_BASE,I2C_SR);
26 1 }
27 //-------------------------------------------------------------------------
28 void I2C_Write_Period(unsigned int Period)
29 {
30 1 IOWR(I2C_0_BASE,I2C_PRER_LO,Period&0xFF);
31 1 IOWR(I2C_0_BASE,I2C_PRER_HI,Period>>16);
32 1 }
33 //-------------------------------------------------------------------------
34 void I2C_Write_Ctrl(unsigned char value)
35 {
36 1 IOWR(I2C_0_BASE,I2C_CTR,value);
37 1 }
38 //-------------------------------------------------------------------------
39 void I2C_Write_TX(unsigned char value)
40 {
41 1 IOWR(I2C_0_BASE,I2C_TXR,value);
42 1 }
43 //-------------------------------------------------------------------------
44 void I2C_Write_CMD(unsigned char value)
45 {
46 1 IOWR(I2C_0_BASE,I2C_CR,value);
47 1 }
48 //-------------------------------------------------------------------------
49 void I2C_Init(unsigned int Period)
50 {
51 1 I2C_Ctrl_Reg a;
52 1 I2C_Write_Period(Period);
C51 COMPILER V7.06 OPEN_I2C 08/18/2005 15:30:30 PAGE 2
53 1 a.I2C_Ctrl_Flags.CORE_ENABLE=1;
54 1 a.I2C_Ctrl_Flags.INT_ENABLE=1;
55 1 a.I2C_Ctrl_Flags.RESERVED=0;
56 1 I2C_Write_Ctrl(a.Value);
57 1 }
58 //-------------------------------------------------------------------------
59 unsigned char I2C_Send(unsigned char value,unsigned char STA,unsigned char STO)
60 {
61 1 unsigned char ACK;
62 1 I2C_CMD_Reg I2C_CMD;
63 1 I2C_Status_Reg I2C_Status;
64 1 I2C_Write_TX(value);
65 1 I2C_CMD.Value=0;
66 1 if(STA!=0)
67 1 I2C_CMD.I2C_CMD_Flags.STA=1;
68 1 if(STO!=0)
69 1 I2C_CMD.I2C_CMD_Flags.STO=1;
70 1 I2C_CMD.I2C_CMD_Flags.WR=1;
71 1 I2C_Write_CMD(I2C_CMD.Value);
72 1 do
73 1 {
74 2 I2C_Status.Value=I2C_Read_Status();
75 2 }
76 1 while(I2C_Status.I2C_Status_Flags.TIP);
77 1 if(!I2C_Status.I2C_Status_Flags.RXACK)
78 1 ACK=1;
79 1 else
80 1 ACK=0;
81 1 return ACK;
82 1 }
83 //-------------------------------------------------------------------------
84
C51 COMPILATION COMPLETE. 2 WARNING(S), 1 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -