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

📄 spi.lst

📁 spi的i/o茉莉程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
    0154 DF3A      RCALL	_Spi_MT
(0080) Spi_MT(address2);
    0155 2D0A      MOV	R16,R10
    0156 DF38      RCALL	_Spi_MT
(0081) Spi_MT(address1);
    0157 2F06      MOV	R16,R22
    0158 DF36      RCALL	_Spi_MT
(0082) Spi_MT(address0);
    0159 2F04      MOV	R16,R20
    015A DF34      RCALL	_Spi_MT
(0083) CS_1;
    015B 9AC2      SBI	0x18,2
(0084) Prints("Erase sector ",0);
    015C 2722      CLR	R18
    015D 2733      CLR	R19
    015E EC08      LDI	R16,0xC8
    015F E010      LDI	R17,0
    0160 DF49      RCALL	_Prints
(0085) Send_abyte(table[address2/10]);
    0161 E02A      LDI	R18,0xA
    0162 E030      LDI	R19,0
    0163 2D0A      MOV	R16,R10
    0164 2711      CLR	R17
    0165 D1C2      RCALL	div16s
    0166 01F8      MOVW	R30,R16
    0167 ED86      LDI	R24,0xD6
    0168 E090      LDI	R25,0
    0169 0FE8      ADD	R30,R24
    016A 1FF9      ADC	R31,R25
    016B 8100      LDD	R16,Z+0
    016C 2711      CLR	R17
    016D DF34      RCALL	_Send_abyte
(0086) Send_abyte(table[address2%10]);
    016E E02A      LDI	R18,0xA
    016F E030      LDI	R19,0
    0170 2D0A      MOV	R16,R10
    0171 2711      CLR	R17
    0172 D1B1      RCALL	mod16s
    0173 01F8      MOVW	R30,R16
    0174 ED86      LDI	R24,0xD6
    0175 E090      LDI	R25,0
    0176 0FE8      ADD	R30,R24
    0177 1FF9      ADC	R31,R25
    0178 8100      LDD	R16,Z+0
    0179 2711      CLR	R17
    017A DF27      RCALL	_Send_abyte
(0087) Prints(" completed...",1);
    017B E021      LDI	R18,1
    017C E030      LDI	R19,0
    017D EB0A      LDI	R16,0xBA
    017E E010      LDI	R17,0
    017F DF2A      RCALL	_Prints
    0180 D1DE      RCALL	pop_gset3
    0181 9624      ADIW	R28,4
    0182 9508      RET
(0088) }
(0089) 
(0090) /***************************************************************************************
(0091) 写入片擦除使能命令 
(0092) *****************************************************************************************/
(0093) void Bulk_Erase(void)
(0094) {
(0095) WriteEN();
_Bulk_Erase:
    0183 DFA3      RCALL	_WriteEN
(0096) while((Read_RDSR())&0x01);
    0184 D073      RCALL	_Read_RDSR
    0185 FD00      SBRC	R16,0
    0186 CFFD      RJMP	0x0184
(0097) CS_0;
    0187 98C2      CBI	0x18,2
(0098) Spi_MT(0xc7);
    0188 EC07      LDI	R16,0xC7
    0189 DF05      RCALL	_Spi_MT
(0099) CS_1;
    018A 9AC2      SBI	0x18,2
(0100) Prints("Bulk Erawe completed...",1);
    018B E021      LDI	R18,1
    018C E030      LDI	R19,0
    018D EA02      LDI	R16,0xA2
    018E E010      LDI	R17,0
    018F DF1A      RCALL	_Prints
    0190 9508      RET
_DelayX100ms:
  i                    --> Y+0
  x                    --> Y+12
    0191 D18D      RCALL	push_arg4
    0192 D1D8      RCALL	push_gset2
    0193 9728      SBIW	R28,0x8
(0101) }
(0102) 
(0103) /***************************************************************************************
(0104)  延时X/100ms
(0105) *****************************************************************************************/
(0106) void DelayX100ms(uint32 x)
(0107) {
    0194 C034      RJMP	0x01C9
(0108)  uint32 i;
(0109)  while(x--)
(0110)   {
(0111)    i=1295;
    0195 E04F      LDI	R20,0xF
    0196 E055      LDI	R21,5
    0197 E060      LDI	R22,0
    0198 E070      LDI	R23,0
    0199 01FE      MOVW	R30,R28
    019A 8340      STD	Z+0,R20
    019B 8351      STD	Z+1,R21
    019C 8362      STD	Z+2,R22
    019D 8373      STD	Z+3,R23
(0112)    while(i--);
    019E 01FE      MOVW	R30,R28
    019F 8020      LDD	R2,Z+0
    01A0 8031      LDD	R3,Z+1
    01A1 8042      LDD	R4,Z+2
    01A2 8053      LDD	R5,Z+3
    01A3 01FE      MOVW	R30,R28
    01A4 8224      STD	Z+4,R2
    01A5 8235      STD	Z+5,R3
    01A6 8246      STD	Z+6,R4
    01A7 8257      STD	Z+7,R5
    01A8 E041      LDI	R20,1
    01A9 E050      LDI	R21,0
    01AA E060      LDI	R22,0
    01AB E070      LDI	R23,0
    01AC 01FE      MOVW	R30,R28
    01AD 8024      LDD	R2,Z+4
    01AE 8035      LDD	R3,Z+5
    01AF 8046      LDD	R4,Z+6
    01B0 8057      LDD	R5,Z+7
    01B1 1A24      SUB	R2,R20
    01B2 0A35      SBC	R3,R21
    01B3 0A46      SBC	R4,R22
    01B4 0A57      SBC	R5,R23
    01B5 01FE      MOVW	R30,R28
    01B6 8220      STD	Z+0,R2
    01B7 8231      STD	Z+1,R3
    01B8 8242      STD	Z+2,R4
    01B9 8253      STD	Z+3,R5
    01BA E040      LDI	R20,0
    01BB E050      LDI	R21,0
    01BC E060      LDI	R22,0
    01BD E070      LDI	R23,0
    01BE 01FE      MOVW	R30,R28
    01BF 8024      LDD	R2,Z+4
    01C0 8035      LDD	R3,Z+5
    01C1 8046      LDD	R4,Z+6
    01C2 8057      LDD	R5,Z+7
    01C3 1624      CP	R2,R20
    01C4 0635      CPC	R3,R21
    01C5 0646      CPC	R4,R22
    01C6 0657      CPC	R5,R23
    01C7 F009      BEQ	0x01C9
    01C8 CFD5      RJMP	0x019E
    01C9 01FE      MOVW	R30,R28
    01CA 8424      LDD	R2,Z+12
    01CB 8435      LDD	R3,Z+13
    01CC 8446      LDD	R4,Z+14
    01CD 8457      LDD	R5,Z+15
    01CE 01FE      MOVW	R30,R28
    01CF 8224      STD	Z+4,R2
    01D0 8235      STD	Z+5,R3
    01D1 8246      STD	Z+6,R4
    01D2 8257      STD	Z+7,R5
    01D3 E041      LDI	R20,1
    01D4 E050      LDI	R21,0
    01D5 E060      LDI	R22,0
    01D6 E070      LDI	R23,0
    01D7 01FE      MOVW	R30,R28
    01D8 8024      LDD	R2,Z+4
    01D9 8035      LDD	R3,Z+5
    01DA 8046      LDD	R4,Z+6
    01DB 8057      LDD	R5,Z+7
    01DC 1A24      SUB	R2,R20
    01DD 0A35      SBC	R3,R21
    01DE 0A46      SBC	R4,R22
    01DF 0A57      SBC	R5,R23
    01E0 01FE      MOVW	R30,R28
    01E1 8624      STD	Z+12,R2
    01E2 8635      STD	Z+13,R3
    01E3 8646      STD	Z+14,R4
    01E4 8657      STD	Z+15,R5
    01E5 E040      LDI	R20,0
    01E6 E050      LDI	R21,0
    01E7 E060      LDI	R22,0
    01E8 E070      LDI	R23,0
    01E9 01FE      MOVW	R30,R28
    01EA 8024      LDD	R2,Z+4
    01EB 8035      LDD	R3,Z+5
    01EC 8046      LDD	R4,Z+6
    01ED 8057      LDD	R5,Z+7
    01EE 1624      CP	R2,R20
    01EF 0635      CPC	R3,R21
    01F0 0646      CPC	R4,R22
    01F1 0657      CPC	R5,R23
    01F2 F009      BEQ	0x01F4
    01F3 CFA1      RJMP	0x0195
    01F4 9628      ADIW	R28,0x8
    01F5 D167      RCALL	pop_gset2
    01F6 9624      ADIW	R28,4
    01F7 9508      RET
_Read_RDSR:
  read_data            --> R20
    01F8 D174      RCALL	push_gset1
(0113)   }
(0114) }
(0115) 
(0116) /***************************************************************************************
(0117) 读取状态寄存器。
(0118) *****************************************************************************************/
(0119) uint8 Read_RDSR(void)
(0120) {
(0121) uint8 read_data;
(0122) //Prints("Run Read_RDSR()...",1);
(0123) CS_0;
    01F9 98C2      CBI	0x18,2
(0124) Spi_MT(0x05);
    01FA E005      LDI	R16,5
    01FB DE93      RCALL	_Spi_MT
(0125) //Prints("Run Spi_MT()...",1);
(0126) read_data=Spi_MR();
    01FC DE96      RCALL	_Spi_MR
    01FD 2F40      MOV	R20,R16
(0127) //Prints("Run Spi_MR()...",1);
(0128) CS_1;
    01FE 9AC2      SBI	0x18,2
(0129) return(read_data);
    01FF D170      RCALL	pop_gset1
    0200 9508      RET
_Write_string:
  address2             --> R20
  address0             --> R22
  address1             --> R10
  i                    --> R12
  n                    --> R14
  address              --> Y+12
  string               --> Y+10
    0201 D11D      RCALL	push_arg4
    0202 D162      RCALL	push_gset5
    0203 88E8      LDD	R14,Y+16
    0204 88F9      LDD	R15,Y+17
(0130) }
(0131) /**************************************************************
(0132) 写入一串字节。
(0133) ****************************************************************/
(0134) void Write_string(uint8 *string,uint32 address,uint16 n)
(0135) {
(0136) uint16 i;
(0137) uint8 address2,address1,address0;
(0138) address2=(uint8)(address>>16);
    0205 01FE      MOVW	R30,R28
    0206 8424      LDD	R2,Z+12
    0207 8435      LDD	R3,Z+13
    0208 8446      LDD	R4,Z+14
    0209 8457      LDD	R5,Z+15
    020A 0112      MOVW	R2,R4
    020B 2444      CLR	R4
    020C 2455      CLR	R5
    020D 2D42      MOV	R20,R2
(0139) address1=(uint8)(address>>8);
    020E E088      LDI	R24,0x8
    020F E090      LDI	R25,0
    0210 01FE      MOVW	R30,R28
    0211 8424      LDD	R2,Z+12
    0212 8435      LDD	R3,Z+13
    0213 8446      LDD	R4,Z+14
    0214 8457      LDD	R5,Z+15
    0215 938A      ST	R24,-Y
    0216 0181      MOVW	R16,R2
    0217 0192      MOVW	R18,R4
    0218 D16B      RCALL	lsr32
    0219 2EA0      MOV	R10,R16
(0140) address0=(uint8)address;
    021A 01FE      MOVW	R30,R28
    021B 8424      LDD	R2,Z+12
    021C 8435      LDD	R3,Z+13
    021D 8446      LDD	R4,Z+14
    021E 8457      LDD	R5,Z+15
    021F 2D62      MOV	R22,R2
(0141) while((Read_RDSR())&0x01);
    0220 DFD7      RCALL	_Read_RDSR
    0221 FD00      SBRC	R16,0
    0222 CFFD      RJMP	0x0220
(0142) WriteEN();
    0223 DF03      RCALL	_WriteEN
(0143) CS_0;
    0224 98C2      CBI	0x18,2
(0144) Spi_MT(0x02);
    0225 E002      LDI	R16,2
    0226 DE68      RCALL	_Spi_MT
(0145) Spi_MT(address2);
    0227 2F04      MOV	R16,R20
    0228 DE66      RCALL	_Spi_MT
(0146) Spi_MT(address1);
    0229 2D0A      MOV	R16,R10
    022A DE64      RCALL	_Spi_MT
(0147) Spi_MT(address0);
    022B 2F06      MOV	R16,R22
    022C DE62      RCALL	_Spi_MT
(0148) for(i=0;i<n;i++)
    022D 24CC      CLR	R12
    022E 24DD      CLR	R13
    022F C00C      RJMP	0x023C
(0149) {
(0150) Spi_MT(*string);
    0230 85EA      LDD	R30,Y+10
    0231 85FB      LDD	R31,Y+11
    0232 8100      LDD	R16,Z+0
    0233 DE5B      RCALL	_Spi_MT
(0151) string++;
    0234 858A      LDD	R24,Y+10
    0235 859B      LDD	R25,Y+11
    0236 9601      ADIW	R24,1
    0237 879B      STD	Y+11,R25
    0238 878A      STD	Y+10,R24
    0239 01C6      MOVW	R24,R12
    023A 9601      ADIW	R24,1
    023B 016C      MOVW	R12,R24
    023C 14CE      CP	R12,R14
    023D 04DF      CPC	R13,R15
    023E F388      BCS	0x0230
(0152) }
(0153) CS_1;
    023F 9AC2      SBI	0x18,2
(0154) Prints("Write string start addr ",0);
    0240 2722      CLR	R18
    0241 2733      CLR	R19
    0242 E809      LDI	R16,0x89
    0243 E010      LDI	R17,0
    0244 DE65      RCALL	_Prints
(0155) Send_abyte('0');
    0245 E300      LDI	R16,0x30
    0246 E010      LDI	R17,0
    0247 DE5A      RCALL	_Send_abyte
(0156) Send_abyte('x');
    0248 E708      LDI	R16,0x78
    0249 E010      LDI	R17,0
    024A DE57      RCALL	_Send_abyte
(0157) Send_abyte('0');
    024B E300      LDI	R16,0x30
    024C E010      LDI	R17,0
    024D DE54      RCALL	_Send_abyte
(0158) Send_abyte(table[address2%16]);
    024E E120      LDI	R18,0x10
    024F E030      LDI	R19,0
    0250 2F04      MOV	R16,R20
    0251 2711      CLR	R17
    0252 D0D1      RCALL	mod16s
    0253 01F8      MOVW	R30,R16
    0254 ED86      LDI	R24,0xD6
    0255 E090      LDI	R25,0
    0256 0FE8      ADD	R30,R24
    0257 1FF9      ADC	R31,R25
    0258 8100      LDD	R16,Z+0
    0259 2711      CLR	R17
    025A DE47      RCALL	_Send_abyte
(0159) Send_abyte(table[address1/6]);
    025B E026      LDI	R18,6
    025C E030      LDI	R19,0
    025D 2D0A      MOV	R16,R10
    025E 2711      CLR	R17
    025F D0C8      RCALL	div16s
    0260 01F8      MOVW	R30,R16
    0261 ED86      LDI	R24,0xD6
    0262 E090      LDI	R25,0
    0263 0FE8      ADD	R30,R24
    0264 1FF9      ADC	R31,R25
    0265 8100      LDD	R16,Z+0
    0266 2711      CLR	R17
    0267 DE3A      RCALL	_Send_abyte
(0160) Send_abyte(table[address1%16]);
    0268 E120      LDI	R18,0x10
    0269 E030      LDI	R19,0
    026A 2D0A      MOV	R16,R10
    026B 2711      CLR	R17
    026C D0B7      RCALL	mod16s
    026D 01F8      MOVW	R30,R16
    026E ED86      LDI	R24,0xD6
    026F E090      LDI	R25,0
    0270 0FE8      ADD	R30,R24
    0271 1FF9      ADC	R31,R25
    0272 8100      LDD	R16,Z+0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -