📄 ps2_study.s
字号:
ldi R18,4
ldi R16,18
xcall _LCD_char
.dbline 408
; LCD_char(36,4,l,0);
clr R2
std y+2,R2
ldi R24,<_l
ldi R25,>_l
std y+0,R24
std y+1,R25
ldi R18,4
ldi R16,36
xcall _LCD_char
.dbline 409
; LCD_char(54,4,m,0);
clr R2
std y+2,R2
ldi R24,<_m
ldi R25,>_m
std y+0,R24
std y+1,R25
ldi R18,4
ldi R16,54
xcall _LCD_char
.dbline 410
; LCD_char(9,0,p,1);
ldi R24,1
std y+2,R24
ldi R24,<_p
ldi R25,>_p
std y+0,R24
std y+1,R25
clr R18
ldi R16,9
xcall _LCD_char
.dbline 411
; LCD_char(18,0,q,1);
ldi R24,1
std y+2,R24
ldi R24,<_q
ldi R25,>_q
std y+0,R24
std y+1,R25
clr R18
ldi R16,18
xcall _LCD_char
.dbline 412
; LCD_char(27,0,r,1);
ldi R24,1
std y+2,R24
ldi R24,<_r
ldi R25,>_r
std y+0,R24
std y+1,R25
clr R18
ldi R16,27
xcall _LCD_char
.dbline 413
; LCD_char(45,0,t,1);
ldi R24,1
std y+2,R24
ldi R24,<_t
ldi R25,>_t
std y+0,R24
std y+1,R25
clr R18
ldi R16,45
xcall _LCD_char
.dbline 414
; LCD_char(54,0,u,1);
ldi R24,1
std y+2,R24
ldi R24,<_u
ldi R25,>_u
std y+0,R24
std y+1,R25
clr R18
ldi R16,54
xcall _LCD_char
.dbline 415
; LCD_char(9,4,w,1);
ldi R24,1
std y+2,R24
ldi R24,<_w
ldi R25,>_w
std y+0,R24
std y+1,R25
ldi R18,4
ldi R16,9
xcall _LCD_char
.dbline 416
; LCD_char(18,4,x,1);
ldi R24,1
std y+2,R24
ldi R24,<_x
ldi R25,>_x
std y+0,R24
std y+1,R25
ldi R18,4
ldi R16,18
xcall _LCD_char
.dbline 417
; LCD_char(27,4,y,1);
ldi R24,1
std y+2,R24
ldi R24,<_y
ldi R25,>_y
std y+0,R24
std y+1,R25
ldi R18,4
ldi R16,27
xcall _LCD_char
.dbline 418
; if(wed1==2)
lds R24,_wed1
cpi R24,2
breq X1
xjmp L112
X1:
.dbline 419
; {
.dbline 421
;
; LCD_char(0,0,c,0);
clr R2
std y+2,R2
ldi R24,<_c
ldi R25,>_c
std y+0,R24
std y+1,R25
clr R18
clr R16
xcall _LCD_char
.dbline 423
; //LCD_char(9,0,b,0);
; LCD_char(18,0,f,0);
clr R2
std y+2,R2
ldi R24,<_f
ldi R25,>_f
std y+0,R24
std y+1,R25
clr R18
ldi R16,18
xcall _LCD_char
.dbline 426
; // LCD_char(27,0,d,0);
; //LCD_char(36,0,e,0);
; LCD_char(45,0,a,0);
clr R2
std y+2,R2
ldi R24,<_a
ldi R25,>_a
std y+0,R24
std y+1,R25
clr R18
ldi R16,45
xcall _LCD_char
.dbline 428
; // LCD_char(54,0,g,0);
; LCD_char(0,4,v,0);
clr R2
std y+2,R2
ldi R24,<_v
ldi R25,>_v
std y+0,R24
std y+1,R25
ldi R18,4
clr R16
xcall _LCD_char
.dbline 431
; // LCD_char(9,4,i,0);
; //LCD_char(18,4,j,0);
; LCD_char(27,4,h,0);
clr R2
std y+2,R2
ldi R24,<_h
ldi R25,>_h
std y+0,R24
std y+1,R25
ldi R18,4
ldi R16,27
xcall _LCD_char
.dbline 433
; //LCD_char(36,4,l,0);
; LCD_char(45,4,o,0);
clr R2
std y+2,R2
ldi R24,<_o
ldi R25,>_o
std y+0,R24
std y+1,R25
ldi R18,4
ldi R16,45
xcall _LCD_char
.dbline 435
; //LCD_char(54,4,m,0);
; LCD_char(0,0,n,1);
ldi R24,1
std y+2,R24
ldi R24,<_n
ldi R25,>_n
std y+0,R24
std y+1,R25
clr R18
clr R16
xcall _LCD_char
.dbline 439
; // LCD_char(9,0,p,1);
; // LCD_char(18,0,q,1);
; // LCD_char(27,0,r,1);
; LCD_char(36,0,k,1);
ldi R24,1
std y+2,R24
ldi R24,<_k
ldi R25,>_k
std y+0,R24
std y+1,R25
clr R18
ldi R16,36
xcall _LCD_char
.dbline 442
; // LCD_char(45,0,t,1);
; // LCD_char(54,0,u,1);
; LCD_char(0,4,s,1);
ldi R24,1
std y+2,R24
ldi R24,<_s
ldi R25,>_s
std y+0,R24
std y+1,R25
ldi R18,4
clr R16
xcall _LCD_char
.dbline 450
; // LCD_char(9,4,w,1);
; // LCD_char(18,4,x,1);
; // LCD_char(27,4,y,1);
; //LCD_char(36,4,z,1);
; //LCD_char(45,4,o,1);
; // LCD_char(54,4,x,1);
; //LCD_char(0,4,v,1);
; flag_char1=0;
clr R2
sts _flag_char1,R2
.dbline 451
; flag_w=1;
ldi R24,1
sts _flag_w,R24
.dbline 452
; }
L112:
.dbline 453
; if(wed1==1)
lds R24,_wed1
cpi R24,1
breq X2
xjmp L114
X2:
.dbline 454
; {
.dbline 455
; LCD_char(0,0,z,0);
clr R2
std y+2,R2
ldi R24,<_z
ldi R25,>_z
std y+0,R24
std y+1,R25
clr R18
clr R16
xcall _LCD_char
.dbline 457
; // LCD_char(9,0,b,0);
; LCD_char(18,0,s,0);
clr R2
std y+2,R2
ldi R24,<_s
ldi R25,>_s
std y+0,R24
std y+1,R25
clr R18
ldi R16,18
xcall _LCD_char
.dbline 460
; //LCD_char(27,0,d,0);
; // LCD_char(36,0,e,0);
; LCD_char(45,0,n,0);
clr R2
std y+2,R2
ldi R24,<_n
ldi R25,>_n
std y+0,R24
std y+1,R25
clr R18
ldi R16,45
xcall _LCD_char
.dbline 462
; // LCD_char(54,0,g,0);
; LCD_char(0,4,o,0);
clr R2
std y+2,R2
ldi R24,<_o
ldi R25,>_o
std y+0,R24
std y+1,R25
ldi R18,4
clr R16
xcall _LCD_char
.dbline 465
; // LCD_char(9,4,i,0);
; // LCD_char(18,4,j,0);
; LCD_char(27,4,v,0);
clr R2
std y+2,R2
ldi R24,<_v
ldi R25,>_v
std y+0,R24
std y+1,R25
ldi R18,4
ldi R16,27
xcall _LCD_char
.dbline 467
; // LCD_char(36,4,l,0);
; LCD_char(45,4,f,0);
clr R2
std y+2,R2
ldi R24,<_f
ldi R25,>_f
std y+0,R24
std y+1,R25
ldi R18,4
ldi R16,45
xcall _LCD_char
.dbline 469
; // LCD_char(54,4,m,0);
; LCD_char(0,0,h,1);
ldi R24,1
std y+2,R24
ldi R24,<_h
ldi R25,>_h
std y+0,R24
std y+1,R25
clr R18
clr R16
xcall _LCD_char
.dbline 473
; // LCD_char(9,0,p,1);
; // LCD_char(18,0,q,1);
; //LCD_char(27,0,r,1);
; LCD_char(36,0,c,1);
ldi R24,1
std y+2,R24
ldi R24,<_c
ldi R25,>_c
std y+0,R24
std y+1,R25
clr R18
ldi R16,36
xcall _LCD_char
.dbline 476
; // LCD_char(45,0,t,1);
; // LCD_char(54,0,u,1);
; LCD_char(0,4,k,1);
ldi R24,1
std y+2,R24
ldi R24,<_k
ldi R25,>_k
std y+0,R24
std y+1,R25
ldi R18,4
clr R16
xcall _LCD_char
.dbline 484
; // LCD_char(9,4,w,1);
; // LCD_char(18,4,x,1);
; // LCD_char(27,4,y,1);
; //LCD_char(36,4,z,1);
; //LCD_char(45,4,o,1);
; // LCD_char(54,4,x,1);
; //LCD_char(0,4,v,1);
; flag_char1=0;
clr R2
sts _flag_char1,R2
.dbline 485
; flag_w=1;
ldi R24,1
sts _flag_w,R24
.dbline 486
; }
L114:
.dbline 487
; }
L110:
.dbline 488
lds R24,_wed1
subi R24,255 ; addi 1
sts _wed1,R24
.dbline 489
cpi R24,3
brne L116
.dbline 490
.dbline 491
ldi R24,1
sts _wed1,R24
.dbline 492
L116:
.dbline -2
.dbline 494
; wed1++;
; if(wed1==3)
; {
; wed1=1;
; }
;
; }
L109:
adiw R28,3
.dbline 0 ; func end
ret
.dbend
.dbfunc e key _key fV
.even
_key::
xcall push_gset2
.dbline -1
.dbline 499
;
;
;
; void key(void)
; {
.dbline 500
; if(data_key[key_i-1]==0x5a)//enter
ldi R24,<_data_key-1
ldi R25,>_data_key-1
lds R30,_key_i
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,90
breq X31
xjmp L119
X31:
.dbline 501
; {
.dbline 502
; if(flag_enter==1)
lds R24,_flag_enter
cpi R24,1
brne L122
.dbline 503
; {
.dbline 504
; TCCR0=0x00;
clr R2
out 0x33,R2
.dbline 505
; flag_score=1;
ldi R24,1
sts _flag_score,R24
.dbline 506
; flag_over=1;
sts _flag_over,R24
.dbline 508
; //flag_enter=0;
; flag_char1=0;
sts _flag_char1,R2
.dbline 510
;
; }
L122:
.dbline 511
; if(flag_enter==0)
lds R2,_flag_enter
tst R2
brne L124
.dbline 512
; {
.dbline 513
; flag_1=0;
clr R2
sts _flag_1,R2
.dbline 514
; flag_char1=1;
ldi R24,1
sts _flag_char1,R24
.dbline 515
; x_station=0;
sts _x_station,R2
.dbline 516
; y_station=2;
ldi R24,2
sts _y_station,R24
.dbline 517
; flag_error=0;
sts _flag_error,R2
.dbline 518
; flag_over=0;
sts _flag_over,R2
.dbline 519
; LR=0;
sts _LR,R2
.dbline 520
; rig=0;
clr R2
sts _rig,R2
.dbline 521
; key_i=1;
ldi R24,1
sts _key_i,R24
.dbline 522
; flag_enter=1;
sts _flag_enter,R24
.dbline 523
; char_display();
xcall _char_display
.dbline 524
; flag_ts=0;
clr R2
sts _flag_ts,R2
.dbline 525
; flag_cout=0;
sts _flag_cout,R2
.dbline 526
; flag_ms=0;
clr R3
sts _flag_ms+1,R3
sts _flag_ms,R2
.dbline 527
; flag_time0=0;
sts _flag_time0,R2
.dbline 528
; TCNT0=0X38;
ldi R24,56
out 0x32,R24
.dbline 529
; TCCR0=(1<<CS01);//8分频
ldi R24,2
out 0x33,R24
.dbline 530
; }
L124:
.dbline 531
; data_key[1]=0;
clr R2
sts _data_key+1,R2
.dbline 532
; data_key[2]=0;
sts _data_key+2,R2
.dbline 534
;
; }
L119:
.dbline 536
;
; if((data_key[key_i-1]==0x76)&(flag_w==1))//esc
ldi R24,<_data_key-1
ldi R25,>_data_key-1
lds R30,_key_i
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,118
brne L131
ldi R22,1
ldi R23,0
xjmp L132
L131:
clr R22
clr R23
L132:
lds R24,_flag_w
cpi R24,1
brne L133
ldi R20,1
ldi R21,0
xjmp L134
L133:
clr R20
clr R21
L134:
movw R2,R22
and R2,R20
and R3,R21
tst R2
brne X3
tst R3
breq L128
X3:
.dbline 537
; {
.dbline 539
; //if(data_key[3]==0xe0)
; {
.dbline 540
; flag_esc=1;
ldi R24,1
sts _flag_esc,R24
.dbline 541
; flag_1=0;
clr R2
sts _flag_1,R2
.dbline 542
; flag_char1=1;
sts _flag_char1,R24
.dbline 543
; x_station=0;
sts _x_station,R2
.dbline 544
; y_station=2;
ldi R24,2
sts _y_station,R24
.dbline 545
; flag_error=0;
sts _flag_error,R2
.dbline 546
; flag_over=0;
sts _flag_over,R2
.dbline 547
; flag_score=0;
sts _flag_score,R2
.dbline 548
; LR=0;
clr R2
sts _LR,R2
.dbline 549
; rig=0;
sts _rig,R2
.dbline 550
; char_display();
xcall _char_display
.dbline 551
; key_i=1;
ldi R24,1
sts _key_i,R24
.dbline 552
; flag_ts=0;
clr R2
sts _flag_ts,R2
.dbline 553
; flag_cout=0;
sts _flag_cout,R2
.dbline 554
; flag_ms=0;
clr R3
sts _flag_ms+1,R3
sts _flag_ms,R2
.dbline 555
; flag_time0=0;
sts _flag_time0,R2
.dbline 556
; TCNT0=0X38;
ldi R24,56
out 0x32,R24
.dbline 557
; TCCR0=(1<<CS01);//8分频
ldi R24,2
out 0x33,R24
.dbline 558
; }
.dbline 559
; }
L128:
.dbline 560
; if(flag_over==0)
lds R2,_flag_over
tst R2
breq X32
xjmp L135
X32:
.dbline 561
; {
.dbline 562
; if((data_key[key_i-1]==0x71)&(flag_w==1))///del
ldi R24,<_data_key-1
ldi R25,>_data_key-1
lds R30,_key_i
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,113
brne L140
ldi R22,1
ldi R23,0
xjmp L141
L140:
clr R22
clr R23
L141:
lds R24,_flag_w
cpi R24,1
brne L142
ldi R20,1
ldi R21,0
xjmp L143
L142:
clr R20
clr R21
L143:
movw R2,R22
and R2,R20
and R3,R21
tst R2
brne X4
tst R3
breq L137
X4:
.dbline 563
; {
.dbline 565
; //if(data_key[3]==0xe0)
; {
.dbline 566
; flag_del=1;
ldi R24,1
sts _flag_del,R24
.dbline 567
; key_i=1;
sts _key_i,R24
.dbline 568
; }
.dbline 569
; }
L137:
.dbline 570
; if((data_key[key_i-1]==0x1c)&(flag_w==1))///a
ldi R24,<_data_key-1
ldi R25,>_data_key-1
lds R30,_key_i
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,28
brne L147
ldi R22,1
ldi R23,0
xjmp L148
L147:
clr R22
clr R23
L148:
lds R24,_flag_w
cpi R24,1
brne L149
ldi R20,1
ldi R21,0
xjmp L150
L149:
clr R20
clr R21
L150:
movw R2,R22
and R2,R20
and R3,R21
tst R2
brne X5
tst R3
breq L144
X5:
.dbline 571
; {
.dbline 572
; flag_a=1;
ldi R24,1
sts _flag_a,R24
.dbline 573
; flag_cout++;
lds R24,_flag_cout
subi R24,255 ; addi 1
sts _flag_cout,R24
.dbline 574
; key_i=1;
ldi R24,1
sts _key_i,R24
.dbline 575
; }
L144:
.dbline 576
; if((data_key[key_i-1]==0x32)&(flag_w==1))///b
ldi R24,<_data_key-1
ldi R25,>_data_key-1
lds R30,_key_i
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,50
brne L154
ldi R22,1
ldi R23,0
xjmp L155
L154:
clr R22
clr R23
L155:
lds R24,_flag_w
cpi R24,1
brne L156
ldi R20,1
ldi R21,0
xjmp L157
L156:
clr R20
clr R21
L157:
movw R2,R22
and R2,R20
and
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -