📄 arx.lst
字号:
C51 COMPILER V7.10 ARX 06/10/2008 10:51:18 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE ARX
OBJECT MODULE PLACED IN ARX.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ARX.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <REG2051.H>
2 #include <intrins.h>
3 #include "ARX.h"
4
5
6 code unsigned char channel_num[38]=
7 {
8 0x06, 0x1c, 0x34, 0x4c, 0x18,
9 0x30, 0x48, 0x14, 0x2c, 0x44,
10 0x10, 0x28, 0x40, 0x0c, 0x24,
11 0x3c, 0x08, 0x20, 0x38, 0x04,
12 0x1e, 0x36, 0x4e, 0x1a, 0x32,
13 0x4a, 0x16, 0x2e, 0x46, 0x12,
14 0x2a, 0x42, 0x0e, 0x26, 0x3e,
15 0x0a, 0x22, 0x3a
16 };
17
18 BYTE gbLedTimer = 0;
19
20 BYTE gbKeyPressed = 0;
21 BYTE gbKeyLastId;
22 BYTE gbKeyRept;
23 BYTE gbKeyId;
24 BYTE gbVolume;
25 void KeyDetect(void);
26
27
28 #define i2c_delay() \
29 { \
30 _nop_(); \
31 _nop_(); \
32 _nop_(); \
33 _nop_(); \
34 _nop_(); \
35 _nop_(); \
36 _nop_(); \
37 _nop_(); \
38 _nop_(); \
39 _nop_(); \
40 _nop_(); \
41 _nop_(); \
42 _nop_(); \
43 _nop_(); \
44 }
45
46
47
48 void timer0(void) interrupt 1
49 {
50 1 TR0 = 0;
51 1 gbLedTimer++;
52 1 if(gbLedTimer >25){
53 2 gbLedTimer = 0;
54 2 if(LED_CON == 0)LED_CON = 1;
55 2 else LED_CON = 0;
C51 COMPILER V7.10 ARX 06/10/2008 10:51:18 PAGE 2
56 2 }
57 1 KeyDetect();
58 1
59 1 TH0 = 0xB1;
60 1 TL0 = 0xE0;
61 1 TR0 = 1;
62 1 }
63
64 void KeyDetect(void)
65 {
66 1 BYTE bKey;
67 1
68 1 bKey = KEY_INVALID;
69 1
70 1 if(VOLUP_KEY == 0) bKey = KEY_VOL_UP;
71 1 else if(VOLDN_KEY == 0) bKey = KEY_VOL_DOWN;
72 1 else if(PWR_KEY == 1) bKey = KEY_UP;
73 1
74 1 if( gbKeyPressed )
75 1 {
76 2 if( (gbKeyLastId & KEY_ID) != bKey )
77 2 {
78 3 if( gbKeyRept > KEY_REPT_COUNT ){
79 4
80 4 gbKeyLastId |= KEY_BREAK;
81 4 gbKeyPressed = 0;
82 4 gbKeyRept = 0;
83 4 }
84 3 else {
85 4 gbKeyPressed = 0;
86 4 gbKeyRept = 0;
87 4 }
88 3 }
89 2 else
90 2 {
91 3 if( gbKeyRept < KEY_REPT_LONG_COUNT )
92 3 {
93 4 gbKeyRept++;
94 4 gbKeyLastId = bKey;
95 4
96 4 }
97 3 else gbKeyLastId = (bKey|KEY_LONG);
98 3 }
99 2 }
100 1 else
101 1 {
102 2 if( (bKey>KEY_INVALID)&& !(gbKeyLastId&KEY_BREAK) )
103 2 {
104 3 gbKeyPressed = 1;
105 3 gbKeyLastId = bKey;
106 3 gbKeyRept = 0;
107 3 }
108 2 }
109 1 if( gbKeyId == KEY_GET_DONE )
110 1 {
111 2 gbKeyId = gbKeyLastId;
112 2 if( !gbKeyPressed ) gbKeyLastId = KEY_INVALID;
113 2 }
114 1 }
115
116 BYTE KeyGet( void )
117 {
C51 COMPILER V7.10 ARX 06/10/2008 10:51:18 PAGE 3
118 1 BYTE bKeyValue;
119 1 ET0 = 0;
120 1 bKeyValue = gbKeyId;
121 1 gbKeyId = KEY_GET_DONE;
122 1 ET0 = 1;
123 1 return bKeyValue;
124 1 }
125
126
127 void I2C_Start(BYTE device)
128 {
129 1 if(device == DEVICE_RF)
130 1 {
131 2 I2C_SDA = 1;
132 2 I2C_SCL = 1;
133 2 i2c_delay();
134 2 I2C_SDA = 0;
135 2 i2c_delay();
136 2 I2C_SCL = 0;
137 2 i2c_delay();
138 2 }
139 1 else
140 1 {
141 2 DAC_SDA = 1;
142 2 DAC_SCL = 1;
143 2 i2c_delay();
144 2 DAC_SDA = 0;
145 2 i2c_delay();
146 2 DAC_SCL = 0;
147 2 i2c_delay();
148 2 }
149 1 }
150
151 void I2C_Stop(BYTE device)
152 {
153 1 if(device == DEVICE_RF)
154 1 {
155 2 I2C_SDA = 0;
156 2 i2c_delay();
157 2 I2C_SCL = 1;
158 2 i2c_delay();
159 2 I2C_SDA = 1;
160 2 i2c_delay();
161 2 I2C_SCL = 0;
162 2 i2c_delay();
163 2 }
164 1 else {
165 2 DAC_SDA = 0;
166 2 i2c_delay();
167 2 DAC_SCL = 1;
168 2 i2c_delay();
169 2 DAC_SDA = 1;
170 2 i2c_delay();
171 2 DAC_SCL = 0;
172 2 i2c_delay();
173 2 }
174 1 }
175
176 void I2C_clock(BYTE device)
177 {
178 1 if(device == DEVICE_RF)
179 1 {
C51 COMPILER V7.10 ARX 06/10/2008 10:51:18 PAGE 4
180 2 I2C_SCL = 1;
181 2 i2c_delay();
182 2 I2C_SCL = 0;
183 2 i2c_delay();
184 2 }
185 1 else {
186 2 DAC_SCL = 1;
187 2 i2c_delay();
188 2 DAC_SCL = 0;
189 2 i2c_delay();
190 2 }
191 1 }
192
193 BYTE I2C_read_ack(BYTE device)
194 {
195 1 BYTE sample;
196 1
197 1 if(device == DEVICE_RF)
198 1 {
199 2 I2C_SCL = 1;
200 2 i2c_delay();
201 2 if(I2C_SDA == 0)sample = 0;
202 2 else sample = 1;
203 2
204 2 I2C_SCL = 0;
205 2 i2c_delay();
206 2
207 2 if (sample==0) return (0);
208 2 else return (1);
209 2 }
210 1 else {
211 2 DAC_SCL = 1;
212 2 i2c_delay();
213 2 if(DAC_SDA == 0)sample = 0;
214 2 else sample = 1;
215 2
216 2 DAC_SCL = 0;
217 2 i2c_delay();
218 2
219 2 if (sample==0) return (0);
220 2 else return (1);
221 2 }
222 1 }
223
224 void I2C_ack (BYTE device)
225 {
226 1 if(device == DEVICE_RF)
227 1 {
228 2 I2C_SDA = 0;
229 2 I2C_clock(device);
230 2 I2C_SDA = 1;
231 2 }
232 1 else {
233 2 DAC_SDA = 0;
234 2 I2C_clock(device);
235 2 DAC_SDA = 1;
236 2 }
237 1 }
238
239 BYTE I2C_send(BYTE device, BYTE i_data)
240 {
241 1 BYTE i;
C51 COMPILER V7.10 ARX 06/10/2008 10:51:18 PAGE 5
242 1 if(device == DEVICE_RF)
243 1 {
244 2 for (i=0;i<8;i++)
245 2 {
246 3 if (i_data&0x80)
247 3 {
248 4 I2C_SDA = 1;
249 4 }
250 3 else
251 3 {
252 4 I2C_SDA = 0;
253 4 }
254 3 i_data=i_data<<1;
255 3 I2C_clock(device);
256 3 }
257 2 //charles
258 2 I2C_SDA = 1;
259 2 }
260 1 else {
261 2 for (i=0;i<8;i++)
262 2 {
263 3 if (i_data&0x80)
264 3 {
265 4 DAC_SDA = 1;
266 4 }
267 3 else
268 3 {
269 4 DAC_SDA = 0;
270 4 }
271 3 i_data=i_data<<1;
272 3 I2C_clock(device);
273 3 }
274 2 //charles
275 2 DAC_SDA = 1;
276 2 }
277 1 return (!I2C_read_ack(device));
278 1 }
279
280 BYTE I2C_wr_single_data(BYTE device, BYTE device_id, BYTE addr, BYTE i_data)
281 {
282 1 I2C_Start(device);
283 1 if(I2C_send(device, device_id))
284 1 {
285 2 if(I2C_send(device, addr))
286 2 {
287 3 if(I2C_send(device, i_data))
288 3 {
289 4 I2C_Stop(device);
290 4
291 4 return(1);
292 4 }
293 3 else
294 3 {
295 4 I2C_Stop(device);
296 4 //LED_CON = 1;
297 4 return(0);
298 4 }
299 3 }
300 2 else {
301 3 I2C_Stop(device);
302 3 //LED_CON = 1;
303 3 return(0);
C51 COMPILER V7.10 ARX 06/10/2008 10:51:18 PAGE 6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -