📄 main.lst
字号:
C51 COMPILER V8.08 MAIN 02/14/2008 16:13:50 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2 #include <reg52.h>
3
4 #include<stdio.h>
5
6 #include <string.h>
7 #include "intrins.h"
8
9
10 sbit wr_62256 =P2^0;
11 sbit oe_62256 =P2^1;
12 sbit ce_62256 =P2^2;
13
14
15 sbit SDA = P2^7;
16 sbit SCL = P2^6 ;
17
18
19 unsigned char slvadr;
20
21 sbit TLC1456_so =P1^4;
22 sbit TLC1456_clk =P1^6;
23 sbit TLC1456_cs0 =P1^5;
24 sbit TLC1456_cs1 =P1^3;
25 sbit TLC1456_clr =P1^7;
26
27 void SendD(unsigned int dat,unsigned char num)
28 {
29 1 unsigned char i=0;
30 1
31 1 if (num==0)
32 1 TLC1456_cs0 = 0;
33 1 else
34 1 TLC1456_cs1 = 0;
35 1
36 1 for (i=12; i>0; i--)
37 1 {
38 2 TLC1456_so = dat & 0x0200;
39 2 TLC1456_clk = 1;
40 2 dat <<= 1;
41 2 TLC1456_clk = 0;
42 2 }
43 1
44 1 if (num==0 )
45 1 TLC1456_cs0 = 1;
46 1 else
47 1 TLC1456_cs1 = 1;
48 1
49 1 TLC1456_clk = 0;
50 1
51 1 }
52
53 sbit TLC1864_sdo =P1^1;
54 sbit TLC1864_clk =P1^2;
55 sbit TLC1864_conv =P1^0;
C51 COMPILER V8.08 MAIN 02/14/2008 16:13:50 PAGE 2
56 unsigned int get_ADC(void)
57 {
58 1 unsigned char i=0;
59 1 unsigned int tmp=0;
60 1
61 1 TLC1864_conv=0;
62 1 TLC1864_sdo=1;
63 1 TLC1864_clk=0;
64 1 /* _nop_();_nop_();_nop_();_nop_();
65 1 _nop_();_nop_();_nop_();_nop_();
66 1 _nop_();_nop_();_nop_();_nop_();
67 1 _nop_();_nop_();_nop_();_nop_();
68 1 _nop_();_nop_();_nop_();_nop_();
69 1 _nop_();_nop_();_nop_();_nop_();
70 1 _nop_();_nop_();_nop_();_nop_();
71 1 _nop_();_nop_();_nop_();_nop_();
72 1 _nop_();_nop_();_nop_();_nop_();
73 1 _nop_();_nop_();_nop_();_nop_();
74 1 _nop_();_nop_();_nop_();_nop_();
75 1 _nop_();_nop_();_nop_();_nop_();
76 1 _nop_();_nop_();_nop_();_nop_();
77 1 _nop_();_nop_();_nop_();_nop_();
78 1 _nop_();_nop_();_nop_();_nop_();
79 1 _nop_();_nop_();_nop_();_nop_();_ */
80 1
81 1 for (i=12;i>0;i--)
82 1 {
83 2 _nop_();_nop_();_nop_();_nop_();
84 2 _nop_();_nop_();_nop_();_nop_();
85 2 TLC1864_clk=1;
86 2
87 2 TLC1864_clk=0;
88 2
89 2 tmp <<= 1;
90 2 if ( TLC1864_sdo )
91 2 tmp |= 0x01;
92 2
93 2 _nop_();_nop_();_nop_();_nop_();
94 2 _nop_();_nop_();_nop_();_nop_();
95 2 }
96 1
97 1 TLC1864_conv=1;
98 1 return tmp;
99 1 }
100
101
102
103 #define TRUE 1
104 #define FALSE 0
105
106 void IIC_Start(void);
107 void IIC_Stop(void);
108 void IIC_TxByte(unsigned char tx_byte);
109 unsigned char IIC_RxByte(void);
110 unsigned char IIC_WaitAck(void);
111 void IIC_SendAck(void);
112 void IIC_SendNoAck(void);
113
114
115 /*******************************************************************************
116 *** 函 数 名: static void IIC_Start(void)
117 *** 功能描述:
C51 COMPILER V8.08 MAIN 02/14/2008 16:13:50 PAGE 3
118 *** 全局变量: NO !
119 *** 输 入: NO !
120 *** 输 出: NO !
121 *** 创 建 人:huangtiexiong 日期:2006-11-28
122 *** 修 改 人: 日期:2006-11-28
123 *** 函数说明: Start IIC.
124 /******************************************************************************/
125 void IIC_Start(void)
126 {
127 1 EA = 0; //关中断;
128 1 SDA = 1; //初始化总线;
129 1 SCL = 1;
130 1 _nop_();
131 1 SDA = 0; //启动总线;
132 1 _nop_();
133 1 SCL = 0; //准备数据发送,启动IIC之后传输线全部置0;
134 1 }
135 /*******************************************************************************
136 *** 函 数 名: static void IIC_TxByte(unsigned char tx_byte)
137 *** 功能描述: 发送一个字节;
138 *** 全局变量: NO !
139 *** 输 入: tx_byte
140 *** 输 出: NO !
141 *** 创 建 人:huangtiexiong 日期:2006-11-28
142 *** 修 改 人: 日期:2006-11-28
143 *** 函数说明: 操作完成后保证SCL为0;
144 /******************************************************************************/
145 void IIC_TxByte(unsigned char tx_byte)
146 {//SDA:0; SCL:0.
147 1 unsigned char i;
148 1 for(i=0;i<8;i++)
149 1 {
150 2 if(tx_byte & 0x80)
151 2 SDA = 1; //因为Start函数中以把SCL拉低,数据直接发送;
152 2 else
153 2 SDA = 0;
154 2 tx_byte <<= 1; //因为发送顺序:由Msb——>Lsb;
155 2 SCL = 1;
156 2 _nop_(); //延时;
157 2 SCL = 0;
158 2 }
159 1 }
160 /*******************************************************************************
161 *** 函 数 名: static bool IIC_WaitAck(void)
162 *** 功能描述: 发送一个字节;
163 *** 全局变量: NO !
164 *** 输 入: tx_byte
165 *** 输 出: NO !
166 *** 创 建 人:huangtiexiong 日期:2006-11-28
167 *** 修 改 人: 日期:2006-11-28
168 *** 函数说明: 操作完成后保证SCL为0;
169 /******************************************************************************/
170 unsigned char IIC_WaitAck(void)
171 {//SDA:U; SCL:0.
172 1 unsigned char waitTime = 0xff; //设置Ack信号超时数;
173 1 SDA = 1; //将数据线拉高;
174 1 SCL = 1; //启动Ack脉冲;
175 1 _nop_();
176 1 while(SDA)
177 1 {
178 2 waitTime--;
179 2 if(!waitTime)
C51 COMPILER V8.08 MAIN 02/14/2008 16:13:50 PAGE 4
180 2 {
181 3 SCL = 0; //SCL=0;
182 3 IIC_Stop();
183 3 return FALSE;
184 3 }
185 2 }
186 1 SCL = 0; //操作完成后确认SCL为0,此时SDA=0;
187 1 return TRUE;
188 1 }
189 /*******************************************************************************
190 *** 函 数 名: static unsigned char IIC_RxByte(void)
191 *** 功能描述: 接收一个字节;
192 *** 全局变量: NO !
193 *** 输 入: NO !
194 *** 输 出: 接收字节:tmp
195 *** 创 建 人:huangtiexiong 日期:2006-11-28
196 *** 修 改 人: 日期:2006-11-28
197 *** 函数说明: 操作完成后保证SCL为0;
198 /******************************************************************************/
199 unsigned char IIC_RxByte(void)
200 {//SDA:0; SCL:0;
201 1 unsigned char tmp = 0;
202 1 unsigned char i;
203 1 for(i=0;i<8;i++)
204 1 {
205 2 SCL = 0;
206 2 SDA = 1; //向I/O口写1后准备读入;
207 2 _nop_();
208 2 SCL = 1;
209 2 _nop_();
210 2 tmp <<= 1;
211 2 if(SDA)
212 2 {
213 3 tmp |= 0x01;
214 3 }
215 2 }
216 1 SCL = 0; //SCL=0;
217 1 return tmp;
218 1 }
219 /*******************************************************************************
220 *** 函 数 名: static void IIC_SendAck(void)
221 *** 功能描述: 发送应答信号;
222 *** 全局变量: NO !
223 *** 输 入: NO !
224 *** 输 出: NO !
225 *** 创 建 人:huangtiexiong 日期:2006-11-28
226 *** 修 改 人: 日期:2006-11-28
227 *** 函数说明: 操作完成后保证SCL为0;
228 /******************************************************************************/
229 void IIC_SendAck(void)
230 {
231 1 SDA = 0;
232 1 _nop_();
233 1 SCL = 1;
234 1 _nop_();
235 1 SCL = 0;
236 1 }
237 /*******************************************************************************
238 *** 函 数 名: static void IIC_SendNoAck(void)
239 *** 功能描述: 发送非应答信号;
240 *** 全局变量: NO !
241 *** 输 入: NO !
C51 COMPILER V8.08 MAIN 02/14/2008 16:13:50 PAGE 5
242 *** 输 出: NO !
243 *** 创 建 人:huangtiexiong 日期:2006-11-28
244 *** 修 改 人: 日期:2006-11-28
245 *** 函数说明: 操作完成后保证SCL为0;
246 /******************************************************************************/
247 void IIC_SendNoAck(void)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -