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