📄 main.lst
字号:
C51 COMPILER V8.02 MAIN 09/24/2007 16:51:01 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: f:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "C8051F340.h"
2 #include <intrins.h>
3 #define SomeNop() _nop_();_nop_();_nop_();_nop_();_nop_();
4 sbit SCL=P0^1;
5 sbit SDA=P0^0;
6 sbit RST=P0^6;
7 /////////////////////////////////////
8 // Generated Initialization File //
9 /////////////////////////////////////
10 // Peripheral specific initialization functions,
11 // Called from the Init_Device() function
12 void PCA_Init()
13 {
14 1 PCA0MD &= ~0x40;
15 1 PCA0MD = 0x00; //禁止看门狗
16 1 }
17
18 void Port_IO_Init()
19 {
20 1 // P0.0 - Skipped, Open-Drain, Digital
21 1 // P0.1 - Skipped, Open-Drain, Digital
22 1 // P0.2 - Unassigned, Open-Drain, Digital
23 1 // P0.3 - Unassigned, Open-Drain, Digital
24 1 // P0.4 - Unassigned, Open-Drain, Digital
25 1 // P0.5 - Unassigned, Open-Drain, Digital
26 1 // P0.6 - Unassigned, Push-Pull, Digital
27 1 // P0.7 - Unassigned, Open-Drain, Digital
28 1
29 1 // P1.0 - Unassigned, Open-Drain, Digital
30 1 // P1.1 - Unassigned, Open-Drain, Digital
31 1 // P1.2 - Unassigned, Open-Drain, Digital
32 1 // P1.3 - Unassigned, Open-Drain, Digital
33 1 // P1.4 - Unassigned, Open-Drain, Digital
34 1 // P1.5 - Unassigned, Open-Drain, Digital
35 1 // P1.6 - Unassigned, Open-Drain, Digital
36 1 // P1.7 - Unassigned, Open-Drain, Digital
37 1
38 1 // P2.0 - Unassigned, Open-Drain, Digital
39 1 // P2.1 - Unassigned, Open-Drain, Digital
40 1 // P2.2 - Unassigned, Open-Drain, Digital
41 1 // P2.3 - Unassigned, Open-Drain, Digital
42 1 // P2.4 - Unassigned, Open-Drain, Digital
43 1 // P2.5 - Unassigned, Open-Drain, Digital
44 1 // P2.6 - Unassigned, Open-Drain, Digital
45 1 // P2.7 - Unassigned, Open-Drain, Digital
46 1
47 1 // P3.0 - Unassigned, Open-Drain, Digital
48 1 // P3.1 - Unassigned, Open-Drain, Digital
49 1 // P3.2 - Unassigned, Open-Drain, Digital
50 1 // P3.3 - Unassigned, Open-Drain, Digital
51 1 // P3.4 - Unassigned, Open-Drain, Digital
52 1 // P3.5 - Unassigned, Open-Drain, Digital
53 1 // P3.6 - Unassigned, Open-Drain, Digital
54 1 // P3.7 - Unassigned, Open-Drain, Digital
55 1 P0MDOUT = 0x40;
C51 COMPILER V8.02 MAIN 09/24/2007 16:51:01 PAGE 2
56 1 P0SKIP = 0x03;
57 1 XBR1 = 0x40;
58 1 }
59
60 void Oscillator_Init()
61 {
62 1 OSCICN = 0x83; //系统时钟12MHz;
63 1 }
64
65 // Initialization function for device,
66 // Call Init_Device() from your main program
67 void Init_Device(void)
68 {
69 1 PCA_Init();
70 1 Port_IO_Init();
71 1 Oscillator_Init();
72 1 }
73 //----------------------------------------------------------------------------
74 void Delay(unsigned int x)
75 {
76 1 unsigned int i, j;
77 1
78 1 for (i=0; i<x; i++)
79 1 {
80 2 for (j=0; j<0xff; j++)
81 2 {;}
82 2 }
83 1 }
84 //----------------------------------------------------------------------------
85 void Init_TTQH6(void)
86 {
87 1 RST=0;
88 1 Delay(1);
89 1 RST=1;
90 1 Delay(20);
91 1
92 1 }
93
94 void I2C_Delay(void)
95 {
96 1
97 1 // SomeNop();
98 1 _nop_();//_nop_();//_nop_();_nop_();// 1uS ,>0.6uS
99 1
100 1 }
101
102 //----------------------------------------------------------------------------
103 /*
104 **start
105 ** ________
106 **SCL \______
107 ** ____
108 **SDA \__________
109 **
110 */
111 void I2C_Start(void)
112 {
113 1 SCL = 0;
114 1 I2C_Delay();
115 1 I2C_Delay();
116 1 SDA = 1;
117 1 I2C_Delay();
C51 COMPILER V8.02 MAIN 09/24/2007 16:51:01 PAGE 3
118 1 SCL = 1;
119 1 I2C_Delay();
120 1 SDA = 0;
121 1 I2C_Delay();
122 1 SCL = 0;
123 1 I2C_Delay(); //jm add
124 1 }
125 //----------------------------------------------------------------------------
126 /*
127 **stop
128 ** _______
129 **SCL ____/ -------
130 ** ____
131 **SDA _______/ ----
132 **
133 */
134 void I2C_Stop(void)
135 {
136 1 SCL = 0;
137 1 I2C_Delay();
138 1 SDA = 0;
139 1 I2C_Delay();
140 1 SCL = 1;
141 1 I2C_Delay();
142 1 while(SCL != 1) SCL = 1;
143 1 SDA = 1;
144 1 I2C_Delay();
145 1 }
146 //----------------------------------------------------------------------------
147 void I2C_Write_Byte(unsigned char w_dat)
148 {
149 1 unsigned char i;
150 1
151 1 for (i=0; i<8; i++)
152 1 {
153 2 SDA = (bit)(w_dat & 0x80);
154 2 I2C_Delay();
155 2 SCL = 1;
156 2 w_dat <<= 1;
157 2 I2C_Delay();
158 2 SCL = 0;
159 2 I2C_Delay(); //jm add
160 2
161 2
162 2 }
163 1 SDA = 1; //释放SDA数据线
164 1 I2C_Delay();
165 1
166 1 }
167 //----------------------------------------------------------------------------
168 unsigned char I2C_Read_Ack(void)
169 {
170 1 SCL = 1;
171 1 do
172 1 {
173 2 SDA = 1;
174 2
175 2 }while (SDA != 0);
176 1
177 1
178 1 SCL = 0;
179 1 I2C_Delay(); //jm add
C51 COMPILER V8.02 MAIN 09/24/2007 16:51:01 PAGE 4
180 1 return(0);
181 1 }
182 //----------------------------------------------------------------------------
183 unsigned char I2C_Read_Byte(void)
184 {
185 1 unsigned char i, r_dat;
186 1
187 1 SDA = 1;
188 1 SCL = 1;
189 1 while(SCL != 1)
190 1 { //释放
191 2 SCL = 1;
192 2 }
193 1
194 1 for (i=0; i<8; i++)
195 1 {
196 2 SCL = 1;
197 2 I2C_Delay();
198 2 r_dat <<= 1;
199 2 r_dat |= (char)SDA;
200 2 SCL = 0;
201 2 I2C_Delay(); //jm add
202 2 I2C_Delay(); //jm add
203 2 }
204 1 SDA = 1; //释放
205 1 I2C_Delay();
206 1 SCL = 1;
207 1 I2C_Delay();
208 1 SCL = 0;
209 1 return(r_dat);
210 1 }
211 //----------------------------------------------------------------------------
212 //---------------------------------------------------------------------------
213
214 unsigned char Read_TTQH6(unsigned char device_ID,unsigned char register_address)
215 {
216 1 unsigned char dat;
217 1
218 1 // I2C_Stop(); //jm delete
219 1 I2C_Start();
220 1 I2C_Write_Byte(device_ID); // 器件写地址
221 1 I2C_Read_Ack();
222 1 I2C_Write_Byte(register_address); // 寄存器地址
223 1 I2C_Read_Ack();
224 1
225 1 I2C_Stop(); //
226 1 I2C_Start(); //
227 1
228 1 I2C_Write_Byte(device_ID+1); //器件读地址
229 1 I2C_Read_Ack();
230 1 dat = I2C_Read_Byte();
231 1 //I2C_Write_Ack(); //数据已从TTQH6中读出不用再理会回传应答
232 1 I2C_Stop();
233 1
234 1 return(dat);
235 1 }
236 //----------------------------------------------------------------------------
237 void Write_TTQH6(unsigned char device_ID,unsigned char register_address,unsigned char value)
238 {
239 1
240 1 // I2C_Stop(); //jm delete
241 1 I2C_Start();
C51 COMPILER V8.02 MAIN 09/24/2007 16:51:01 PAGE 5
242 1 I2C_Write_Byte(device_ID); // 器件写地址
243 1 I2C_Read_Ack();
244 1 I2C_Write_Byte(register_address); // 寄存器地址
245 1 I2C_Read_Ack();
246 1 I2C_Write_Byte(value); // 写数据
247 1 I2C_Read_Ack();
248 1 I2C_Stop();
249 1 SomeNop();
250 1 SomeNop();
251 1 SomeNop();
252 1 SomeNop();
253 1
254 1 }
255 //------------------------------------------------------------------------
256 void main(void)
257 {
258 1 unsigned char Rdata1,Rdata2;
259 1 Init_Device();
260 1 Init_TTQH6();
261 1
262 1
263 1 // Write_TTQH6(0xC4,0x00,0x10);
264 1 //while(1)
265 1 //{
266 1
267 1 Rdata1=Read_TTQH6(0xC4,0x00);
268 1
269 1 //}
270 1
271 1 // Rdata2=Read_TTQH6(0xC4,0x00);
272 1 // while(1);
273 1
274 1
275 1 }
*** WARNING C280 IN LINE 258 OF MAIN.C: 'Rdata2': unreferenced local variable
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 318 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -