📄 main.s
字号:
ldi R24,<_msg_buffer
ldi R25,>_msg_buffer
movw R30,R12
adiw R30,2
add R30,R24
adc R31,R25
std z+0,R16
.dbline 743
ldi R20,1
ldi R21,0
ldi R22,0
ldi R23,0
lds R4,_address+2
lds R5,_address+2+1
lds R2,_address
lds R3,_address+1
add R2,R20
adc R3,R21
adc R4,R22
adc R5,R23
sts _address+1,R3
sts _address,R2
sts _address+2+1,R5
sts _address+2,R4
.dbline 744
L292:
.dbline 735
movw R24,R12
adiw R24,1
movw R12,R24
L294:
.dbline 735
cp R12,R10
cpc R13,R11
brsh X23
rjmp L291
X23:
.dbline 746
; {
; //Select Low or High-Byte
; spi_transfer_8(tmp);
; spi_transfer_16(address&0xFFFF);
; msg_buffer[i+2] = spi_transfer_8(0);
;
; //increment address
; address++;
; }
;
; num_bytes = block_size+3;
movw R24,R10
adiw R24,3
std y+11,R25
std y+10,R24
.dbline 747
; msg_buffer[0] = CMD_READ_EEPROM_ISP;
ldi R24,22
sts _msg_buffer,R24
.dbline 748
; msg_buffer[1] = STATUS_CMD_OK;
clr R2
sts _msg_buffer+1,R2
.dbline 749
; msg_buffer[block_size+2] = STATUS_CMD_OK;
ldi R24,<_msg_buffer
ldi R25,>_msg_buffer
movw R30,R10
adiw R30,2
add R30,R24
adc R31,R25
std z+0,R2
.dbline 750
; }
rjmp L287
L286:
.dbline 756
;
;
; //////////////////////////////////////
; //CMD_PROGRAM_FUSE_ISP
; //////////////////////////////////////
; else if(cmd==CMD_PROGRAM_FUSE_ISP)
ldd R24,y+12
cpi R24,23
brne L296
.dbline 757
; {
.dbline 758
; tmp = spi_transfer_8(msg_buffer[1]);
lds R16,_msg_buffer+1
rcall _spi_transfer_8
std y+13,R16
.dbline 759
; tmp = spi_transfer_8(msg_buffer[2]);
lds R16,_msg_buffer+2
rcall _spi_transfer_8
std y+13,R16
.dbline 760
; tmp = spi_transfer_8(msg_buffer[3]);
lds R16,_msg_buffer+3
rcall _spi_transfer_8
std y+13,R16
.dbline 761
; tmp = spi_transfer_8(msg_buffer[4]);
lds R16,_msg_buffer+4
rcall _spi_transfer_8
std y+13,R16
.dbline 763
;
; num_bytes = 3;
ldi R24,3
ldi R25,0
std y+11,R25
std y+10,R24
.dbline 764
; msg_buffer[0] = CMD_PROGRAM_FUSE_ISP;
ldi R24,23
sts _msg_buffer,R24
.dbline 765
; msg_buffer[1] = STATUS_CMD_OK;
clr R2
sts _msg_buffer+1,R2
.dbline 766
; msg_buffer[2] = STATUS_CMD_OK;
sts _msg_buffer+2,R2
.dbline 767
; }
rjmp L297
L296:
.dbline 771
; //////////////////////////////////////
; //CMD_READ_FUSE_ISP
; //////////////////////////////////////
; else if(cmd==CMD_READ_FUSE_ISP)
ldd R24,y+12
cpi R24,24
brne L304
.dbline 772
; {
.dbline 773
; tmp = spi_transfer_8(msg_buffer[2]);
lds R16,_msg_buffer+2
rcall _spi_transfer_8
std y+13,R16
.dbline 774
; if(msg_buffer[1] == 1) msg_buffer[2] = tmp;
lds R24,_msg_buffer+1
cpi R24,1
brne L307
.dbline 774
mov R0,R16
sts _msg_buffer+2,R0
L307:
.dbline 775
; tmp = spi_transfer_8(msg_buffer[3]);
lds R16,_msg_buffer+3
rcall _spi_transfer_8
std y+13,R16
.dbline 776
; if(msg_buffer[1] == 2) msg_buffer[2] = tmp;
lds R24,_msg_buffer+1
cpi R24,2
brne L312
.dbline 776
mov R0,R16
sts _msg_buffer+2,R0
L312:
.dbline 777
; tmp = spi_transfer_8(msg_buffer[4]);
lds R16,_msg_buffer+4
rcall _spi_transfer_8
std y+13,R16
.dbline 778
; if(msg_buffer[1] == 3) msg_buffer[2] = tmp;
lds R24,_msg_buffer+1
cpi R24,3
brne L317
.dbline 778
mov R0,R16
sts _msg_buffer+2,R0
L317:
.dbline 779
; tmp = spi_transfer_8(msg_buffer[5]);
lds R16,_msg_buffer+5
rcall _spi_transfer_8
std y+13,R16
.dbline 780
; if(msg_buffer[1] == 4) msg_buffer[2] = tmp;
lds R24,_msg_buffer+1
cpi R24,4
brne L322
.dbline 780
mov R0,R16
sts _msg_buffer+2,R0
L322:
.dbline 782
;
; num_bytes = 4;
ldi R24,4
ldi R25,0
std y+11,R25
std y+10,R24
.dbline 783
; msg_buffer[0] = CMD_READ_FUSE_ISP;
ldi R24,24
sts _msg_buffer,R24
.dbline 784
; msg_buffer[1] = STATUS_CMD_OK;
clr R2
sts _msg_buffer+1,R2
.dbline 785
; msg_buffer[3] = STATUS_CMD_OK;
sts _msg_buffer+3,R2
.dbline 786
; }
rjmp L305
L304:
.dbline 790
; //////////////////////////////////////
; //CMD_PROGRAM_LOCK_ISP
; //////////////////////////////////////
; else if(cmd==CMD_PROGRAM_LOCK_ISP)
ldd R24,y+12
cpi R24,25
brne L328
.dbline 791
; {
.dbline 792
; tmp = spi_transfer_8(msg_buffer[1]);
lds R16,_msg_buffer+1
rcall _spi_transfer_8
std y+13,R16
.dbline 793
; tmp = spi_transfer_8(msg_buffer[2]);
lds R16,_msg_buffer+2
rcall _spi_transfer_8
std y+13,R16
.dbline 794
; tmp = spi_transfer_8(msg_buffer[3]);
lds R16,_msg_buffer+3
rcall _spi_transfer_8
std y+13,R16
.dbline 795
; tmp = spi_transfer_8(msg_buffer[4]);
lds R16,_msg_buffer+4
rcall _spi_transfer_8
std y+13,R16
.dbline 797
;
; num_bytes = 3;
ldi R24,3
ldi R25,0
std y+11,R25
std y+10,R24
.dbline 798
; msg_buffer[0] = CMD_PROGRAM_LOCK_ISP;
ldi R24,25
sts _msg_buffer,R24
.dbline 799
; msg_buffer[1] = STATUS_CMD_OK;
clr R2
sts _msg_buffer+1,R2
.dbline 800
; msg_buffer[2] = STATUS_CMD_OK;
sts _msg_buffer+2,R2
.dbline 801
; }
rjmp L329
L328:
.dbline 805
; //////////////////////////////////////
; //CMD_READ_LOCK_ISP
; //////////////////////////////////////
; else if(cmd==CMD_READ_LOCK_ISP)
ldd R24,y+12
cpi R24,26
brne L336
.dbline 806
; {
.dbline 807
; tmp = spi_transfer_8(msg_buffer[2]);
lds R16,_msg_buffer+2
rcall _spi_transfer_8
std y+13,R16
.dbline 808
; if(msg_buffer[1] == 1) msg_buffer[2] = tmp;
lds R24,_msg_buffer+1
cpi R24,1
brne L339
.dbline 808
mov R0,R16
sts _msg_buffer+2,R0
L339:
.dbline 809
; tmp = spi_transfer_8(msg_buffer[3]);
lds R16,_msg_buffer+3
rcall _spi_transfer_8
std y+13,R16
.dbline 810
; if(msg_buffer[1] == 2) msg_buffer[2] = tmp;
lds R24,_msg_buffer+1
cpi R24,2
brne L344
.dbline 810
mov R0,R16
sts _msg_buffer+2,R0
L344:
.dbline 811
; tmp = spi_transfer_8(msg_buffer[4]);
lds R16,_msg_buffer+4
rcall _spi_transfer_8
std y+13,R16
.dbline 812
; if(msg_buffer[1] == 3) msg_buffer[2] = tmp;
lds R24,_msg_buffer+1
cpi R24,3
brne L349
.dbline 812
mov R0,R16
sts _msg_buffer+2,R0
L349:
.dbline 813
; tmp = spi_transfer_8(msg_buffer[5]);
lds R16,_msg_buffer+5
rcall _spi_transfer_8
std y+13,R16
.dbline 814
; if(msg_buffer[1] == 4) msg_buffer[2] = tmp;
lds R24,_msg_buffer+1
cpi R24,4
brne L354
.dbline 814
mov R0,R16
sts _msg_buffer+2,R0
L354:
.dbline 816
;
; num_bytes = 4;
ldi R24,4
ldi R25,0
std y+11,R25
std y+10,R24
.dbline 817
; msg_buffer[0] = CMD_READ_LOCK_ISP;
ldi R24,26
sts _msg_buffer,R24
.dbline 818
; msg_buffer[1] = STATUS_CMD_OK;
clr R2
sts _msg_buffer+1,R2
.dbline 819
; msg_buffer[3] = STATUS_CMD_OK;
sts _msg_buffer+3,R2
.dbline 820
; }
rjmp L337
L336:
.dbline 824
; //////////////////////////////////////
; //CMD_READ_SIGNATURE_ISP
; //////////////////////////////////////
; else if(cmd==CMD_READ_SIGNATURE_ISP)
ldd R24,y+12
cpi R24,27
brne L360
.dbline 825
; {
.dbline 826
; tmp = spi_transfer_8(msg_buffer[2]);
lds R16,_msg_buffer+2
rcall _spi_transfer_8
std y+13,R16
.dbline 827
; if(msg_buffer[1] == 1) msg_buffer[2] = tmp;
lds R24,_msg_buffer+1
cpi R24,1
brne L363
.dbline 827
mov R0,R16
sts _msg_buffer+2,R0
L363:
.dbline 828
; tmp = spi_transfer_8(msg_buffer[3]);
lds R16,_msg_buffer+3
rcall _spi_transfer_8
std y+13,R16
.dbline 829
; if(msg_buffer[1] == 2) msg_buffer[2] = tmp;
lds R24,_msg_buffer+1
cpi R24,2
brne L368
.dbline 829
mov R0,R16
sts _msg_buffer+2,R0
L368:
.dbline 830
; tmp = spi_transfer_8(msg_buffer[4]);
lds R16,_msg_buffer+4
rcall _spi_transfer_8
std y+13,R16
.dbline 831
; if(msg_buffer[1] == 3) msg_buffer[2] = tmp;
lds R24,_msg_buffer+1
cpi R24,3
brne L373
.dbline 831
mov R0,R16
sts _msg_buffer+2,R0
L373:
.dbline 832
; tmp = spi_transfer_8(msg_buffer[5]);
lds R16,_msg_buffer+5
rcall _spi_transfer_8
std y+13,R16
.dbline 833
; if(msg_buffer[1] == 4) msg_buffer[2] = tmp;
lds R24,_msg_buffer+1
cpi R24,4
brne L378
.dbline 833
mov R0,R16
sts _msg_buffer+2,R0
L378:
.dbline 835
;
; num_bytes = 4;
ldi R24,4
ldi R25,0
std y+11,R25
std y+10,R24
.dbline 836
; msg_buffer[0] = CMD_READ_SIGNATURE_ISP;
ldi R24,27
sts _msg_buffer,R24
.dbline 837
; msg_buffer[1] = STATUS_CMD_OK;
clr R2
sts _msg_buffer+1,R2
.dbline 838
; msg_buffer[3] = STATUS_CMD_OK;
sts _msg_buffer+3,R2
.dbline 839
; }
rjmp L361
L360:
.dbline 843
; //////////////////////////////////////
; //CMD_READ_OSCCAL_ISP
; //////////////////////////////////////
; else if(cmd==CMD_READ_OSCCAL_ISP)
ldd R24,y+12
cpi R24,28
brne L384
.dbline 844
; {
.dbline 845
; tmp = spi_transfer_8(msg_buffer[2]);
lds R16,_msg_buffer+2
rcall _spi_transfer_8
std y+13,R16
.dbline 846
; if(msg_buffer[1] == 1) msg_buffer[2] = tmp;
lds R24,_msg_buffer+1
cpi R24,1
brne L387
.dbline 846
mov R0,R16
sts _msg_buffer+2,R0
L387:
.dbline 847
; tmp = spi_transfer_8(msg_buffer[3]);
lds R16,_msg_buffer+3
rcall _spi_transfer_8
std y+13,R16
.dbline 848
; if(msg_buffer[1] == 2) msg_buffer[2] = tmp;
lds R24,_msg_buffer+1
cpi R24,2
brne L392
.dbline 848
mov R0,R16
sts _msg_buffer+2,R0
L392:
.dbline 849
; tmp = spi_transfer_8(msg_buffer[4]);
lds R16,_msg_buffer+4
rcall _spi_transfer_8
std y+13,R16
.dbline 850
; if(msg_buffer[1] == 3) msg_buffer[2] = tmp;
lds R24,_msg_buffer+1
cpi R24,3
brne L397
.dbline 850
mov R0,R16
sts _msg_buffer+2,R0
L397:
.dbline 851
; tmp = spi_transfer_8(msg_buffer[5]);
lds R16,_msg_buffer+5
rcall _spi_transfer_8
std y+13,R16
.dbline 852
; if(msg_buffer[1] == 4) msg_buffer[2] = tmp;
lds R24,_msg_buffer+1
cpi R24,4
brne L402
.dbline 852
mov R0,R16
sts _msg_buffer+2,R0
L402:
.dbline 854
;
; num_bytes = 4;
ldi R24,4
ldi R25,0
std y+11,R25
std y+10,R24
.dbline 855
; msg_buffer[0] = CMD_READ_OSCCAL_ISP;
ldi R24,28
sts _msg_buffer,R24
.dbline 856
; msg_buffer[1] = STATUS_CMD_OK;
clr R2
sts _msg_buffer+1,R2
.dbline 857
; msg_buffer[3] = STATUS_CMD_OK;
sts _msg_buffer+3,R2
.dbline 858
; }
L384:
L361:
L337:
L329:
L305:
L297:
L287:
L220:
L206:
L127:
L113:
L110:
L78:
L71:
L52:
L38:
L32:
.dbline 861
;
; //Transmission of the result
; if(num_bytes>0)
ldd R0,y+10
ldd R1,y+11
tst R0
brne X6
tst R1
breq L408
X6:
.dbline 862
; {
.dbline 863
; interface_putc(MESSAGE_START);
ldi R16,27
rcall _interface_putc
.dbline 864
; interface_putc(seq_num);
ldd R16,y+24
rcall _interface_putc
.dbline 865
; interface_put16(num_bytes);
ldd R16,y+10
ldd R17,y+11
rcall _interface_put16
.dbline 866
; interface_putc(TOKEN);
ldi R16,14
rcall _interface_putc
.dbline 867
; for(i=0;i<num_bytes;i++)
clr R12
clr R13
rjmp L413
L410:
.dbline 868
.dbline 869
ldi R24,<_msg_buffer
ldi R25,>_msg_buffer
movw R30,R12
add R30,R24
adc R31,R25
ldd R16,z+0
rcall _interface_putc
.dbline 870
L411:
.dbline 867
movw R24,R12
adiw R24,1
movw R12,R24
L413:
.dbline 867
ldd R0,y+10
ldd R1,y+11
cp R12,R0
cpc R13,R1
brlo L410
.dbline 871
rcall _interface_send_check
.dbline 872
L408:
.dbline -2
L30:
adiw R28,14
rcall pop_gset5
adiw R28,2
.dbline 0 ; func end
ret
.dbsym r mode 14 c
.dbsym r block_size 10 i
.dbsym l start_address 6 l
.dbsym l polling_address 2 l
.dbsym l tmp 13 c
.dbsym l cmd 12 c
.dbsym l num_bytes 10 i
.dbsym r i 12 i
.dbsym l seq_num 24 c
.dbend
.dbfunc e chip_init _chip_init fV
.even
_chip_init::
.dbline -1
.dbline 881
; {
; interface_putc(msg_buffer[i]);
; }
; interface_send_check();
; }
; }
;
;
; /**
; Hardware initialization
; Timer
; ADC
; */
; void chip_init(void) {
.dbline 883
;
; DDRB=(1<<0) | (1<<1) | (1<<2); //LED_RT, LED_GN
ldi R24,7
out 0x17,R24
.dbline 890
;
; //ADC
; //ADMUX=0x60; //Avcc=Aref, Left Adjusted (8Bit-Aufl鰏ung aus ADCH)
; //ADCSRA = 0xC6; //ADC Enable, Init, 125kHz (bei 8MHz Clock)
;
; //Timer 1 (Systemint 1ms)
; TCCR1B=0x09; //CTC-Mode /1
ldi R24,9
out 0x2e,R24
.dbline 891
; OCR1A=3686; /*3.686MHz / 3686 = 1kHz*/
ldi R24,3686
ldi R25,14
out 0x2b,R25
out 0x2a,R24
.dbline 893
; #ifndef __iom88v_h
; TIMSK |=(1<<4); /*meag8 enable OC-INT*/
in R24,0x39
ori R24,16
out 0x39,R24
.dbline -2
L414:
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile E:\ICCAVR\project\avrisp\main.c
_address::
.blkb 4
.dbsym e address _address l
_prgmode::
.blkb 1
.dbsym e prgmode _prgmode c
_param_controller_init::
.blkb 1
.dbsym e param_controller_init _param_controller_init c
_reset_polarity::
.blkb 1
.dbsym e reset_polarity _reset_polarity c
_clock_speed::
.blkb 1
.dbsym e clock_speed _clock_speed c
_msg_buffer::
.blkb 300
.dbsym e msg_buffer _msg_buffer A[300:300]c
.area data(ram, con, rel)
.dbfile E:\ICCAVR\project\avrisp\main.c
L36:
.blkb 9
.area idata
.byte 'A,'V,'R,'I,'S,'P,95,50,0
.area data(ram, con, rel)
.dbfile E:\ICCAVR\project\avrisp\main.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -