📄 step.lis
字号:
030A 2DBC out 0x2d,R2
030C .dbline 148
030C ; TCNT1L = zhuansu&0xFF;
030C 80910300 lds R24,_zhuansu
0310 90910400 lds R25,_zhuansu+1
0314 9070 andi R25,0
0316 8CBD out 0x2c,R24
0318 .dbline 149
0318 ; PORTC &= 0xF0;
0318 85B3 in R24,0x15
031A 807F andi R24,240
031C 85BB out 0x15,R24
031E .dbline 150
031E ; if(n)
031E 20900200 lds R2,_n
0322 2220 tst R2
0324 21F0 breq L43
0326 X26:
0326 .dbline 151
0326 ; bj_fsf(m); //反转
0326 00910100 lds R16,_m
032A 13DF xcall _bj_fsf
032C 03C0 xjmp L44
032E L43:
032E .dbline 153
032E ; else
032E ; bj_fs(m); //正转
032E 00910100 lds R16,_m
0332 73DE xcall _bj_fs
0334 L44:
0334 .dbline -2
0334 L42:
0334 .dbline 0 ; func end
0334 0990 ld R0,y+
0336 0FBE out 0x3f,R0
0338 F991 ld R31,y+
033A E991 ld R30,y+
033C B991 ld R27,y+
033E A991 ld R26,y+
0340 9991 ld R25,y+
0342 8991 ld R24,y+
0344 3991 ld R19,y+
0346 2991 ld R18,y+
0348 1991 ld R17,y+
034A 0991 ld R16,y+
034C 9990 ld R9,y+
034E 8990 ld R8,y+
0350 7990 ld R7,y+
0352 6990 ld R6,y+
0354 5990 ld R5,y+
0356 4990 ld R4,y+
0358 3990 ld R3,y+
035A 2990 ld R2,y+
035C 1990 ld R1,y+
035E 0990 ld R0,y+
0360 1895 reti
0362 .dbend
0362 .dbfunc e init_devices _init_devices fV
.even
0362 _init_devices::
0362 .dbline -1
0362 .dbline 160
0362 ; }
0362 ;
0362 ; /****************************
0362 ; * 器件初始化函数 *
0362 ; ****************************/
0362 ; void init_devices(void)
0362 ; {
0362 .dbline 161
0362 ; CLI();
0362 F894 cli
0364 .dbline 162
0364 ; port_init();
0364 4DDE xcall _port_init
0366 .dbline 163
0366 ; timer1_init();
0366 A1DF xcall _timer1_init
0368 .dbline 165
0368 ;
0368 ; MCUCR = 0x00;
0368 2224 clr R2
036A 25BE out 0x35,R2
036C .dbline 166
036C ; GICR = 0x00;
036C 2BBE out 0x3b,R2
036E .dbline 167
036E ; TIMSK = 0x04;
036E 84E0 ldi R24,4
0370 89BF out 0x39,R24
0372 .dbline 168
0372 ; SEI();
0372 7894 sei
0374 .dbline -2
0374 L45:
0374 .dbline 0 ; func end
0374 0895 ret
0376 .dbend
0376 .dbfunc e main _main fV
0376 ; key1 -> R22
0376 ; key -> R20
.even
0376 _main::
0376 .dbline -1
0376 .dbline 175
0376 ; }
0376 ;
0376 ; /****************************
0376 ; * 主函数 *
0376 ; ****************************/
0376 ; void main(void)
0376 ; {
0376 .dbline 177
0376 ; unsigned char key,key1;
0376 ; init_devices();
0376 F5DF xcall _init_devices
0378 80C0 xjmp L48
037A L47:
037A .dbline 180
037A ;
037A ; while(1)
037A ; {
037A .dbline 181
037A ; key=RD_KEY(); //按键扫描
037A 43B3 in R20,0x13
037C 4F60 ori R20,15
037E 4095 com R20
0380 4295 swap R20
0382 4F70 andi R20,#0x0F
0384 .dbline 182
0384 ; if(key)
0384 09F4 brne X39
0386 79C0 xjmp L50
0388 X39:
0388 X27:
0388 .dbline 183
0388 ; {
0388 .dbline 184
0388 ; delay_nms(200);
0388 08EC ldi R16,200
038A 10E0 ldi R17,0
038C 0E940000 xcall _delay_nms
0390 .dbline 185
0390 ; key1=RD_KEY();
0390 63B3 in R22,0x13
0392 6F60 ori R22,15
0394 6095 com R22
0396 6295 swap R22
0398 6F70 andi R22,#0x0F
039A .dbline 186
039A ; if(key==key1)
039A 4617 cp R20,R22
039C 09F0 breq X40
039E 6BC0 xjmp L70
03A0 X40:
03A0 X28:
03A0 .dbline 187
03A0 ; {
03A0 .dbline 188
03A0 ; switch(key) //按键有效,相应处理
03A0 642F mov R22,R20
03A2 7727 clr R23
03A4 6130 cpi R22,1
03A6 E0E0 ldi R30,0
03A8 7E07 cpc R23,R30
03AA 79F0 breq L57
03AC X29:
03AC 6230 cpi R22,2
03AE E0E0 ldi R30,0
03B0 7E07 cpc R23,R30
03B2 61F1 breq L60
03B4 X30:
03B4 6430 cpi R22,4
03B6 E0E0 ldi R30,0
03B8 7E07 cpc R23,R30
03BA 09F4 brne X41
03BC 3CC0 xjmp L63
03BE X41:
03BE X31:
03BE 6830 cpi R22,8
03C0 E0E0 ldi R30,0
03C2 7E07 cpc R23,R30
03C4 09F4 brne X42
03C6 42C0 xjmp L66
03C8 X42:
03C8 X32:
03C8 56C0 xjmp L70
03CA L57:
03CA .dbline 191
03CA ; {
03CA ; case 0x01: //S1键处理:转速增加
03CA ; zhuansu += 100;
03CA 80910300 lds R24,_zhuansu
03CE 90910400 lds R25,_zhuansu+1
03D2 8C59 subi R24,156 ; offset = 100
03D4 9F4F sbci R25,255
03D6 90930400 sts _zhuansu+1,R25
03DA 80930300 sts _zhuansu,R24
03DE .dbline 192
03DE ; if(zhuansu>62000)zhuansu=62000;
03DE 80E3 ldi R24,48
03E0 92EF ldi R25,242
03E2 A0E0 ldi R26,0
03E4 B0E0 ldi R27,0
03E6 20900300 lds R2,_zhuansu
03EA 30900400 lds R3,_zhuansu+1
03EE 4424 clr R4
03F0 5524 clr R5
03F2 8215 cp R24,R2
03F4 9305 cpc R25,R3
03F6 A405 cpc R26,R4
03F8 B505 cpc R27,R5
03FA 0CF0 brlt X43
03FC 3CC0 xjmp L70
03FE X43:
03FE X33:
03FE .dbline 192
03FE 80E3 ldi R24,62000
0400 92EF ldi R25,242
0402 90930400 sts _zhuansu+1,R25
0406 80930300 sts _zhuansu,R24
040A .dbline 193
040A ; break;
040A 35C0 xjmp L70
040C L60:
040C .dbline 195
040C ; case 0x02: //S2键处理:转速降低
040C ; zhuansu -= 100;
040C 80910300 lds R24,_zhuansu
0410 90910400 lds R25,_zhuansu+1
0414 8456 subi R24,100
0416 9040 sbci R25,0
0418 90930400 sts _zhuansu+1,R25
041C 80930300 sts _zhuansu,R24
0420 .dbline 196
0420 ; if(zhuansu<5000)zhuansu=5000;
0420 8838 cpi R24,136
0422 E3E1 ldi R30,19
0424 9E07 cpc R25,R30
0426 38F5 brsh L70
0428 X34:
0428 .dbline 196
0428 88E8 ldi R24,5000
042A 93E1 ldi R25,19
042C 90930400 sts _zhuansu+1,R25
0430 80930300 sts _zhuansu,R24
0434 .dbline 197
0434 ; break;
0434 20C0 xjmp L70
0436 L63:
0436 .dbline 199
0436 ; case 0x04: //S3键处理:转换驱动方式
0436 ; m++;
0436 80910100 lds R24,_m
043A 8F5F subi R24,255 ; addi 1
043C 80930100 sts _m,R24
0440 .dbline 200
0440 ; if(m>=4)m=1;
0440 8430 cpi R24,4
0442 C8F0 brlo L70
0444 X35:
0444 .dbline 200
0444 81E0 ldi R24,1
0446 80930100 sts _m,R24
044A .dbline 201
044A ; break;
044A 15C0 xjmp L70
044C L66:
044C .dbline 203
044C ; case 0x08: //S4键处理:正反转控制
044C ; if(n)
044C 20900200 lds R2,_n
0450 2220 tst R2
0452 21F0 breq L67
0454 X36:
0454 .dbline 204
0454 ; n=0;
0454 2224 clr R2
0456 20920200 sts _n,R2
045A 0DC0 xjmp L70
045C L67:
045C .dbline 206
045C ; else
045C ; n=1;
045C 81E0 ldi R24,1
045E 80930200 sts _n,R24
0462 .dbline 207
0462 ; break;
0462 .dbline 208
0462 ; default:break;
0462 .dbline 210
0462 ; }
0462 ; }
0462 09C0 xjmp L70
0464 L69:
0464 .dbline 212
0464 ; while(key) //等待按键释放
0464 ; {
0464 .dbline 213
0464 ; delay_nms(100);
0464 04E6 ldi R16,100
0466 10E0 ldi R17,0
0468 0E940000 xcall _delay_nms
046C .dbline 214
046C ; key=RD_KEY();
046C 43B3 in R20,0x13
046E 4F60 ori R20,15
0470 4095 com R20
0472 4295 swap R20
0474 4F70 andi R20,#0x0F
0476 .dbline 215
0476 ; }
0476 L70:
0476 .dbline 211
0476 4423 tst R20
0478 A9F7 brne L69
047A X37:
047A .dbline 216
047A ; }
047A L50:
047A .dbline 217
047A ; }
047A L48:
047A .dbline 179
047A 7FCF xjmp L47
047C X38:
047C .dbline -2
047C L46:
047C .dbline 0 ; func end
047C 0895 ret
047E .dbsym r key1 22 c
047E .dbsym r key 20 c
047E .dbend
047E ; }
047E ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -