📄 test_isp.lis
字号:
.module test_isp.c
.area text(rom, con, rel)
0000 .dbfile H:\m128_test\test_isp.c
0000 .dbfunc e spi_tranByte _spi_tranByte fc
0000 ; p -> R20,R21
0000 ; addr -> R18,R19
0000 ; cData -> R16
.even
0000 _spi_tranByte::
0000 0E940000 xcall push_gset1
0004 .dbline -1
0004 .dbline 26
0004 ; //ICC-AVR application builder : 2005-3-21 10:06:01
0004 ; // Target : M128
0004 ; // Crystal: 16.000Mhz
0004 ;
0004 ; #include <iom128v.h>
0004 ; #include <macros.h>
0004 ; #include <stdio.h>
0004 ; #define CH1 1
0004 ; #define CH2 2
0004 ; #define CH3 4
0004 ; #define READY 0XAA
0004 ; #define STOP 0X00
0004 ; #define TEST 0x1A
0004 ;
0004 ; extern long len;
0004 ; //SPI initialize
0004 ; // clock rate: 2000000hz
0004 ;
0004 ;
0004 ;
0004 ;
0004 ;
0004 ;
0004 ;
0004 ; unsigned char spi_tranByte (unsigned char cData, int addr)
0004 ; {
0004 .dbline 28
0004 ;
0004 ; unsigned char *p = (unsigned char *) addr;
0004 A901 movw R20,R18
0006 .dbline 30
0006 ;
0006 ; *p = 0x00;
0006 2224 clr R2
0008 FA01 movw R30,R20
000A 2082 std z+0,R2
000C .dbline 31
000C ; SPDR = cData;
000C 0FB9 out 0xf,R16
000E L2:
000E .dbline 32
000E L3:
000E .dbline 32
000E ; while (!(SPSR&0x80));
000E 779B sbis 0xe,7
0010 FECF rjmp L2
0012 .dbline 33
0012 ; return SPDR;
0012 0FB1 in R16,0xf
0014 .dbline -2
0014 L1:
0014 0E940000 xcall pop_gset1
0018 .dbline 0 ; func end
0018 0895 ret
001A .dbsym r p 20 pc
001A .dbsym r addr 18 I
001A .dbsym r cData 16 c
001A .dbend
001A .dbfunc e spi_cnt _spi_cnt fL
001A ; temp -> y+0
001A ; buf -> R10
001A ; cha -> R12
.even
001A _spi_cnt::
001A 0E940000 xcall push_gset4
001E C02E mov R12,R16
0020 2497 sbiw R28,4
0022 .dbline -1
0022 .dbline 40
0022 ;
0022 ; }
0022 ;
0022 ;
0022 ;
0022 ; long spi_cnt(unsigned char cha)
0022 ; {
0022 .dbline 41
0022 ; long temp=0;
0022 40E0 ldi R20,0
0024 50E0 ldi R21,0
0026 60E0 ldi R22,0
0028 70E0 ldi R23,0
002A FE01 movw R30,R28
002C 4083 std z+0,R20
002E 5183 std z+1,R21
0030 6283 std z+2,R22
0032 7383 std z+3,R23
0034 .dbline 42
0034 ; unsigned char buf=0;
0034 AA24 clr R10
0036 .dbline 43
0036 ; temp=0;
0036 40E0 ldi R20,0
0038 50E0 ldi R21,0
003A 60E0 ldi R22,0
003C 70E0 ldi R23,0
003E 4083 std z+0,R20
0040 5183 std z+1,R21
0042 6283 std z+2,R22
0044 7383 std z+3,R23
0046 .dbline 44
0046 ; switch (cha)
0046 DD24 clr R13
0048 C601 movw R24,R12
004A 8130 cpi R24,1
004C E0E0 ldi R30,0
004E 9E07 cpc R25,R30
0050 59F0 breq L9
0052 8230 cpi R24,2
0054 E0E0 ldi R30,0
0056 9E07 cpc R25,R30
0058 09F4 brne X1
005A 8CC0 xjmp L13
005C X1:
005C 8430 cpi R24,4
005E E0E0 ldi R30,0
0060 9E07 cpc R25,R30
0062 09F4 brne X2
0064 2EC1 xjmp L17
0066 X2:
0066 D3C1 xjmp L6
0068 X0:
0068 .dbline 45
0068 ; {
0068 L9:
0068 L10:
0068 .dbline 47
0068 ; case CH1: do
0068 ; {
0068 .dbline 48
0068 ; buf=spi_tranByte (CH1,0X9000);
0068 20E0 ldi R18,36864
006A 30E9 ldi R19,144
006C 01E0 ldi R16,1
006E C8DF xcall _spi_tranByte
0070 A02E mov R10,R16
0072 .dbline 49
0072 ; asm ("nop");
0072 0000 nop
0074 .dbline 50
0074 ; asm ("nop");
0074 0000 nop
0076 .dbline 51
0076 ; asm ("nop");
0076 0000 nop
0078 .dbline 52
0078 ; }
0078 L11:
0078 .dbline 53
0078 ; while(buf!=READY);
0078 8A2D mov R24,R10
007A 8A3A cpi R24,170
007C A9F7 brne L10
007E .dbline 54
007E ; delay_nus(100);
007E 04E6 ldi R16,100
0080 10E0 ldi R17,0
0082 0E940000 xcall _delay_nus
0086 .dbline 55
0086 ; buf=spi_tranByte (CH1,0x9000);
0086 20E0 ldi R18,36864
0088 30E9 ldi R19,144
008A 01E0 ldi R16,1
008C B9DF xcall _spi_tranByte
008E A02E mov R10,R16
0090 .dbline 56
0090 ; temp=buf;
0090 2A2C mov R2,R10
0092 3324 clr R3
0094 4424 clr R4
0096 5524 clr R5
0098 FE01 movw R30,R28
009A 2082 std z+0,R2
009C 3182 std z+1,R3
009E 4282 std z+2,R4
00A0 5382 std z+3,R5
00A2 .dbline 57
00A2 ; temp=temp*256;
00A2 40E0 ldi R20,0
00A4 51E0 ldi R21,1
00A6 60E0 ldi R22,0
00A8 70E0 ldi R23,0
00AA 5A92 st -y,R5
00AC 4A92 st -y,R4
00AE 3A92 st -y,R3
00B0 2A92 st -y,R2
00B2 8A01 movw R16,R20
00B4 9B01 movw R18,R22
00B6 0E940000 xcall empy32s
00BA FE01 movw R30,R28
00BC 0083 std z+0,R16
00BE 1183 std z+1,R17
00C0 2283 std z+2,R18
00C2 3383 std z+3,R19
00C4 .dbline 59
00C4 ;
00C4 ; buf=spi_tranByte (CH1,0x9000);
00C4 20E0 ldi R18,36864
00C6 30E9 ldi R19,144
00C8 01E0 ldi R16,1
00CA 9ADF xcall _spi_tranByte
00CC A02E mov R10,R16
00CE .dbline 60
00CE ; temp=temp+buf;
00CE 2A2C mov R2,R10
00D0 3324 clr R3
00D2 4424 clr R4
00D4 5524 clr R5
00D6 FE01 movw R30,R28
00D8 6080 ldd R6,z+0
00DA 7180 ldd R7,z+1
00DC 8280 ldd R8,z+2
00DE 9380 ldd R9,z+3
00E0 620C add R6,R2
00E2 731C adc R7,R3
00E4 841C adc R8,R4
00E6 951C adc R9,R5
00E8 6082 std z+0,R6
00EA 7182 std z+1,R7
00EC 8282 std z+2,R8
00EE 9382 std z+3,R9
00F0 .dbline 61
00F0 ; temp=temp*256;
00F0 2080 ldd R2,z+0
00F2 3180 ldd R3,z+1
00F4 4280 ldd R4,z+2
00F6 5380 ldd R5,z+3
00F8 40E0 ldi R20,0
00FA 51E0 ldi R21,1
00FC 60E0 ldi R22,0
00FE 70E0 ldi R23,0
0100 5A92 st -y,R5
0102 4A92 st -y,R4
0104 3A92 st -y,R3
0106 2A92 st -y,R2
0108 8A01 movw R16,R20
010A 9B01 movw R18,R22
010C 0E940000 xcall empy32s
0110 FE01 movw R30,R28
0112 0083 std z+0,R16
0114 1183 std z+1,R17
0116 2283 std z+2,R18
0118 3383 std z+3,R19
011A .dbline 62
011A ; buf=spi_tranByte (CH1,0x9000);
011A 20E0 ldi R18,36864
011C 30E9 ldi R19,144
011E 01E0 ldi R16,1
0120 6FDF xcall _spi_tranByte
0122 A02E mov R10,R16
0124 .dbline 63
0124 ; temp=temp+buf;
0124 2A2C mov R2,R10
0126 3324 clr R3
0128 4424 clr R4
012A 5524 clr R5
012C FE01 movw R30,R28
012E 6080 ldd R6,z+0
0130 7180 ldd R7,z+1
0132 8280 ldd R8,z+2
0134 9380 ldd R9,z+3
0136 620C add R6,R2
0138 731C adc R7,R3
013A 841C adc R8,R4
013C 951C adc R9,R5
013E 6082 std z+0,R6
0140 7182 std z+1,R7
0142 8282 std z+2,R8
0144 9382 std z+3,R9
0146 .dbline 64
0146 ; temp*256;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -