📄 iic.lst
字号:
C51 COMPILER V7.50 IIC 05/12/2009 22:59:43 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE IIC
OBJECT MODULE PLACED IN iic.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE iic.c LARGE OPTIMIZE(7,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 #define uchar unsigned char
2 #define uint unsigned int
3 #define ulong unsigned long
4 #include <reg52.h>
5 #include <absacc.h>
6 #include "intrins.h"
7 #define iicadd 0x10;
8 sbit da=P1^6;
9 sbit cl=P1^7;
10 void delaym(uint time)
11 {
12 1 for(;time!=0;time--)
13 1 ;
14 1 }
15 void sta() //启动总线传输
16 {
17 1 da=1;
18 1 delaym(20);
19 1 cl=1;
20 1 delaym(20);
21 1 da=0;
22 1 delaym(20);
23 1 cl=0;
24 1 delaym(20);
25 1 }
26 void stop() //结束总线传输
27 {
28 1 da=0;
29 1 delaym(20);
30 1 cl=1;
31 1 delaym(20);
32 1 da=1;
33 1 delaym(20);
34 1 da=0;
35 1 delaym(20);
36 1 cl=0;
37 1 delaym(20);
38 1 }
39 void mack()//发送应答位
40 {
41 1 da=0;
42 1 delaym(20);
43 1 cl=1;
44 1 delaym(20);
45 1 cl=0;
46 1 delaym(20);
47 1 da=1;
48 1 }
49 /*
50 void nmack()//发送非应答位
51 {
52 da=1;
53 delaym(20);
54 cl=1;
55 delaym(20);
C51 COMPILER V7.50 IIC 05/12/2009 22:59:43 PAGE 2
56 cl=0;
57 delaym(20);
58 da=0;
59
60 }
61 bit cack() //发送状态检测
62 {
63 bit a=0;
64 da=1;
65 delaym(20);
66 cl=1;
67 if(da==0)
68 {
69 delaym(20);
70 cl=0;
71 return(0);
72 }
73 else
74 {
75 delaym(20);
76 cl=0;
77 return(1);
78 }
79 }
80 */
81 void wr1(void)//写数据1
82 {
83 1 da=1;
84 1 delaym(20);
85 1 cl=1;
86 1 delaym(20);
87 1 cl=0;
88 1 delaym(20);
89 1 da=0;
90 1 delaym(20);
91 1 }
92 void wr0()//写数据0
93 {
94 1 da=0;
95 1 delaym(20);
96 1 cl=1;
97 1 delaym(20);
98 1 cl=0;
99 1 delaym(20);
100 1 }
101 wrbyt(uchar byt)//写一个字节的数据到总线上
102 {
103 1 uchar temp=0x00;
104 1 uchar count;
105 1 for(count=0;count<8;count++)
106 1 {
107 2 if((byt<<count)&0x80)
108 2 wr1();
109 2 else
110 2 wr0();
111 2 }
112 1 }
113 uchar rdbyt() //从总线上读取一个字节的数据
114 {
115 1 uchar a=0,i=0;
116 1 for(i=0;i<8;i++)
117 1 {
C51 COMPILER V7.50 IIC 05/12/2009 22:59:43 PAGE 3
118 2 da=1;
119 2 cl=1;
120 2 if(da==1)
121 2 {
122 3 a=(a<<1)+1;
123 3 cl=0;
124 3 }
125 2 else if(da==0)
126 2 {
127 3 a=a<<1;
128 3 cl=0;
129 3 }
130 2 }
131 1 return(a);
132 1 }
133 bit iic_testack()
134 {
135 1
136 1 bit a=0;
137 1 da=1;
138 1 delaym(20);
139 1 cl=1;
140 1 delaym(20);
141 1 if(da==0)
142 1 {
143 2 delaym(20);
144 2 cl=0;
145 2 return(0);
146 2 }
147 1 else
148 1 {
149 2 delaym(20);
150 2 cl=0;
151 2 return(1);
152 2 }
153 1 }
154
155
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 304 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 1
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -