?? iic_pca8574.lst
字號:
C51 COMPILER V7.09 IIC_PCA8574 08/24/2007 09:37:35 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE IIC_PCA8574
OBJECT MODULE PLACED IN IIC_PCA8574.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE IIC_PCA8574.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include"Config.h"
3 #include"IOCfg.c"
4 #include"TimeDLY.h"
5 #include"IIC_PCA8574.h"
6
7 //IC起始信號:
8 void StartIIC(void)
9 {
10 1 IIC_SDA = 1;
11 1 nNop(20);
12 1 IIC_SCL = 1;
13 1 nNop(20);
14 1 IIC_SDA = 0;
15 1 nNop(20);
16 1 IIC_SCL = 0;
17 1 //nNop(50);
18 1 }
19
20 //IIC停止信號:
21 void StopIIC(void)
22 {
23 1 IIC_SDA = 0;
24 1 nNop(20);
25 1 IIC_SCL = 1;
26 1 nNop(20);
27 1 IIC_SDA = 1;
28 1 nNop(50);
29 1 }
30
31 //讀取從機應答信號函數:
32 bit GetACK(void)
33 {
34 1 bit ack;
35 1 IIC_SDA = 1;
36 1 IIC_SCL = 1;
37 1 nNop(50);
38 1 ack = IIC_SDA;
39 1 IIC_SCL = 0;
40 1 nNop(50);
41 1 return(ack);
42 1 }
43
44 //向IIC總線發出應答信號函數:
45 void PutACK(bit ack)
46 {
47 1 IIC_SDA = ack;
48 1 IIC_SCL = 1;
49 1 nNop(50);
50 1 IIC_SCL = 0;
51 1 nNop(50);
52 1 }
53
54 //初始化IIC總線函數:
55 void InitIIC(void)
C51 COMPILER V7.09 IIC_PCA8574 08/24/2007 09:37:35 PAGE 2
56 {
57 1 IIC_SCL = 1;
58 1 nNop(10);
59 1 IIC_SDA = 1;
60 1 nNop(50);
61 1 }
62
63 //功能向IIC總線寫一字節數據函數:
64 void IIC_WriteByte(INT8U temp)
65 {
66 1 INT8U i;
67 1 for(i=0;i<8;i++)
68 1 {
69 2 IIC_SDA = (bit)(temp & 0x80);
70 2 temp = temp << 1;
71 2 nNop(20);
72 2 IIC_SCL = 1;
73 2 nNop(20);
74 2 IIC_SCL = 0;
75 2 //nNop(50);
76 2 }
77 1 }
78
79 //從IIC總線讀一字節數據函數:
80 INT8U IIC_ReadByte(void)
81 {
82 1 INT8U i;
83 1 INT8U temp;
84 1 IIC_SDA = 1;
85 1 for(i=0;i<8;i++)
86 1 {
87 2 temp = temp << 1;
88 2 IIC_SCL = 1;
89 2 while(IIC_SDA) temp++;
90 2 IIC_SCL = 0;
91 2 nNop(20);
92 2 }
93 1 return(temp);
94 1 }
95
96 //向PCA8574寫一字節數據函數:
97 bit PCA8574_PutOne(INT8U SlaveAddr,INT8U dat)
98 {
99 1 //確保從機地址最低位是0
100 1 SlaveAddr &= 0xfe;
101 1
102 1 //啟動I2C總線
103 1 StartIIC();
104 1
105 1 //發送數據
106 1 IIC_WriteByte(dat);
107 1 if ( GetACK() )
108 1 {
109 2 StopIIC();
110 2 return 1;
111 2 }
112 1
113 1 //發送完畢,停止I2C總線,返回
114 1 StopIIC();
115 1 return 0;
116 1 }
117
C51 COMPILER V7.09 IIC_PCA8574 08/24/2007 09:37:35 PAGE 3
118 //從PCA8574讀一字節數據函數:
119 bit PCA8574_GetOne(INT8U SlaveAddr,INT8U dat)
120 {
121 1 while(IIC_INT!=0);
122 1 SlaveAddr |= 0x01;
123 1
124 1 //啟動I2C總線
125 1 StartIIC();
126 1
127 1 //發送從機地址
128 1 IIC_WriteByte(SlaveAddr);
129 1 if ( GetACK() )
130 1 {
131 2 StopIIC();
132 2 return 1;
133 2 }
134 1
135 1 //接收數據
136 1 dat = IIC_ReadByte();
137 1 PutACK(1);
138 1
139 1 //接收完畢,停止I2C總線,返回
140 1 StopIIC();
141 1 return 0;
142 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 250 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 7
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -