📄 main.s
字号:
xcall _send_data
.dbline 545
; send_data(18,lcd_buffer[9]);
lds R18,_lcd_buffer+9
ldi R16,18
xcall _send_data
.dbline 546
; send_data(24,lcd_buffer[12]);
lds R18,_lcd_buffer+12
ldi R16,24
xcall _send_data
.dbline 547
; }
L256:
.dbline 548
; if(key==3)
movw R30,R28
subi R30,50 ; addi 206
sbci R31,255
ldd R24,z+0
cpi R24,3
breq X24
xjmp L320
X24:
.dbline 549
; {
.dbline 550
; lcd_buffer[1]&=0xfd;
lds R24,_lcd_buffer+1
andi R24,253
sts _lcd_buffer+1,R24
.dbline 551
; lcd_buffer[4]&=0x1f;
lds R24,_lcd_buffer+4
andi R24,31
sts _lcd_buffer+4,R24
.dbline 552
; lcd_buffer[9]&=0xfd;
lds R24,_lcd_buffer+9
andi R24,253
sts _lcd_buffer+9,R24
.dbline 553
; lcd_buffer[12]&=0x59;
lds R24,_lcd_buffer+12
andi R24,89
sts _lcd_buffer+12,R24
.dbline 555
;
; send_data(2,lcd_buffer[1]);
lds R18,_lcd_buffer+1
ldi R16,2
xcall _send_data
.dbline 556
; send_data(8,lcd_buffer[4]);
lds R18,_lcd_buffer+4
ldi R16,8
xcall _send_data
.dbline 557
; send_data(18,lcd_buffer[9]);
lds R18,_lcd_buffer+9
ldi R16,18
xcall _send_data
.dbline 558
; send_data(24,lcd_buffer[12]);
lds R18,_lcd_buffer+12
ldi R16,24
xcall _send_data
.dbline 560
;
; nques_id++;
movw R30,R28
subi R30,44 ; addi 212
sbci R31,255
ldd R0,z+0
inc R0
movw R30,R28
subi R30,44 ; addi 212
sbci R31,255
std z+0,R0
.dbline 561
; if(nques_id>n_num)
cp R14,R0
brsh L330
.dbline 562
; nques_id=1;
clr R0
inc R0
movw R30,R28
subi R30,44 ; addi 212
sbci R31,255
std z+0,R0
L330:
.dbline 563
; ques_id=n_ques[nques_id-1];
movw R24,R28
subi R24,157 ; offset = 99
sbci R25,255
movw R26,R28
subi R26,44 ; addi 212
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
movw R30,R28
subi R30,51 ; addi 205
sbci R31,255
std z+0,R2
.dbline 565
;
; }
L320:
.dbline 566
; i=ques_id/100;
ldi R17,100
movw R30,R28
subi R30,51 ; addi 205
sbci R31,255
ldd R16,z+0
xcall div8u
movw R30,R28
subi R30,54 ; addi 202
sbci R31,255
std z+0,R16
.dbline 567
; j=(ques_id-i*100)/10;
ldi R24,100
mov R0,R16
mul R24,R0
movw R30,R28
subi R30,51 ; addi 205
sbci R31,255
ldd R16,z+0
sub R16,R0
ldi R17,10
xcall div8u
movw R30,R28
subi R30,52 ; addi 204
sbci R31,255
std z+0,R16
.dbline 568
; k=ques_id-i*100-j*10;
ldi R24,100
movw R30,R28
subi R30,54 ; addi 202
sbci R31,255
ldd R0,z+0
mul R24,R0
movw R30,R28
subi R30,51 ; addi 205
sbci R31,255
ldd R4,z+0
sub R4,R0
ldi R24,10
mov R0,R16
mul R24,R0
sub R4,R0
movw R30,R28
subi R30,53 ; addi 203
sbci R31,255
std z+0,R4
.dbline 569
; if(i)
movw R30,R28
subi R30,54 ; addi 202
sbci R31,255
ldd R0,z+0
tst R0
breq L333
.dbline 570
; lcd_buffer[7]=table[j]|0x10;
ldi R24,<_table
ldi R25,>_table
movw R26,R28
subi R26,52 ; addi 204
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
ori R24,16
sts _lcd_buffer+7,R24
xjmp L334
L333:
.dbline 572
; else
; lcd_buffer[7]=table[j];
ldi R24,<_table
ldi R25,>_table
movw R26,R28
subi R26,52 ; addi 204
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
sts _lcd_buffer+7,R2
L334:
.dbline 573
; lcd_buffer[15]=table[k]|0x10;
ldi R24,<_table
ldi R25,>_table
movw R26,R28
subi R26,53 ; addi 203
sbci R27,255
ld R30,x
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
ori R24,16
sts _lcd_buffer+15,R24
.dbline 575
;
; send_data(14,lcd_buffer[7]);
lds R18,_lcd_buffer+7
ldi R16,14
xcall _send_data
.dbline 576
; send_data(30,lcd_buffer[15]);
lds R18,_lcd_buffer+15
ldi R16,30
xcall _send_data
L134:
.dbline 577
; B: i=receive();
xcall _receive
movw R30,R28
subi R30,54 ; addi 202
sbci R31,255
std z+0,R16
.dbline 578
; if(i)
mov R0,R16
tst R16
breq L340
.dbline 579
; {
.dbline 580
; if(data[7]==0x88)//||data[4]==guest_id
lds R24,_data+7
cpi R24,136
brne L342
.dbline 581
; {
.dbline 582
; key=0;
clr R0
movw R30,R28
subi R30,50 ; addi 206
sbci R31,255
std z+0,R0
.dbline 583
; lcd_buffer[10]&=0xEF;
lds R24,_lcd_buffer+10
andi R24,239
sts _lcd_buffer+10,R24
.dbline 584
; lcd_buffer[1]&=0xFE;
lds R24,_lcd_buffer+1
andi R24,254
sts _lcd_buffer+1,R24
.dbline 585
; lcd_buffer[14]=0x00;
clr R2
sts _lcd_buffer+14,R2
.dbline 586
; lcd_buffer[12]=(lcd_buffer[12]&0x6B)|0x01;
lds R24,_lcd_buffer+12
andi R24,107
ori R24,1
sts _lcd_buffer+12,R24
.dbline 588
;
; send_data(2,lcd_buffer[1]);
lds R18,_lcd_buffer+1
ldi R16,2
xcall _send_data
.dbline 589
; send_data(24,lcd_buffer[12]);
lds R18,_lcd_buffer+12
ldi R16,24
xcall _send_data
.dbline 590
; send_data(20,lcd_buffer[10]);
lds R18,_lcd_buffer+10
ldi R16,20
xcall _send_data
.dbline 591
; send_data(28,lcd_buffer[14]);
lds R18,_lcd_buffer+14
ldi R16,28
xcall _send_data
.dbline 592
; }
L342:
.dbline 593
; }
L340:
.dbline 594
; if(key==2)
movw R30,R28
subi R30,50 ; addi 206
sbci R31,255
ldd R24,z+0
cpi R24,2
breq X25
xjmp L354
X25:
.dbline 595
; {
.dbline 597
; // B: t=2;
; lcd_buffer[0]|=0x10;
lds R24,_lcd_buffer
ori R24,16
sts _lcd_buffer,R24
.dbline 598
; lcd_buffer[10]|=0x10;
lds R24,_lcd_buffer+10
ori R24,16
sts _lcd_buffer+10,R24
.dbline 599
; lcd_buffer[12]|=0x18;
lds R24,_lcd_buffer+12
ori R24,24
sts _lcd_buffer+12,R24
.dbline 600
; send_data(0,lcd_buffer[0]);
lds R18,_lcd_buffer
clr R16
xcall _send_data
.dbline 601
; send_data(20,lcd_buffer[10]);
lds R18,_lcd_buffer+10
ldi R16,20
xcall _send_data
.dbline 602
; send_data(24,lcd_buffer[12]);
lds R18,_lcd_buffer+12
ldi R16,24
xcall _send_data
.dbline 610
; //i=receive();
; //if(i)
; // while(data[7]!=0x88)
; // {
; //i=receive();
; //if(i)
; //{
; work_state();
sbi 0x15,4
.dbline 611
; send_state();
sbi 0x15,2
.dbline 612
; delay_ms(3);
ldi R16,3
xcall _delay_ms
.dbline 614
; // delay_us(250);
; sendchar(0x00);
clr R16
xcall _sendchar
.dbline 615
; send_answer();
xcall _send_answer
.dbline 616
; sendchar(0x00);
clr R16
xcall _sendchar
.dbline 617
; sendchar(0x00);
clr R16
xcall _sendchar
.dbline 620
;
; //}
; work_state();
sbi 0x15,4
.dbline 621
; rece_state();
cbi 0x15,2
.dbline 624
; // delay_us(250);
; // delay_us(250);
; delay_ms(1);
ldi R16,1
xcall _delay_ms
.dbline 627
; //if(t1>200) break;
;
; if(t>=2&&t<33)
lds R24,_t
cpi R24,2
brlo L360
cpi R24,33
brsh L360
.dbline 628
; {
.dbline 629
; lcd_buffer[1]|=0x01;
lds R24,_lcd_buffer+1
ori R24,1
sts _lcd_buffer+1,R24
.dbline 630
; lcd_buffer[14]=0x00;
clr R2
sts _lcd_buffer+14,R2
.dbline 631
; send_data(2,lcd_buffer[1]);
mov R18,R24
ldi R16,2
xcall _send_data
.dbline 632
; send_data(28,lcd_buffer[14]);
lds R18,_lcd_buffer+14
ldi R16,28
xcall _send_data
.dbline 633
; }
L360:
.dbline 634
; if(t>=33&&t<75)
lds R24,_t
cpi R24,33
brlo L366
cpi R24,75
brsh L366
.dbline 635
; {
.dbline 636
; lcd_buffer[14]=0x10;
ldi R24,16
sts _lcd_buffer+14,R24
.dbline 637
; lcd_buffer[1]&=0xFE;
lds R24,_lcd_buffer+1
andi R24,254
sts _lcd_buffer+1,R24
.dbline 638
; send_data(28,lcd_buffer[14]);
lds R18,_lcd_buffer+14
ldi R16,28
xcall _send_data
.dbline 639
; send_data(2,lcd_buffer[1]);
lds R18,_lcd_buffer+1
ldi R16,2
xcall _send_data
.dbline 640
; }
L366:
.dbline 641
; if(t>=75&&t<100)
lds R24,_t
cpi R24,75
brsh X26
xjmp L134
X26:
cpi R24,100
brlo X27
xjmp L134
X27:
.dbline 642
; {
.dbline 643
; lcd_buffer[14]=0x01;
ldi R24,1
sts _lcd_buffer+14,R24
.dbline 644
; lcd_buffer[1]&=0xFE;
lds R24,_lcd_buffer+1
andi R24,254
sts _lcd_buffer+1,R24
.dbline 645
; send_data(2,lcd_buffer[1]);
mov R18,R24
ldi R16,2
xcall _send_data
.dbline 646
; send_data(28,lcd_buffer[14]);
lds R18,_lcd_buffer+14
ldi R16,28
xcall _send_data
.dbline 647
; }
.dbline 648
; goto B;
xjmp L134
L354:
.dbline 683
;
; // i=receive();
;
; //if(i)
; /*
; while(i!=0x0F||data[0]!=0xF0)
; {
; i=getchar();
; data[0]=getchar();
; }
; for(j=1;j<12;j++)
; data[j]=getchar();
;
; for(j=0;j<11;j++)
; d^=data[j]; */
; //if(d==data[11])
; //{
; /* if(data[7]==0x88)//||data[4]==guest_id
; {
;
; lcd_buffer[10]&=0xEF;
; lcd_buffer[1]&=0xFE;
; lcd_buffer[14]=0x00;
; lcd_buffer[12]=(lcd_buffer[12]&0x6B)|0x01;
;
; send_data(2,lcd_buffer[1]);
; send_data(24,lcd_buffer[12]);
; send_data(20,lcd_buffer[10]);
; send_data(28,lcd_buffer[14]);
; }
; */
;
; // }
; }
; }
L199:
.dbline 684
; if(t==0)
lds R2,_t
tst R2
breq X28
xjmp L378
X28:
.dbline 685
; {
L380:
.dbline 686
L381:
.dbline 686
; while(!(ADCSRA&0x10));
sbis 0x6,4
rjmp L380
.dbline 687
; adc_l=ADCL;
in R12,0x4
.dbline 688
; adc_h=(ADCH&0x03);
in R22,0x5
andi R22,3
.dbline 689
; ADMUX=0xC3;// value|=(int)ADCH << 8; //read 2 high bits and shift into top byte
ldi R24,195
out 0x7,R24
.dbline 690
; ADCSRA|=(1<<ADSC);
sbi 0x6,6
.dbline 691
; adc_rel=(((adc_h<<8)&0xff00)|adc_l);
mov R2,R12
clr R3
mov R20,R22
clr R21
mov R21,R20
clr R20
andi R20,0
or R20,R2
or R21,R3
.dbline 692
; lcd_buffer[4]&=0xF0;
lds R24,_lcd_buffer+4
andi R24,240
sts _lcd_buffer+4,R24
.dbline 693
; if(adc_old!=adc_rel)
movw R30,R28
subi R30,49 ; addi 207
sbci R31,255
ldd R0,z+0
ldd R1,z+1
cp R0,R20
cpc R1,R21
breq L384
.dbline 694
; adc_old=adc_rel;
movw R30,R28
subi R30,49 ; addi 207
sbci R31,255
std z+1,R21
std z+0,R20
L384:
.dbline 695
; if(adc_old>0)
movw R30,R28
subi R30,49 ; addi 207
sbci R31,255
ldd R0,z+0
ldd R1,z+1
tst R0
brne X2
tst R1
breq L386
X2:
.dbline 696
; lcd_buffer[4]|=0x01;
lds R24,_lcd_buffer+4
ori R24,1
sts _lcd_buffer+4,R24
L386:
.dbline 697
; if(adc_old>0x0100&&adc_old<0x0230)
ldi R24,256
ldi R25,1
movw R30,R28
subi R30,49 ; addi 207
sbci R31,255
ldd R0,z+0
ldd R1,z+1
cp R24,R0
cpc R25,R1
brsh L389
movw R24,R0
cpi R24,48
ldi R30,2
cpc R25,R30
brsh L389
.dbline 698
; lcd_buffer[4]|=0x05;
lds R24,_lcd_buffer+4
ori R24,5
sts _lcd_buffer+4,R24
L389:
.dbline 699
; if(adc_old>0x0230&&adc_old<0x0244)
ldi R24,560
ldi R25,2
movw R30,R28
subi R30,49 ; addi 207
sbci R31,255
ldd R0,z+0
ldd R1,z+1
cp R24,R0
cpc R25,R1
brsh L392
movw R24,R0
cpi R24,68
ldi R30,2
cpc R25,R30
brsh L392
.dbline 700
; lcd_buffer[4]|=0x0D;
lds R24,_lcd_buffer+4
ori R24,13
sts _lcd_buffer+4,R24
L392:
.dbline 701
; if(adc_old>0x0244)
ldi R24,580
ldi R25,2
movw R30,R28
subi R30,49 ; addi 207
sbci R31,255
ldd R0,z+0
ldd R1,z+1
cp R24,R0
cpc R25,R1
brsh L395
.dbline 702
; lcd_buffer[4]|=0x0F;
lds R24,_lcd_buffer+4
ori R24,15
sts _lcd_buffer+4,R24
L395:
.dbline 703
; send_data(0x08,lcd_buffer[4]);
lds R18,_lcd_buffer+4
ldi R16,8
xcall _send_data
.dbline 704
; }
L378:
.dbline 717
L111:
.dbline 315
xjmp L110
X3:
.dbline -2
.dbline 718
; //EEPROMwrite(0x04,temp);
; //EEPROMwrite(0x05,ques_num);
; //EEPROMwrite(0x06,score);
; //for(i=0;i<100;i++)
; //{
; // EEPROMwrite((i+7),ques[i]);
; // }
; //for(i=0;i<100;i++)
; //{
; // EEPROMwrite((i+107),ans[i]);
; // }
; //}
; }
; }
L59:
adiw R28,63
adiw R28,63
adiw R28,63
adiw R28,29 ; offset = 218
.dbline 0 ; func end
ret
.dbsym l d1 1 c
.dbsym r score 10 c
.dbsym l temp 217 c
.dbsym l keye_flag 216 c
.dbsym l keyd_flag 215 c
.dbsym l keyb_flag 214 c
.dbsym l keya_flag 213 c
.dbsym l nques_id 212 c
.dbsym r adc_l 12 c
.dbsym r adc_h 22 c
.dbsym l key_flag 211 c
.dbsym r adc_rel 20 i
.dbsym l keyc_flag 210 c
.dbsym l d 209 c
.dbsym l adc_old 207 i
.dbsym l n_ques 100 A[100:100]c
.dbsym r n_num 14 c
.dbsym l key 206 c
.dbsym l ques_id 205 c
.dbsym l ans 0 A[100:100]c
.dbsym l j 204 c
.dbsym l k 203 c
.dbsym l i 202 c
.dbend
.area bss(ram, con, rel)
.dbfile F:\赵一\edu6000_1202\main.c
_t1::
.blkb 2
.dbsym e t1 _t1 i
_ques_num::
.blkb 1
.dbsym e ques_num _ques_num c
_data::
.blkb 110
.dbsym e data _data A[110:110]c
_ques::
.blkb 100
.dbsym e ques _ques A[100:100]c
_t::
.blkb 1
.dbsym e t _t c
_guest_id::
.blkb 1
.dbsym e guest_id _guest_id c
_host_id::
.blkb 1
.dbsym e host_id _host_id c
_lcd_buffer::
.blkb 16
.dbsym e lcd_buffer _lcd_buffer A[16:16]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -