⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spi.lis

📁 文档里面的代码是可以正常使用的
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 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 + -