📄 sl3010_4.lst
字号:
0542 2628 EOR R2,R24
0543 BA25 OUT 0x15,R2
(0424) }
0544 9029 LD R2,Y+
0545 BE2F OUT 0x3F,R2
0546 9189 LD R24,Y+
0547 9039 LD R3,Y+
0548 9029 LD R2,Y+
0549 9518 RETI
(0425)
(0426) void music_car(void)
(0427) {
(0428) TCCR1A = 0x00;
_music_car:
054A 2422 CLR R2
054B BC2F OUT 0x2F,R2
(0429) TCCR1B =(1<<CS11);//8分频
054C E082 LDI R24,2
054D BD8E OUT 0x2E,R24
(0430) temp1=EEPROMread((int)&sound[sound_add]);
054E E081 LDI R24,1
054F E090 LDI R25,0
0550 91000060 LDS R16,0x60
0552 91100061 LDS R17,0x61
0554 0F08 ADD R16,R24
0555 1F19 ADC R17,R25
0556 D380 RCALL _EEPROMread
0557 93000072 STS _temp1,R16
0559 C04B RJMP 0x05A5
(0431) while(temp1!=0)
(0432) {
(0433) temp=temp1;
055A 90200072 LDS R2,_temp1
055C 92200073 STS _temp,R2
(0434) temp&=0x0f;
055E 2D82 MOV R24,R2
055F 708F ANDI R24,0xF
0560 93800073 STS _temp,R24
(0435) if(temp!=0)
0562 2E28 MOV R2,R24
0563 2388 TST R24
0564 F0B9 BEQ 0x057C
(0436) {
(0437) TIMSK|=(1<<TOIE1);//根据SOUNDTABLE中数据的低四位选择音调频率
0565 B789 IN R24,0x39
0566 6880 ORI R24,0x80
0567 BF89 OUT 0x39,R24
(0438) temp--;
0568 2D82 MOV R24,R2
0569 5081 SUBI R24,1
056A 93800073 STS _temp,R24
(0439) toneconst=TONETABLE[temp];
056C E18A LDI R24,0x1A
056D E090 LDI R25,0
056E 91000073 LDS R16,_temp
0570 2711 CLR R17
0571 0F00 LSL R16
0572 1F11 ROL R17
0573 0F08 ADD R16,R24
0574 1F19 ADC R17,R25
0575 D311 RCALL lpm16
0576 93100077 STS _toneconst+1,R17
0578 93000076 STS _toneconst,R16
(0440) TCNT1=toneconst;
057A BD1D OUT 0x2D,R17
057B BD0C OUT 0x2C,R16
(0441) }
(0442) temp=temp1;
057C 90200072 LDS R2,_temp1
057E 92200073 STS _temp,R2
(0443) temp>>=4;
0580 2D82 MOV R24,R2
0581 9582 SWAP R24
0582 708F ANDI R24,0xF
0583 93800073 STS _temp,R24
(0444) temp&=0x0f;
0585 708F ANDI R24,0xF
0586 93800073 STS _temp,R24
(0445) delay_ms(temp*129);//根据SOUNDTABLE中数据的高四位*5后,为音调持续时间
0588 2F28 MOV R18,R24
0589 2733 CLR R19
058A E801 LDI R16,0x81
058B E010 LDI R17,0
058C D336 RCALL mpy16s
058D DC52 RCALL _delay_ms
(0446) TIMSK&=~(1<<TOIE1);
058E B789 IN R24,0x39
058F 778F ANDI R24,0x7F
0590 BF89 OUT 0x39,R24
(0447) sound_add++;
0591 91800060 LDS R24,0x60
0593 91900061 LDS R25,0x61
0595 9601 ADIW R24,1
0596 93900061 STS 0x61,R25
0598 93800060 STS 0x60,R24
(0448) temp1=EEPROMread((int)&sound[sound_add]);
059A E081 LDI R24,1
059B E090 LDI R25,0
059C 91000060 LDS R16,0x60
059E 91100061 LDS R17,0x61
05A0 0F08 ADD R16,R24
05A1 1F19 ADC R17,R25
05A2 D334 RCALL _EEPROMread
05A3 93000072 STS _temp1,R16
05A5 90200072 LDS R2,_temp1
05A7 2022 TST R2
05A8 F009 BEQ 0x05AA
05A9 CFB0 RJMP 0x055A
(0449) }
(0450) delay_ms(1000);
05AA EE08 LDI R16,0xE8
05AB E013 LDI R17,3
(0451) }
05AC CC33 RJMP _delay_ms
(0452)
(0453) // 电机驱动信号 led灯指示电机状态
(0454) //PORTD = 0xA0;//前行//1010 0000 //PORTA = 0xC3;//1100,0011
(0455) //PORTD = 0x90;//左转//1001 0000快速左转//PORTA = 0x33;//0011,0011
(0456) //PORTD = 0x80;//左转//1000 0000慢速左转//PORTA = 0xF3;//1111,0011
(0457) //PORTD = 0x60;//右转//0110 0000快速右转//PORTA = 0xCC;//1100,1100
(0458) //PORTD = 0x20;//右转//0010 0000慢速右转//PORTA = 0xCF;//1100,1111
(0459) //PORTD = 0x50;//后退//0101 0000 //PORTA = 0x3C;//0011,1100
(0460)
(0461) //PC3声控启动
(0462) // 用PD7~PD4来作为电机驱动端
(0463) void xuanya_car(void)
(0464) {
(0465) port_init(); //PA,PB,PC,PD 初始化
_xuanya_car:
05AD DC1A RCALL _port_init
(0466) PORTA = 0xa5;//1010,0101
05AE EA85 LDI R24,0xA5
05AF BB8B OUT 0x1B,R24
(0467) delay_ms(1000);
05B0 EE08 LDI R16,0xE8
05B1 E013 LDI R17,3
05B2 DC2D RCALL _delay_ms
(0468) work_status = 0x20;//置对应的工作状态标志
05B3 E280 LDI R24,0x20
05B4 9380007F STS _work_status,R24
(0469)
(0470)
(0471) gzsl=0x88;timers=0;t0_times=0;
05B6 E888 LDI R24,0x88
05B7 93800067 STS _gzsl,R24
05B9 2422 CLR R2
05BA 9220006D STS _timers,R2
05BC 92200066 STS _t0_times,R2
(0472) CLI(); //disable all interrupts
05BE 94F8 BCLR 7
(0473) timer0_init();
05BF DD33 RCALL _timer0_init
(0474)
(0475) MCUCR = 0x00;
05C0 2422 CLR R2
05C1 BE25 OUT 0x35,R2
(0476) GIMSK = 0x00;
05C2 BE2B OUT 0x3B,R2
(0477) TIMSK|=(1<<TOIE0);
05C3 B789 IN R24,0x39
05C4 6082 ORI R24,2
05C5 BF89 OUT 0x39,R24
(0478) SEI(); //re-enable interrupts
05C6 9478 BSET 7
(0479)
(0480) mic_startup();//等待声控启动函数
05C7 DCB0 RCALL _mic_startup
(0481)
(0482) gzsl=0x44;t0_times=0;
05C8 E484 LDI R24,0x44
05C9 93800067 STS _gzsl,R24
05CB 2422 CLR R2
05CC 92200066 STS _t0_times,R2
(0483) TCCR1A = 0x00;
05CE BC2F OUT 0x2F,R2
(0484) TCCR1B =(1<<CS11);//8分频
05CF E082 LDI R24,2
05D0 BD8E OUT 0x2E,R24
(0485) xuanya_car_rst:
(0486) temp=temp1 = 0;
05D1 2422 CLR R2
05D2 92200072 STS _temp1,R2
05D4 92200073 STS _temp,R2
(0487) sound_add = 0;
05D6 2433 CLR R3
05D7 92300061 STS 0x61,R3
05D9 92200060 STS 0x60,R2
05DB C040 RJMP 0x061C
(0488) while(temp1!=0)
(0489) {
(0490) temp=temp1;
05DC 90200072 LDS R2,_temp1
05DE 92200073 STS _temp,R2
(0491) temp&=0x0f;
05E0 2D82 MOV R24,R2
05E1 708F ANDI R24,0xF
05E2 93800073 STS _temp,R24
(0492) if(temp!=0)
05E4 2E28 MOV R2,R24
05E5 2388 TST R24
05E6 F0B9 BEQ 0x05FE
(0493) {
(0494) TIMSK|=(1<<TOIE1);//根据SOUNDTABLE中数据的低四位选择音调频率
05E7 B789 IN R24,0x39
05E8 6880 ORI R24,0x80
05E9 BF89 OUT 0x39,R24
(0495) temp--;
05EA 2D82 MOV R24,R2
05EB 5081 SUBI R24,1
05EC 93800073 STS _temp,R24
(0496) toneconst=TONETABLE[temp];
05EE E18A LDI R24,0x1A
05EF E090 LDI R25,0
05F0 91000073 LDS R16,_temp
05F2 2711 CLR R17
05F3 0F00 LSL R16
05F4 1F11 ROL R17
05F5 0F08 ADD R16,R24
05F6 1F19 ADC R17,R25
05F7 D28F RCALL lpm16
05F8 93100077 STS _toneconst+1,R17
05FA 93000076 STS _toneconst,R16
(0497) TCNT1=toneconst;
05FC BD1D OUT 0x2D,R17
05FD BD0C OUT 0x2C,R16
(0498) }
(0499) temp=temp1;
05FE 90200072 LDS R2,_temp1
0600 92200073 STS _temp,R2
(0500) temp>>=4;
0602 2D82 MOV R24,R2
0603 9582 SWAP R24
0604 708F ANDI R24,0xF
0605 93800073 STS _temp,R24
(0501) temp&=0x0f;
0607 708F ANDI R24,0xF
0608 93800073 STS _temp,R24
(0502) delay_ms(temp*129);//根据SOUNDTABLE中数据的高四位*5后,为音调持续时间
060A 2F28 MOV R18,R24
060B 2733 CLR R19
060C E801 LDI R16,0x81
060D E010 LDI R17,0
060E D2B4 RCALL mpy16s
060F DBD0 RCALL _delay_ms
(0503) TIMSK&=~(1<<TOIE1);
0610 B789 IN R24,0x39
0611 778F ANDI R24,0x7F
0612 BF89 OUT 0x39,R24
(0504) sound_add++;
0613 91800060 LDS R24,0x60
0615 91900061 LDS R25,0x61
0617 9601 ADIW R24,1
0618 93900061 STS 0x61,R25
061A 93800060 STS 0x60,R24
061C 90200072 LDS R2,_temp1
061E 2022 TST R2
061F F009 BEQ 0x0621
0620 CFBB RJMP 0x05DC
(0505) }
(0506) goto xuanya_car_rst;
0621 CFAF RJMP 0x05D1
0622 9508 RET
(0507) }
(0508)
(0509) void remote_car()
(0510) {//遥控车程序
(0511)
(0512) port_init();//调用端口初始化函数
_remote_car:
0623 DBA4 RCALL _port_init
(0513)
(0514) work_status = 0x60;//置对应的工作状态标志
0624 E680 LDI R24,0x60
0625 9380007F STS _work_status,R24
(0515)
(0516) remote_rst:
(0517) PORTA = 0x0F;
0627 E08F LDI R24,0xF
0628 BB8B OUT 0x1B,R24
(0518) delay_ms(1000);
0629 EE08 LDI R16,0xE8
062A E013 LDI R17,3
062B DBB4 RCALL _delay_ms
(0519)
(0520) gzsl=0x88;timers=0;t0_times=0;
062C E888 LDI R24,0x88
062D 93800067 STS _gzsl,R24
062F 2422 CLR R2
0630 9220006D STS _timers,R2
0632 92200066 STS _t0_times,R2
(0521) CLI(); //disable all interrupts
0634 94F8 BCLR 7
(0522) timer0_init();
0635 DCBD RCALL _timer0_init
(0523)
(0524) MCUCR = 0x00;
0636 2422 CLR R2
0637 BE25 OUT 0x35,R2
(0525) GIMSK = 0x00;
0638 BE2B OUT 0x3B,R2
(0526) TIMSK|=(1<<TOIE0);
0639 B789 IN R24,0x39
063A 6082 ORI R24,2
063B BF89 OUT 0x39,R24
(0527) SEI(); //re-enable interrupts
063C 9478 BSET 7
(0528)
(0529) mic_startup();//等待声控启动函数
063D DC3A RCALL _mic_startup
(0530)
(0531) gzsl=0x33;t0_times=0;
063E E383 LDI R24,0x33
063F 93800067 STS _gzsl,R24
0641 2422 CLR R2
0642 92200066 STS _t0_times,R2
(0532) TCCR1A = 0x00;
0644 BC2F OUT 0x2F,R2
(0533) TCCR1B =(1<<CS11);//8分频
0645 E082 LDI R24,2
0646 BD8E OUT 0x2E,R24
(0534) n01:
(0535) temp=temp1 = 0;
0647 2422 CLR R2
0648 92200072 STS _temp1,R2
064A 92200073 STS _temp,R2
(0536) sound_add = 0;
064C 2433 CLR R3
064D 92300061 STS 0x61,R3
064F 92200060 STS 0x60,R2
0651 C040 RJMP 0x0692
(0537) while(temp1!=0)
(0538) {
(0539) temp=temp1;
0652 90200072 LDS R2,_temp1
0654 92200073 STS _temp,R2
(0540) temp&=0x0f;
0656 2D82 MOV R24,R2
0657 708F ANDI R24,0xF
0658 93800073 STS _temp,R24
(0541) if(temp!=0)
065A 2E28 MOV R2,R24
065B 2388 TST R24
065C F0B9 BEQ 0x0674
(0542) {
(0543) TIMSK|=(1<<TOIE1);//根据SOUNDTABLE中数据的低四位选择音调频率
065D B789 IN R24,0x39
065E 6880 ORI R24,0x80
065F BF89 OUT 0x39,R24
(0544) temp--;
0660 2D82 MOV R24,R2
0661 5081 SUBI R24,1
0662 93800073 STS _temp,R24
(0545) toneconst=TONETABLE[temp];
0664 E18A LDI R24,0x1A
0665 E090 LDI R25,0
0666 91000073 LDS R16,_temp
0668 2711 CLR R17
0669 0F00 LSL R16
066A 1F11 ROL R17
066B 0F08 ADD R16,R24
066C 1F19 ADC R17,R25
066D D219 RCALL lpm16
066E 93100077 STS _toneconst+1,R17
0670 93000076 STS _toneconst,R16
(0546) TCNT1=toneconst;
0672 BD1D OUT 0x2D,R17
0673 BD0C OUT 0x2C,R16
(0547) }
(0548) temp=temp1;
0674 90200072 LDS R2,_temp1
0676 92200073 S
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -