📄 spi.lis
字号:
00F4 .dbline 73
00F4 ; SPCR|=0x02;
00F4 8CB5 in R24,0x2c
00F6 8260 ori R24,2
00F8 8CBD out 0x2c,R24
00FA .dbline 74
00FA ; break;
00FA 07C0 rjmp L15
00FC L20:
00FC .dbline 76
00FC ; case 6:
00FC ; SPCR|=0x03;
00FC 8CB5 in R24,0x2c
00FE 8360 ori R24,3
0100 8CBD out 0x2c,R24
0102 .dbline 77
0102 ; break;
0102 03C0 rjmp L15
0104 L14:
0104 .dbline 79
0104 8CB5 in R24,0x2c
0106 8360 ori R24,3
0108 8CBD out 0x2c,R24
010A .dbline 80
010A L15:
010A .dbline -2
010A L9:
010A 00D0 rcall pop_gset1
010C .dbline 0 ; func end
010C 0895 ret
010E .dbsym r s 16 c
010E .dbend
010E .dbfunc e spi_clock_pulse _spi_clock_pulse fV
.even
010E _spi_clock_pulse::
010E .dbline -1
010E .dbline 85
010E ; default: //Wenn Wert ung黮tig ganz langsam
010E ; SPCR|=0x03;
010E ; break;
010E ; }
010E ; }
010E ;
010E ; void spi_clock_pulse(void)
010E ; {
010E .dbline 87
010E ;
010E ; SPCR&=BIT6_NEG; //SPI kurz aus
010E 8FEB ldi R24,-65
0110 9FEF ldi R25,-1
0112 2CB4 in R2,0x2c
0114 2822 and R2,R24
0116 2CBC out 0x2c,R2
0118 .dbline 88
0118 ; PORTB|=BIT5_POS; //Taktimpuls
0118 2D9A sbi 0x5,5
011A .dbline 89
011A ; wait_ms(2);
011A 02E0 ldi R16,2
011C 10E0 ldi R17,0
011E 00D0 rcall _wait_ms
0120 .dbline 90
0120 ; PORTB&=BIT5_NEG;
0120 8FED ldi R24,-33
0122 9FEF ldi R25,-1
0124 25B0 in R2,0x5
0126 2822 and R2,R24
0128 25B8 out 0x5,R2
012A .dbline 91
012A ; SPCR|=BIT6_POS; //SPI wieder an
012A 8CB5 in R24,0x2c
012C 8064 ori R24,64
012E 8CBD out 0x2c,R24
0130 .dbline -2
0130 L21:
0130 .dbline 0 ; func end
0130 0895 ret
0132 .dbend
0132 .dbfunc e spi_transfer_8 _spi_transfer_8 fc
0132 ; d -> R16
.even
0132 _spi_transfer_8::
0132 .dbline -1
0132 .dbline 103
0132 ; }
0132 ;
0132 ; /**
0132 ; Does a 8 bit transfer over the SPI-Interface
0132 ; and gives back the byte received
0132 ;
0132 ; @param d the byte to be transmitted
0132 ;
0132 ; @return the byte received
0132 ; */
0132 ; unsigned char spi_transfer_8(unsigned char d)
0132 ; {
0132 .dbline 104
0132 ; SPDR=d;
0132 0EBD out 0x2e,R16
0134 L23:
0134 .dbline 105
0134 L24:
0134 .dbline 105
0134 ; while(!(SPSR&0x80));
0134 2DB4 in R2,0x2d
0136 27FE sbrs R2,7
0138 FDCF rjmp L23
013A .dbline 107
013A ;
013A ; return SPDR;
013A 0EB5 in R16,0x2e
013C .dbline -2
013C L22:
013C .dbline 0 ; func end
013C 0895 ret
013E .dbsym r d 16 c
013E .dbend
013E .dbfunc e spi_transfer_16 _spi_transfer_16 fc
013E ; d -> R20,R21
.even
013E _spi_transfer_16::
013E 00D0 rcall push_gset1
0140 A801 movw R20,R16
0142 .dbline -1
0142 .dbline 119
0142 ; }
0142 ;
0142 ; /**
0142 ; Does a 16 bit transfer over the SPI-Interface
0142 ; and gives back the last byte received
0142 ;
0142 ; @param d the int to be transmitted
0142 ;
0142 ; @return the last byte received
0142 ; */
0142 ; unsigned char spi_transfer_16(unsigned int d)
0142 ; {
0142 .dbline 120
0142 ; spi_transfer_8((d>>8)&0xFF);
0142 8A01 movw R16,R20
0144 012F mov R16,R17
0146 1127 clr R17
0148 1070 andi R17,0
014A F3DF rcall _spi_transfer_8
014C .dbline 121
014C ; return spi_transfer_8(d&0xFF);
014C 042F mov R16,R20
014E 1070 andi R17,0
0150 F0DF rcall _spi_transfer_8
0152 .dbline -2
0152 L26:
0152 00D0 rcall pop_gset1
0154 .dbline 0 ; func end
0154 0895 ret
0156 .dbsym r d 20 i
0156 .dbend
0156 .dbfunc e spi_transfer_32 _spi_transfer_32 fc
0156 ; d -> y+4
.even
0156 _spi_transfer_32::
0156 00D0 rcall push_arg4
0158 00D0 rcall push_gset2
015A .dbline -1
015A .dbline 133
015A ; }
015A ;
015A ; /**
015A ; Does a 32 bit transfer over the SPI-Interface
015A ; and gives back the last byte received
015A ;
015A ; @param d the long to be transmitted
015A ;
015A ; @return the last byte received
015A ; */
015A ; unsigned char spi_transfer_32(unsigned long d)
015A ; {
015A .dbline 134
015A ; spi_transfer_8((d>>24)&0xFF);
015A 88E1 ldi R24,24
015C 90E0 ldi R25,0
015E FE01 movw R30,R28
0160 2480 ldd R2,z+4
0162 3580 ldd R3,z+5
0164 4680 ldd R4,z+6
0166 5780 ldd R5,z+7
0168 8A93 st -y,R24
016A 8101 movw R16,R2
016C 9201 movw R18,R4
016E 00D0 rcall lsr32
0170 1801 movw R2,R16
0172 2901 movw R4,R18
0174 4FEF ldi R20,255
0176 50E0 ldi R21,0
0178 60E0 ldi R22,0
017A 70E0 ldi R23,0
017C 2422 and R2,R20
017E 3522 and R3,R21
0180 4622 and R4,R22
0182 5722 and R5,R23
0184 022D mov R16,R2
0186 D5DF rcall _spi_transfer_8
0188 .dbline 135
0188 ; spi_transfer_8((d>>16)&0xFF);
0188 4FEF ldi R20,255
018A 50E0 ldi R21,0
018C 60E0 ldi R22,0
018E 70E0 ldi R23,0
0190 FE01 movw R30,R28
0192 2480 ldd R2,z+4
0194 3580 ldd R3,z+5
0196 4680 ldd R4,z+6
0198 5780 ldd R5,z+7
019A 1201 movw R2,R4
019C 4424 clr R4
019E 5524 clr R5
01A0 2422 and R2,R20
01A2 3522 and R3,R21
01A4 4622 and R4,R22
01A6 5722 and R5,R23
01A8 022D mov R16,R2
01AA C3DF rcall _spi_transfer_8
01AC .dbline 136
01AC ; spi_transfer_8((d>>8)&0xFF);
01AC 88E0 ldi R24,8
01AE 90E0 ldi R25,0
01B0 FE01 movw R30,R28
01B2 2480 ldd R2,z+4
01B4 3580 ldd R3,z+5
01B6 4680 ldd R4,z+6
01B8 5780 ldd R5,z+7
01BA 8A93 st -y,R24
01BC 8101 movw R16,R2
01BE 9201 movw R18,R4
01C0 00D0 rcall lsr32
01C2 1801 movw R2,R16
01C4 2901 movw R4,R18
01C6 4FEF ldi R20,255
01C8 50E0 ldi R21,0
01CA 60E0 ldi R22,0
01CC 70E0 ldi R23,0
01CE 2422 and R2,R20
01D0 3522 and R3,R21
01D2 4622 and R4,R22
01D4 5722 and R5,R23
01D6 022D mov R16,R2
01D8 ACDF rcall _spi_transfer_8
01DA .dbline 137
01DA ; return spi_transfer_8(d&0xFF);
01DA 4FEF ldi R20,255
01DC 50E0 ldi R21,0
01DE 60E0 ldi R22,0
01E0 70E0 ldi R23,0
01E2 FE01 movw R30,R28
01E4 2480 ldd R2,z+4
01E6 3580 ldd R3,z+5
01E8 4680 ldd R4,z+6
01EA 5780 ldd R5,z+7
01EC 2422 and R2,R20
01EE 3522 and R3,R21
01F0 4622 and R4,R22
01F2 5722 and R5,R23
01F4 022D mov R16,R2
01F6 9DDF rcall _spi_transfer_8
01F8 .dbline -2
01F8 L27:
01F8 00D0 rcall pop_gset2
01FA 2496 adiw R28,4
01FC .dbline 0 ; func end
01FC 0895 ret
01FE .dbsym l d 4 l
01FE .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -