⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sl3010_3.lis

📁 单片机开发资料光盘-双龙-686M.zip
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0080 82BB              out 0x12,R24
 0082                   .dbline 140
 0082           ; /*              电子音乐演示程序           */
 0082 83EC              ldi R24,195
 0084 8BBB              out 0x1b,R24
 0086                   .dbline -2
 0086                   .dbline 141
 0086           ; /*******************************************/
 0086           L15:
 0086                   .dbline 0 ; func end
 0086 0895              ret
 0088                   .dbend
 0088                   .dbfunc e stop _stop fV
                        .even
 0088           _stop::
 0088                   .dbline -1
 0088                   .dbline 144
 0088           ; //使用说明:音乐输出端口:PORTC.0,音乐数据存放
 0088           ; //于AT90S8515 的EEPROM存贮器中。
 0088           ; // 可以用并口下载软件写入新的音乐文件
 0088                   .dbline 145
 0088           ; //PA口为音乐灯,当不同的音乐节奏,点亮不同的灯。
 0088 8FEF              ldi R24,255
 008A 82BB              out 0x12,R24
 008C                   .dbline 146
 008C           ; 
 008C 8BBB              out 0x1b,R24
 008E                   .dbline -2
 008E                   .dbline 147
 008E           ; #pragma interrupt_handler timer1_ovf_isr:iv_TIMER1_OVF
 008E           L16:
 008E                   .dbline 0 ; func end
 008E 0895              ret
 0090                   .dbend
 0090                   .dbfunc e sw_touch _sw_touch fV
                        .even
 0090           _sw_touch::
 0090                   .dbline -1
 0090                   .dbline 163
 0090           ; void timer1_ovf_isr(void)
 0090           ;        {
 0090           ;         TCNT1=toneconst;
 0090           ;         PORTC^=1;
 0090           ;        }               
 0090           ; 
 0090           ; void music_car(void)
 0090           ;        {
 0090           ;         TCCR1A = 0x00;
 0090           ;         TCCR1B =(1<<CS11);//8分频
 0090           ;         temp1=EEPROMread((int)&sound[sound_add]);
 0090           ;         while(temp1!=0)
 0090           ;                       {
 0090           ;                       temp=temp1; 
 0090           ;                       temp&=0x0f;
 0090           ; /*
 0090                   .dbline 164
 0090           ;                         //PA口为音乐灯
 0090 83B3              in R24,0x13
 0092 8071              andi R24,16
 0094 80931700          sts _sw_in,R24
 0098                   .dbline 165
 0098           ;                         if(temp==1 || temp==2 || temp==3 || temp==4){PORTA = 0xfe;}
 0098 8823              tst R24
 009A C9F4              brne L18
 009C                   .dbline 166
 009C           ;               if(temp==5 || temp==6){PORTA = 0xfc;}
 009C                   .dbline 167
 009C           ;               if(temp==7 || temp==8 ){PORTA = 0xf8;}
 009C EBDF              rcall _backward
 009E                   .dbline 168
 009E           ;               if(temp==9){PORTA = 0xf0;}
 009E 0AEF              ldi R16,250
 00A0 10E0              ldi R17,0
 00A2 C6DF              rcall _delay_ms
 00A4                   .dbline 170
 00A4           ;               if(temp==10){PORTA = 0xe0;}
 00A4           ;               if(temp==11){PORTA = 0xc0;}
 00A4 80911800          lds R24,_work_status
 00A8 8037              cpi R24,112
 00AA 69F4              brne L20
 00AC                   .dbline 171
 00AC           ;                         if(temp==12){PORTA = 0x80;}
 00AC                   .dbline 172
 00AC           ;               if(temp==13 || temp==14 || temp==15){PORTA = 0x00;}
 00AC EDDF              rcall _stop
 00AE 0AC0              rjmp L23
 00B0           L22:
 00B0                   .dbline 174
 00B0                   .dbline 175
 00B0 85E5              ldi R24,85
 00B2 8BBB              out 0x1b,R24
 00B4                   .dbline 176
 00B4 0AEF              ldi R16,250
 00B6 10E0              ldi R17,0
 00B8 BBDF              rcall _delay_ms
 00BA                   .dbline 177
 00BA 8AEA              ldi R24,170
 00BC 8BBB              out 0x1b,R24
 00BE                   .dbline 178
 00BE 0AEF              ldi R16,250
 00C0 10E0              ldi R17,0
 00C2 B6DF              rcall _delay_ms
 00C4                   .dbline 179
 00C4           L23:
 00C4                   .dbline 173
 00C4           ; */
 00C4 F5CF              rjmp L22
 00C6           X1:
 00C6                   .dbline 180
 00C6           ;                       if(temp!=0)
 00C6           ;                         {
 00C6           ;                          TIMSK|=(1<<TOIE1);//根据SOUNDTABLE中数据的低四位选择音调频率
 00C6           ;                          temp--;                         
 00C6           ;                  toneconst=TONETABLE[temp];
 00C6           ;                          TCNT1=toneconst;
 00C6           ;                         }
 00C6           L20:
 00C6                   .dbline 182
 00C6           ;                       temp=temp1;
 00C6           ;                       temp>>=4;
 00C6 C7DF              rcall _turn_left
 00C8                   .dbline 183
 00C8           ;                       temp&=0x0f;
 00C8 0AEF              ldi R16,250
 00CA 10E0              ldi R17,0
 00CC B1DF              rcall _delay_ms
 00CE                   .dbline 184
 00CE           ;                       delay_ms(temp*129);//根据SOUNDTABLE中数据的高四位*5后,为音调持续时间
 00CE           L18:
 00CE                   .dbline 186
 00CE           ;                       TIMSK&=~(1<<TOIE1);
 00CE           ;                       sound_add++;
 00CE 86B3              in R24,0x16
 00D0 8077              andi R24,112
 00D2 80931700          sts _sw_in,R24
 00D6                   .dbline 187
 00D6           ;                       temp1=EEPROMread((int)&sound[sound_add]); 
 00D6 8035              cpi R24,80
 00D8 41F4              brne L25
 00DA                   .dbline 188
 00DA           ;                       }
 00DA                   .dbline 189
 00DA           ;               delay_ms(1000);                                                 
 00DA D1DF              rcall _forward
 00DC                   .dbline 190
 00DC           ;        }                               
 00DC 0AEF              ldi R16,250
 00DE 10E0              ldi R17,0
 00E0 A7DF              rcall _delay_ms
 00E2                   .dbline 192
 00E2           ;         
 00E2           ; //  电机驱动信号                       led灯指示电机状态 
 00E2 B9DF              rcall _turn_left
 00E4                   .dbline 193
 00E4           ; //PORTD = 0xA0;//前行//1010 0000        //PORTA = 0xC3;//1100,0011
 00E4 0AEF              ldi R16,250
 00E6 10E0              ldi R17,0
 00E8 A3DF              rcall _delay_ms
 00EA                   .dbline 194
 00EA           ; //PORTD = 0x90;//左转//1001 0000快速左转//PORTA = 0x33;//0011,0011
 00EA           L25:
 00EA                   .dbline 195
 00EA           ; //PORTD = 0x80;//左转//1000 0000慢速左转//PORTA = 0xF3;//1111,0011
 00EA 80911700          lds R24,_sw_in
 00EE 8033              cpi R24,48
 00F0 41F4              brne L27
 00F2                   .dbline 196
 00F2           ; //PORTD = 0x60;//右转//0110 0000快速右转//PORTA = 0xCC;//1100,1100
 00F2                   .dbline 197
 00F2           ; //PORTD = 0x20;//右转//0010 0000慢速右转//PORTA = 0xCF;//1100,1111
 00F2 C0DF              rcall _backward
 00F4                   .dbline 198
 00F4           ; //PORTD = 0x50;//后退//0101 0000        //PORTA = 0x3C;//0011,1100
 00F4 0AEF              ldi R16,250
 00F6 10E0              ldi R17,0
 00F8 9BDF              rcall _delay_ms
 00FA                   .dbline 200
 00FA           ; 
 00FA           ; //PC3声控启动
 00FA ADDF              rcall _turn_left
 00FC                   .dbline 201
 00FC           ; //  用PD7~PD4来作为电机驱动端
 00FC 0AEF              ldi R16,250
 00FE 10E0              ldi R17,0
 0100 97DF              rcall _delay_ms
 0102                   .dbline 202
 0102           ; 
 0102           L27:
 0102                   .dbline 203
 0102           ; void xuanya_car(void)
 0102 80911700          lds R24,_sw_in
 0106 8036              cpi R24,96
 0108 41F4              brne L29
 010A                   .dbline 204
 010A           ; {
 010A                   .dbline 205
 010A           ;  PORTA = 0xa5;//1010,0101
 010A B4DF              rcall _backward
 010C                   .dbline 206
 010C           ; 
 010C 0AEF              ldi R16,250
 010E 10E0              ldi R17,0
 0110 8FDF              rcall _delay_ms
 0112                   .dbline 208
 0112           ;  work_status = 0x20;//置对应的工作状态标志
 0112           ;  
 0112 A1DF              rcall _turn_left
 0114                   .dbline 209
 0114           ;  mic_startup();       //等待声控启动
 0114 0AEF              ldi R16,250
 0116 10E0              ldi R17,0
 0118 8BDF              rcall _delay_ms
 011A                   .dbline 210
 011A           ;  
 011A           L29:
 011A                   .dbline 211
 011A           ;  while(1)
 011A 80911700          lds R24,_sw_in
 011E 8032              cpi R24,32
 0120 F1F4              brne L31
 0122                   .dbline 212
 0122           ;    {//左(pc7)  中(pc6)  右(pc5)
 0122                   .dbline 213
 0122           ;     
 0122 B2DF              rcall _stop
 0124                   .dbline 214
 0124           ;       sw_touch();          //检测轻触开关
 0124 08EE              ldi R16,1000
 0126 13E0              ldi R17,3
 0128 83DF              rcall _delay_ms
 012A 18C0              rjmp L34
 012C           L33:
 012C                   .dbline 216
 012C           ;       
 012C           ;       pc = PINC & 0x10;
 012C                   .dbline 217
 012C           ;       if(pc == 0x00)
 012C 83B3              in R24,0x13
 012E 8071              andi R24,16
 0130 80931700          sts _sw_in,R24
 0134                   .dbline 218
 0134           ;         {//后退//左转
 0134 8823              tst R24
 0136 09F4              brne L36
 0138                   .dbline 219
 0138           ;          backward();//后退
 0138                   .dbline 219
 0138 12C0              rjmp L35
 013A           L36:
 013A                   .dbline 220
 013A           ;          delay_ms(xuanya_delayms);
 013A 85E5              ldi R24,85
 013C 8BBB              out 0x1b,R24
 013E                   .dbline 221
 013E           ;          turn_right();//左转
 013E 0AEF              ldi R16,250
 0140 10E0              ldi R17,0
 0142 76DF              rcall _delay_ms
 0144                   .dbline 222
 0144           ;          delay_ms(xuanya_delayms/2);
 0144 8AEA              ldi R24,170
 0146 8BBB              out 0x1b,R24
 0148                   .dbline 223
 0148           ;         }
 0148 0AEF              ldi R16,250
 014A 10E0              ldi R17,0
 014C 71DF              rcall _delay_ms
 014E                   .dbline 224
 014E           ;     pc = PINC & 0xE0;
 014E 86B3              in R24,0x16
 0150 8F70              andi R24,15
 0152 80931600          sts _remote_in,R24
 0156                   .dbline 225
 0156           ;     if(pc == 0x40)
 0156 8823              tst R24
 0158 09F0              breq L38
 015A                   .dbline 226
 015A           ;         {//后退//左转
 015A                   .dbline 226
 015A 01C0              rjmp L35
 015C           L38:
 015C                   .dbline 227
 015C           L34:
 015C                   .dbline 215
 015C E7CF              rjmp L33
 015E           L35:
 015E                   .dbline 228
 015E           L31:
 015E                   .dbline -2
 015E                   .dbline 229
 015E           ;          backward();//后退
 015E           ;          delay_ms(xuanya_delayms);
 015E           ;          turn_right();//左转
 015E           L17:
 015E                   .dbline 0 ; func end
 015E 0895              ret
 0160                   .dbend
 0160                   .dbfunc e mic_startup _mic_startup fV
                        .even
 0160           _mic_startup::
 0160                   .dbline -1
 0160                   .dbline 232
 0160           ;          delay_ms(xuanya_delayms/2);
 0160           ;         }
 0160           ;       if(pc == 0x80)
 0160 07C0              rjmp L42
 0162           L41:
 0162                   .dbline 235
 0162           ;         {//后退//左转
 0162           ;          backward();//后退
 0162           ;          delay_ms(xuanya_delayms);
 0162                   .dbline 236
 0162           ;          turn_right();//左转
 0162 83B3              in R24,0x13
 0164 8870              andi R24,8
 0166 80931500          sts _mic_in,R24
 016A                   .dbline 237
 016A           ;          delay_ms(xuanya_delayms/2);
 016A 8823              tst R24
 016C 09F4              brne L44
 016E                   .dbline 237
 016E                   .dbline 237
 016E 01C0              rjmp L43
 0170           L44:
 0170                   .dbline 238
 0170           L42:
 0170                   .dbline 234
 0170 F8CF              rjmp L41

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -