📄 spi.lis
字号:
00BE 00D0 rcall pop_gset1
00C0 .dbline 0 ; func end
00C0 0895 ret
00C2 .dbsym r s 16 c
00C2 .dbend
00C2 .dbfunc e spi_clock_pulse _spi_clock_pulse fV
.even
00C2 _spi_clock_pulse::
00C2 .dbline -1
00C2 .dbline 75
00C2 ; default: //Wenn Wert ung黮tig ganz langsam
00C2 ; SPCR|=0x03;
00C2 ; break;
00C2 ; }
00C2 ; }
00C2 ;
00C2 ; void spi_clock_pulse(void)
00C2 ; {
00C2 .dbline 77
00C2 ;
00C2 ; SPCR&=BIT6_NEG; //SPI kurz aus
00C2 8FEB ldi R24,-65
00C4 9FEF ldi R25,-1
00C6 2DB0 in R2,0xd
00C8 2822 and R2,R24
00CA 2DB8 out 0xd,R2
00CC .dbline 78
00CC ; PORTB|=BIT5_POS; //Taktimpuls
00CC C59A sbi 0x18,5
00CE .dbline 79
00CE ; wait_ms(2);
00CE 02E0 ldi R16,2
00D0 10E0 ldi R17,0
00D2 00D0 rcall _wait_ms
00D4 .dbline 80
00D4 ; PORTB&=BIT5_NEG;
00D4 8FED ldi R24,-33
00D6 9FEF ldi R25,-1
00D8 28B2 in R2,0x18
00DA 2822 and R2,R24
00DC 28BA out 0x18,R2
00DE .dbline 81
00DE ; SPCR|=BIT6_POS; //SPI wieder an
00DE 6E9A sbi 0xd,6
00E0 .dbline -2
00E0 L16:
00E0 .dbline 0 ; func end
00E0 0895 ret
00E2 .dbend
00E2 .dbfunc e spi_transfer_8 _spi_transfer_8 fc
00E2 ; d -> R16
.even
00E2 _spi_transfer_8::
00E2 .dbline -1
00E2 .dbline 93
00E2 ; }
00E2 ;
00E2 ; /**
00E2 ; Does a 8 bit transfer over the SPI-Interface
00E2 ; and gives back the byte received
00E2 ;
00E2 ; @param d the byte to be transmitted
00E2 ;
00E2 ; @return the byte received
00E2 ; */
00E2 ; unsigned char spi_transfer_8(unsigned char d)
00E2 ; {
00E2 .dbline 94
00E2 ; SPDR=d;
00E2 0FB9 out 0xf,R16
00E4 L18:
00E4 .dbline 95
00E4 L19:
00E4 .dbline 95
00E4 ; while(!(SPSR&0x80));
00E4 779B sbis 0xe,7
00E6 FECF rjmp L18
00E8 .dbline 97
00E8 ;
00E8 ; return SPDR;
00E8 0FB1 in R16,0xf
00EA .dbline -2
00EA L17:
00EA .dbline 0 ; func end
00EA 0895 ret
00EC .dbsym r d 16 c
00EC .dbend
00EC .dbfunc e spi_transfer_16 _spi_transfer_16 fc
00EC ; d -> R20,R21
.even
00EC _spi_transfer_16::
00EC 00D0 rcall push_gset1
00EE A801 movw R20,R16
00F0 .dbline -1
00F0 .dbline 109
00F0 ; }
00F0 ;
00F0 ; /**
00F0 ; Does a 16 bit transfer over the SPI-Interface
00F0 ; and gives back the last byte received
00F0 ;
00F0 ; @param d the int to be transmitted
00F0 ;
00F0 ; @return the last byte received
00F0 ; */
00F0 ; unsigned char spi_transfer_16(unsigned int d)
00F0 ; {
00F0 .dbline 110
00F0 ; spi_transfer_8((d>>8)&0xFF);
00F0 8A01 movw R16,R20
00F2 012F mov R16,R17
00F4 1127 clr R17
00F6 1070 andi R17,0
00F8 F4DF rcall _spi_transfer_8
00FA .dbline 111
00FA ; return spi_transfer_8(d&0xFF);
00FA 042F mov R16,R20
00FC 1070 andi R17,0
00FE F1DF rcall _spi_transfer_8
0100 .dbline -2
0100 L21:
0100 00D0 rcall pop_gset1
0102 .dbline 0 ; func end
0102 0895 ret
0104 .dbsym r d 20 i
0104 .dbend
0104 .dbfunc e spi_transfer_32 _spi_transfer_32 fc
0104 ; d -> y+4
.even
0104 _spi_transfer_32::
0104 00D0 rcall push_arg4
0106 00D0 rcall push_gset2
0108 .dbline -1
0108 .dbline 123
0108 ; }
0108 ;
0108 ; /**
0108 ; Does a 32 bit transfer over the SPI-Interface
0108 ; and gives back the last byte received
0108 ;
0108 ; @param d the long to be transmitted
0108 ;
0108 ; @return the last byte received
0108 ; */
0108 ; unsigned char spi_transfer_32(unsigned long d)
0108 ; {
0108 .dbline 124
0108 ; spi_transfer_8((d>>24)&0xFF);
0108 88E1 ldi R24,24
010A 90E0 ldi R25,0
010C FE01 movw R30,R28
010E 2480 ldd R2,z+4
0110 3580 ldd R3,z+5
0112 4680 ldd R4,z+6
0114 5780 ldd R5,z+7
0116 8A93 st -y,R24
0118 8101 movw R16,R2
011A 9201 movw R18,R4
011C 00D0 rcall lsr32
011E 1801 movw R2,R16
0120 2901 movw R4,R18
0122 4FEF ldi R20,255
0124 50E0 ldi R21,0
0126 60E0 ldi R22,0
0128 70E0 ldi R23,0
012A 2422 and R2,R20
012C 3522 and R3,R21
012E 4622 and R4,R22
0130 5722 and R5,R23
0132 022D mov R16,R2
0134 D6DF rcall _spi_transfer_8
0136 .dbline 125
0136 ; spi_transfer_8((d>>16)&0xFF);
0136 4FEF ldi R20,255
0138 50E0 ldi R21,0
013A 60E0 ldi R22,0
013C 70E0 ldi R23,0
013E FE01 movw R30,R28
0140 2480 ldd R2,z+4
0142 3580 ldd R3,z+5
0144 4680 ldd R4,z+6
0146 5780 ldd R5,z+7
0148 1201 movw R2,R4
014A 4424 clr R4
014C 5524 clr R5
014E 2422 and R2,R20
0150 3522 and R3,R21
0152 4622 and R4,R22
0154 5722 and R5,R23
0156 022D mov R16,R2
0158 C4DF rcall _spi_transfer_8
015A .dbline 126
015A ; spi_transfer_8((d>>8)&0xFF);
015A 88E0 ldi R24,8
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 ADDF rcall _spi_transfer_8
0188 .dbline 127
0188 ; return spi_transfer_8(d&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 2422 and R2,R20
019C 3522 and R3,R21
019E 4622 and R4,R22
01A0 5722 and R5,R23
01A2 022D mov R16,R2
01A4 9EDF rcall _spi_transfer_8
01A6 .dbline -2
01A6 L22:
01A6 00D0 rcall pop_gset2
01A8 2496 adiw R28,4
01AA .dbline 0 ; func end
01AA 0895 ret
01AC .dbsym l d 4 l
01AC .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -