📄 sl3010.lis
字号:
0130 .dbline 222
0130 ; PORTA = 0x55;
0130 85E5 ldi R24,85
0132 8BBB out 0x1b,R24
0134 .dbline 223
0134 ; delay_ms(250);
0134 0AEF ldi R16,250
0136 10E0 ldi R17,0
0138 7BDF rcall _delay_ms
013A .dbline 224
013A ; PORTA = 0xAA;
013A 8AEA ldi R24,170
013C 8BBB out 0x1b,R24
013E .dbline 225
013E ; delay_ms(250);
013E 0AEF ldi R16,250
0140 10E0 ldi R17,0
0142 76DF rcall _delay_ms
0144 .dbline 226
0144 ; remote_in = PINB & 0x0f;
0144 66B3 in R22,0x16
0146 6F70 andi R22,15
0148 .dbline 227
0148 ; if(remote_in != 0x00)
0148 09F0 breq L38
014A .dbline 228
014A ; {break;}
014A .dbline 228
014A 01C0 rjmp L35
014C L38:
014C .dbline 229
014C L34:
014C .dbline 217
014C EDCF rjmp L33
014E L35:
014E .dbline 230
014E L31:
014E .dbline -2
014E .dbline 231
014E ; }
014E ; }
014E ; }
014E L17:
014E 00D0 rcall pop_gset2
0150 .dbline 0 ; func end
0150 0895 ret
0152 .dbsym r remote_in 22 c
0152 .dbsym r sw_in 20 c
0152 .dbend
0152 .dbfunc e mic_startup _mic_startup fV
0152 ; mic_in -> R20
.even
0152 _mic_startup::
0152 00D0 rcall push_gset1
0154 .dbline -1
0154 .dbline 234
0154 ;
0154 ; void mic_startup()
0154 ; {//声控启动程序运行
0154 .dbline 236
0154 ; unsigned char mic_in;
0154 ; DDRC = 0x01;PORTC = 0xFF;
0154 81E0 ldi R24,1
0156 84BB out 0x14,R24
0158 .dbline 236
0158 8FEF ldi R24,255
015A 85BB out 0x15,R24
015C .dbline 237
015C ; delay_us(1);
015C 01E0 ldi R16,1
015E 10E0 ldi R17,0
0160 5FDF rcall _delay_us
0162 04C0 rjmp L42
0164 L41:
0164 .dbline 239
0164 ; while(1)//等待pc3(声控键)按键按下
0164 ; { //无键按下等待
0164 .dbline 240
0164 ; mic_in = PINC & 0x08; //pc2=0
0164 43B3 in R20,0x13
0166 4870 andi R20,8
0168 .dbline 241
0168 ; if(mic_in == 0){break;}
0168 09F4 brne L44
016A .dbline 241
016A .dbline 241
016A 01C0 rjmp L43
016C L44:
016C .dbline 242
016C L42:
016C .dbline 238
016C FBCF rjmp L41
016E L43:
016E .dbline -2
016E .dbline 243
016E ; }//有键按下运行下面的程序
016E ; }
016E L40:
016E 00D0 rcall pop_gset1
0170 .dbline 0 ; func end
0170 0895 ret
0172 .dbsym r mic_in 20 c
0172 .dbend
0172 .dbfunc e remote_auto_time _remote_auto_time fV
0172 ; remote_in -> R16
.even
0172 _remote_auto_time::
0172 .dbline -1
0172 .dbline 260
0172 ;
0172 ; // #
0172 ; // #
0172 ; // #
0172 ; // #
0172 ; // # // delay_time1 转弯时间
0172 ; // # # # # # // delay_time2 直行时间
0172 ; // # X # //<A> 0x04 delay_time2-50
0172 ; // # B C # //<B> 0x02 delay_time1+50
0172 ; // # D A # //<C> 0x08 delay_time1-50
0172 ; // # # //<D> 0x01 delay_time2+50
0172 ; // # # # # // max: 2000 min: 200
0172 ;
0172 ; unsigned int delay_time1,delay_time2;
0172 ;
0172 ; void remote_auto_time()
0172 ; {
0172 .dbline 262
0172 ; unsigned char remote_in;
0172 ; remote_in = PINB & 0x0F;
0172 06B3 in R16,0x16
0174 0F70 andi R16,15
0176 .dbline 263
0176 ; switch (remote_in)
0176 1127 clr R17
0178 0030 cpi R16,0
017A 0107 cpc R16,R17
017C 09F4 brne X4
017E 62C0 rjmp L48
0180 X4:
0180 X2:
0180 0130 cpi R16,1
0182 E0E0 ldi R30,0
0184 1E07 cpc R17,R30
0186 09F4 brne X5
0188 4AC0 rjmp L59
018A X5:
018A 0230 cpi R16,2
018C E0E0 ldi R30,0
018E 1E07 cpc R17,R30
0190 F1F0 breq L53
0192 0430 cpi R16,4
0194 E0E0 ldi R30,0
0196 1E07 cpc R17,R30
0198 29F0 breq L50
019A 0830 cpi R16,8
019C E0E0 ldi R30,0
019E 1E07 cpc R17,R30
01A0 51F1 breq L56
01A2 50C0 rjmp L47
01A4 X3:
01A4 .dbline 264
01A4 ; {//检测遥控器是否有键按下
01A4 L50:
01A4 .dbline 266
01A4 ; case 0x04: // < A >
01A4 ; delay_time2 = delay_time2 - 50;
01A4 80910000 lds R24,_delay_time2
01A8 90910100 lds R25,_delay_time2+1
01AC C297 sbiw R24,50
01AE 90930100 sts _delay_time2+1,R25
01B2 80930000 sts _delay_time2,R24
01B6 .dbline 267
01B6 ; if(delay_time2 == 50)
01B6 8233 cpi R24,50
01B8 E0E0 ldi R30,0
01BA 9E07 cpc R25,R30
01BC 09F0 breq X6
01BE 42C0 rjmp L48
01C0 X6:
01C0 .dbline 268
01C0 ; {delay_time2 = 100;}
01C0 .dbline 268
01C0 84E6 ldi R24,100
01C2 90E0 ldi R25,0
01C4 90930100 sts _delay_time2+1,R25
01C8 80930000 sts _delay_time2,R24
01CC .dbline 268
01CC .dbline 269
01CC ; break;
01CC 3BC0 rjmp L48
01CE L53:
01CE .dbline 271
01CE ; case 0x02: // < B >
01CE ; delay_time1 = delay_time1 + 50;
01CE 80910200 lds R24,_delay_time1
01D2 90910300 lds R25,_delay_time1+1
01D6 C296 adiw R24,50
01D8 90930300 sts _delay_time1+1,R25
01DC 80930200 sts _delay_time1,R24
01E0 .dbline 272
01E0 ; if(delay_time1 == 2050)
01E0 8230 cpi R24,2
01E2 E8E0 ldi R30,8
01E4 9E07 cpc R25,R30
01E6 71F5 brne L48
01E8 .dbline 273
01E8 ; {delay_time1 = 2000;}
01E8 .dbline 273
01E8 80ED ldi R24,2000
01EA 97E0 ldi R25,7
01EC 90930300 sts _delay_time1+1,R25
01F0 80930200 sts _delay_time1,R24
01F4 .dbline 273
01F4 .dbline 274
01F4 ; break;
01F4 27C0 rjmp L48
01F6 L56:
01F6 .dbline 276
01F6 ; case 0x08: // < C >
01F6 ; delay_time1 = delay_time1 - 50;
01F6 80910200 lds R24,_delay_time1
01FA 90910300 lds R25,_delay_time1+1
01FE C297 sbiw R24,50
0200 90930300 sts _delay_time1+1,R25
0204 80930200 sts _delay_time1,R24
0208 .dbline 277
0208 ; if(delay_time1 == 50)
0208 8233 cpi R24,50
020A E0E0 ldi R30,0
020C 9E07 cpc R25,R30
020E D1F4 brne L48
0210 .dbline 278
0210 ; {delay_time1 = 100;}
0210 .dbline 278
0210 84E6 ldi R24,100
0212 90E0 ldi R25,0
0214 90930300 sts _delay_time1+1,R25
0218 80930200 sts _delay_time1,R24
021C .dbline 278
021C .dbline 279
021C ; break;
021C 13C0 rjmp L48
021E L59:
021E .dbline 281
021E ; case 0x01: // < D >
021E ; delay_time2 = delay_time2 + 50;
021E 80910000 lds R24,_delay_time2
0222 90910100 lds R25,_delay_time2+1
0226 C296 adiw R24,50
0228 90930100 sts _delay_time2+1,R25
022C 80930000 sts _delay_time2,R24
0230 .dbline 282
0230 ; if(delay_time2 == 2050)
0230 8230 cpi R24,2
0232 E8E0 ldi R30,8
0234 9E07 cpc R25,R30
0236 31F4 brne L48
0238 .dbline 283
0238 ; {delay_time2 = 2000;}
0238 .dbline 283
0238 80ED ldi R24,2000
023A 97E0 ldi R25,7
023C 90930100 sts _delay_time2+1,R25
0240 80930000 sts _delay_time2,R24
0244 .dbline 283
0244 .dbline 284
0244 ; break;
0244 .dbline 286
0244 ; case 0x00: // 无按键
0244 ; break;
0244 L47:
0244 L48:
0244 .dbline -2
0244 .dbline 288
0244 ; }
0244 ; }
0244 L46:
0244 .dbline 0 ; func end
0244 0895 ret
0246 .dbsym r remote_in 16 c
0246 .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\icc\include\sl3010.c
0000 _delay_time2::
0000 .blkb 2
0002 .dbsym e delay_time2 _delay_time2 i
0002 _delay_time1::
0002 .blkb 2
0004 .dbsym e delay_time1 _delay_time1 i
0004 _work_status::
0004 .blkb 1
0005 .dbsym e work_status _work_status c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -