📄 mcp3232.lst
字号:
C51 COMPILER V8.02 MCP3232 03/25/2009 14:54:15 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MCP3232
OBJECT MODULE PLACED IN MCP3232.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE MCP3232.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 #include <intrins.h>
3 #define uchar unsigned char
4 #define uint unsigned int
5 sbit SDA=P2^4;
6 sbit SCL=P2^3;
7
8
9 /*************************/
10 //iic初始化
11 void start_iic() //产生iic起始信号
12 {
13 1 SDA=1;;
*** ERROR C100 IN LINE 13 OF MCP3232.C: unprintable character 0xA3 skipped
*** ERROR C100 IN LINE 13 OF MCP3232.C: unprintable character 0xBB skipped
14 1 SCL=1;
15 1 _nop_();
16 1 _nop_();
17 1 _nop_();
18 1 _nop_();
19 1 SDA=0; //发送起始信号
20 1 _nop_();
21 1 _nop_();
22 1 _nop_();
23 1 _nop_();
24 1 SCL=0;
25 1 }
26
27 void stop_iic() //产生IIc停止信号
28 {
29 1 SDA=0;;
*** ERROR C100 IN LINE 29 OF MCP3232.C: unprintable character 0xA3 skipped
*** ERROR C100 IN LINE 29 OF MCP3232.C: unprintable character 0xBB skipped
30 1 SCL=1;
31 1 _nop_();
32 1 _nop_();
33 1 _nop_();
34 1 _nop_();
35 1 SDA=1; //发送停止信号
36 1 _nop_();
37 1 _nop_();
38 1 _nop_();
39 1 _nop_();
40 1 SCL=0;
41 1 }
42
43 void ack_iic() //产生iic应答信号
44 {
45 1 SDA=0;;
*** ERROR C100 IN LINE 45 OF MCP3232.C: unprintable character 0xA3 skipped
*** ERROR C100 IN LINE 45 OF MCP3232.C: unprintable character 0xBB skipped
46 1 SCL=1;
47 1 _nop_();
48 1 _nop_();
49 1 _nop_();
C51 COMPILER V8.02 MCP3232 03/25/2009 14:54:15 PAGE 2
50 1 _nop_();
51 1 SCL=0;
52 1 SDA=1;
53 1 }
54
55 void nack_iic()//产生iic非应答信号
56 {
57 1 SDA=1;;
*** ERROR C100 IN LINE 57 OF MCP3232.C: unprintable character 0xA3 skipped
*** ERROR C100 IN LINE 57 OF MCP3232.C: unprintable character 0xBB skipped
58 1 SCL=1;
59 1 _nop_();
60 1 _nop_();
61 1 _nop_();
62 1 _nop_();
63 1 SCL=0;
64 1 SDA=0;
65 1 }
66
67 /**********************************/
68 //向iic总线上发送1字节数据
69 while_byte(uchar c)
70 {
71 1 uchar i;
72 1 for(i=0;i<8;i++)
73 1 {
74 2 if(c&0x80)SDA=1;
75 2 else SDA=0;
76 2 SCL=1;
77 2 _nop_();
78 2 _nop_();
79 2 _nop_();
80 2 _nop_();
81 2 SCL=0;
82 2 c=c<<1;
83 2 }
84 1 SDA=1;
85 1 SCL=1;
86 1 _nop_();
87 1 _nop_();
88 1 _nop_();
89 1 _nop_();
90 1 if(SDA==1)F0=0;
91 1 else F0=1;
92 1 SCL=0;
93 1 }
94
95 // 从iic总线上读取1字节数据
96 uchar read_byte()
97 {
98 1 uchar i;
99 1 uchar r=0;
100 1 SDA=1;
101 1 for(i=0;i<8;i++)
102 1 {
103 2 r=r<<1;
104 2 SCL=1;
105 2 _nop_();
106 2 _nop_();
107 2 _nop_();
108 2 _nop_();
109 2 if(SDA==1)r++;
C51 COMPILER V8.02 MCP3232 03/25/2009 14:54:15 PAGE 3
110 2 SCL=0;
111 2 }
112 1 return r;
113 1 }
114
115 // 从iic总线上读取n个字节数据
116 bit read_nbyte(uchar slave,uchar *s,uchar num)
117 {
118 1 uchar i;
119 1 start_iic(); /*启动总线*/
120 1 send_byte(slave); /*发送器件地址*/
121 1 if(F0==0) return(0);
122 1 for(i=0;i<num-1;i++)
123 1 {
124 2 *s=read_byte(); /*发送数据*/
125 2 ack_iic(0); /*发送就答位*/
126 2 s++;
127 2 }
128 1 *s=read_byte();
129 1 ack_iic(); /*发送非应位*/
130 1 stop_iic(); /*结束总线*/
131 1 return(1);
132 1 }
133
134 void main() //主函数
135 {
136 1 read_nbyte(0x9b;16;2)
137 1 }
138
139
140
141
142
143
144
145
146
147
C51 COMPILATION COMPLETE. 0 WARNING(S), 8 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -