📄 arx.lst
字号:
304 3 }
305 2 }
306 1 else {
307 2
308 2 I2C_Stop(device);
309 2 //LED_CON = 1;
310 2 return(0);
311 2 }
312 1 }
313
314 BYTE I2C_read_bit(BYTE device)
315 {
316 1 BYTE sample;
317 1 if(device == DEVICE_RF)
318 1 {
319 2 I2C_SCL = 1;
320 2 i2c_delay();
321 2 if(I2C_SDA == 0) sample = 0;
322 2 else sample = 1;
323 2 I2C_SCL = 0;
324 2 i2c_delay();
325 2
326 2 if (sample==0) return (0);
327 2 else return (1);
328 2 }
329 1 else {
330 2 DAC_SCL = 1;
331 2 i2c_delay();
332 2 if(DAC_SDA == 0) sample = 0;
333 2 else sample = 1;
334 2 DAC_SCL = 0;
335 2 i2c_delay();
336 2
337 2 if (sample==0) return (0);
338 2 else return (1);
339 2 }
340 1 }
341
342 BYTE I2C_rd_data(BYTE device)
343 {
344 1 BYTE i,i_data=0;
345 1
346 1 for (i=0;i<8;i++)
347 1 {
348 2 i_data*=2;
349 2 if (I2C_read_bit(device)) i_data++;
350 2 }
351 1
352 1 return(i_data);
353 1 }
354 void mcu_wait_ms(unsigned int count)
355 {
356 1
357 1 while(count--);
358 1 }
359
360 BYTE I2C_rd_single_data(BYTE device, BYTE device_id, BYTE addr, BYTE i_data)
361 {
362 1 I2C_Start(device);
363 1 if(I2C_send(device, device_id))
364 1 {
365 2 if(I2C_send(device, addr))
C51 COMPILER V7.10 ARX 06/10/2008 10:51:18 PAGE 7
366 2 {
367 3 I2C_Start(device);
368 3 if(I2C_send(device, device_id|0x01))
369 3 {
370 4 i_data = I2C_rd_data(device);
371 4 I2C_ack(device);
372 4 I2C_Stop(device);
373 4 return(1);
374 4 }
375 3 else {
376 4 I2C_Stop(device);
377 4 return(0);
378 4 }
379 3
380 3 }
381 2 else {
382 3 I2C_Stop(device);
383 3 return(0);
384 3 }
385 2 }
386 1 else {
387 2 I2C_Stop(device);
388 2 return(0);
389 2 }
390 1 }
391
392 void dac_init(void) {
393 1
394 1
395 1 I2C_wr_single_data(DEVICE_DAC, DAC_WR_ADDR, 0x1E, 0x00); // Resetting DAC before continuing with init,
- page 20
396 1
397 1 I2C_wr_single_data(DEVICE_DAC, DAC_WR_ADDR, 0x0E, 0x12); // Slave mode, I2S, 16 bits, page 26
398 1 I2C_wr_single_data(DEVICE_DAC, DAC_WR_ADDR, 0x12, 0x01); // Activate digital interface, page 31
399 1
400 1 I2C_wr_single_data(DEVICE_DAC, DAC_WR_ADDR, 0x0A, 0x00); // 3 Disable mute, disable de-emphasis, page
-15
401 1 I2C_wr_single_data(DEVICE_DAC, DAC_WR_ADDR, 0x10, 0x20); // 256x at 44.1ksps, page 26?
402 1
403 1 I2C_wr_single_data(DEVICE_DAC, DAC_WR_ADDR, 0x08, 0x10); // 1 Select DAC, page 17. It has to be put in
- here and not in dac_init()
404 1
405 1 I2C_wr_single_data(DEVICE_DAC, DAC_WR_ADDR, 0x0c, 0x67); // 2 Power down CLKOUT and oscillator, enable
- output, DAC, and VMID page 33
406 1
407 1 I2C_wr_single_data(DEVICE_DAC, DAC_WR_ADDR, 0x05, gbVolume|0x80);
408 1 DAC_PD = 1;
409 1 }
410
411
412 void dac_volume_up()
413 {
414 1 if(gbVolume < 0x7f) gbVolume++;
415 1 I2C_wr_single_data(DEVICE_DAC, DAC_WR_ADDR, 0x05, gbVolume|0x80);
416 1 }
417
418 void dac_volume_down()
419 {
420 1 if(gbVolume > 0x30) gbVolume--;
421 1 I2C_wr_single_data(DEVICE_DAC, DAC_WR_ADDR, 0x05, gbVolume|0x80);
422 1 }
423
C51 COMPILER V7.10 ARX 06/10/2008 10:51:18 PAGE 8
424 void ARX_init(void)
425 {
426 1 BYTE bI;
427 1 //---------------Link Table------------------------------
428 1 for(bI=0; bI<38; bI++)
429 1 {
430 2 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, CH0+bI, channel_num[bI]);
431 2 }
432 1
433 1 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, BCHD, 0x0A);
434 1 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, NBCH, 0x12);
435 1 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, NACH, 0x26);
436 1 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, NLCH, 0x26);
437 1 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, LNKMOD, 0x00);
438 1 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, LNKWTH, 0xFF);
439 1 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, LNKETH, 0xFF);
440 1
441 1 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, ADDR_0, 0x98); // Data for ADDR_0
442 1 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, ADDR_1, 0x38); // Data for ADDR_1
443 1 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, ADDR_2, 0xA2); // Data for ADDR_2
444 1 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, ADDR_3, 0x34); // Data for ADDR_3
445 1 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, ADDR_4, 0x85); // Data for ADDR_4
446 1
447 1
448 1 //-------------Interrupts table--------------------------
449 1 //I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, INTSTA, 0x00); //
450 1 //I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, INTCF, 0x02); // Enable wakeup from power down interrupt
451 1 //-------------ATX set table-----------------------------
452 1 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, TXSTA, 0x49);
453 1 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, TXPWR, 0x03);
454 1 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, TXFMT, 64);// i2s
455 1 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, I2SCNF_IN, 0x80);//master
456 1 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, TXLAT, 0x04);
457 1 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, TXMOD, 0x82);
458 1 //------------ARX set table------------------------------
459 1 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, RXSTA, 0x08);
460 1 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, RXPWR, 0x03);
461 1 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, I2SCNF_OUT, 0);
462 1 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, RXMOD, 0x20);
463 1 //------------data command-------------------------------
464 1 I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, RXDCMD, 0x82);
465 1 }
466
467 #if 1
468 void mcu_init(void)
469 {
470 1
471 1 IE = 0x00;
472 1
473 1 /* IP (Interrupt Priority Set)
474 1 (MSB) (LSB)
475 1 D7 D6 D5 D4 D3 D2 D1 D0
476 1 --------------------------------------------------------------
477 1 | | | | | | | | |
478 1 | - | - | - | PS | PT1 | PX1 | PT0 | PX0 |
479 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 |
480 1 | | | | | | | | |
481 1 --------------------------------------------------------------- */
482 1 IP = 0x13;
483 1
484 1 /* TMOD (Timer & Counter Mode Control)
485 1 (MSB) (LSB)
C51 COMPILER V7.10 ARX 06/10/2008 10:51:18 PAGE 9
486 1 D7 D6 D5 D4 D3 D2 D1 D0
487 1 --------------------------------------------------------------
488 1 | TM1 | TM1 | TM1 | TM1 | TM0 | TM0 | TM0 | TM0 |
489 1 | GATE | C/T | M1 | M0 | GATE | C/T | M1 | M0 |
490 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 |
491 1 | int |int clk|reload | | |int clk| | |
492 1 --------------------------------------------------------------- */
493 1 TMOD = 0x21;
494 1
495 1 /* TCON (Timer & Counter Control)
496 1 (MSB) (LSB)
497 1 D7 D6 D5 D4 D3 D2 D1 D0
498 1 --------------------------------------------------------------
499 1 | | | | | | | VD | VD |
500 1 | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
501 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 |
502 1 |over f |tm1 oN |over f |tm0 off|1edge f|1 type |0edge f|0 type |
503 1 --------------------------------------------------------------- */
504 1 TCON = 0x00;
505 1
506 1
507 1
508 1 /* SCON(Serial Port Control )
509 1 (MSB) (LSB)
510 1 D7 D6 D5 D4 D3 D2 D1 D0
511 1 --------------------------------------------------------------
512 1 | | | |RXenabl|9th bit|9th bit| | |
513 1 | SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI | RI |
514 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
515 1 | | |Multi x| | | | | |
516 1 --------------------------------------------------------------- */
517 1 SCON = 0x00;
518 1
519 1 /* PCON(Power Control Set )
520 1 (MSB) (LSB)
521 1 D7 D6 D5 D4 D3 D2 D1 D0
522 1 --------------------------------------------------------------
523 1 | | | | | | | | |
524 1 | SMOD | - | - | - | GF1 | GF2 | PD | IDL |
525 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
526 1 | baud | | | | flag | flag |powerdn|Idlebit|
527 1 --------------------------------------------------------------- */
528 1 PCON = 0x10;
529 1
530 1 /* TH0H,L (Timer 0 Byte) */
531 1 TH0 = 0xB1;
532 1 TL0 = 0xE0;
533 1
534 1
535 1 P1 = 0xFF;
536 1
537 1 P3 = 0x7f;
538 1 }
539 #endif
540 main(void)
541 {
542 1 BYTE bTemp = 0;
543 1 BYTE bCurKey = 0;
544 1 gbKeyRept = 0;
545 1 gbKeyId = KEY_INVALID;
546 1 gbKeyLastId = KEY_INVALID;
547 1 gbKeyPressed = 0;
C51 COMPILER V7.10 ARX 06/10/2008 10:51:18 PAGE 10
548 1
549 1 gbVolume = 0x79;
550 1 gbLedTimer = 0;
551 1
552 1 mcu_init();
553 1 PWR_EN = 1;
554 1 LED_CON = 0;
555 1 EA = 0;
556 1 TR0 = 0;
557 1 ARX_init();
558 1 LED_CON = 1;
559 1 dac_init();
560 1 mcu_wait_ms(4000);
561 1
562 1 I2C_rd_single_data(DEVICE_RF, ARX_WR_ADDR, I2SCNF_OUT, bTemp);
563 1 //if(bTemp==0x40)
564 1 //{
565 1 // LED_CON = 0;
566 1 // while(1);
567 1 //}
568 1 EA = 1;
569 1 ET0 = 1;
570 1 TR0 = 1;
571 1 while(1)
572 1 {
573 2
574 2 bCurKey = KeyGet();
575 2
576 2 switch(bCurKey)
577 2 {
578 3 case KEY_VOL_UP_BREAK:
579 3 case KEY_VOL_UP_LONG:
580 3 dac_volume_up();
581 3 break;
582 3 case KEY_VOL_DOWN_BREAK:
583 3 case KEY_VOL_DOWN_LONG:
584 3 dac_volume_down();
585 3 break;
586 3 case KEY_UP_LONG:
587 3 EA = 0;
588 3 while(1){
589 4 LED_CON = 0;
590 4 PWR_EN = 0;
591 4 }
592 3
593 3 }
594 2 mcu_wait_ms(10000);
595 2 }
596 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1610 ----
CONSTANT SIZE = 38 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 27
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -