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

📄 24cxx_test.lis

📁 24IIC的源代码
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 00CA 8015              cp R24,R0
 00CC 9105              cpc R25,R1
 00CE 18F0              brlo L30
 00D0           X7:
 00D0                   .dbline 52
 00D0           ;   page_size=8;
 00D0 88E0              ldi R24,8
 00D2 8C83              std y+4,R24
 00D4 1DC0              xjmp L31
 00D6           L30:
 00D6                   .dbline 53
 00D6           ;  else if(model<32)
 00D6 8889              ldd R24,y+16
 00D8 9989              ldd R25,y+17
 00DA 8032              cpi R24,32
 00DC E0E0              ldi R30,0
 00DE 9E07              cpc R25,R30
 00E0 18F4              brsh L32
 00E2           X8:
 00E2                   .dbline 54
 00E2           ;   page_size=16;
 00E2 80E1              ldi R24,16
 00E4 8C83              std y+4,R24
 00E6 14C0              xjmp L33
 00E8           L32:
 00E8                   .dbline 55
 00E8           ;  else if(model<128)
 00E8 8889              ldd R24,y+16
 00EA 9989              ldd R25,y+17
 00EC 8038              cpi R24,128
 00EE E0E0              ldi R30,0
 00F0 9E07              cpc R25,R30
 00F2 18F4              brsh L34
 00F4           X9:
 00F4                   .dbline 56
 00F4           ;   page_size=32;
 00F4 80E2              ldi R24,32
 00F6 8C83              std y+4,R24
 00F8 0BC0              xjmp L35
 00FA           L34:
 00FA                   .dbline 57
 00FA           ;  else if(model<512)
 00FA 8889              ldd R24,y+16
 00FC 9989              ldd R25,y+17
 00FE 8030              cpi R24,0
 0100 E2E0              ldi R30,2
 0102 9E07              cpc R25,R30
 0104 18F4              brsh L36
 0106           X10:
 0106                   .dbline 58
 0106           ;   page_size=64;
 0106 80E4              ldi R24,64
 0108 8C83              std y+4,R24
 010A 02C0              xjmp L37
 010C           L36:
 010C                   .dbline 60
 010C           ;  else 
 010C           ;   page_size=128;
 010C 80E8              ldi R24,128
 010E 8C83              std y+4,R24
 0110           L37:
 0110           L35:
 0110           L33:
 0110           L31:
 0110                   .dbline 61
 0110           ;  next_page_start_addr=model;
 0110 2888              ldd R2,y+16
 0112 3988              ldd R3,y+17
 0114 4424              clr R4
 0116 5524              clr R5
 0118 2882              std y+0,R2
 011A 3982              std y+1,R3
 011C 4A82              std y+2,R4
 011E 5B82              std y+3,R5
 0120                   .dbline 62
 0120           ;  next_page_start_addr<<=7;//总容量
 0120 87E0              ldi R24,7
 0122 90E0              ldi R25,0
 0124 0881              ldd R16,y+0
 0126 1981              ldd R17,y+1
 0128 2A81              ldd R18,y+2
 012A 3B81              ldd R19,y+3
 012C 8A93              st -y,R24
 012E 0E940000          xcall lsl32
 0132 0883              std y+0,R16
 0134 1983              std y+1,R17
 0136 2A83              std y+2,R18
 0138 3B83              std y+3,R19
 013A 2AC0              xjmp L39
 013C           L38:
 013C                   .dbline 64
 013C           ;  while(next_page_start_addr)
 013C           ;  {
 013C                   .dbline 65
 013C           ;   next_page_start_addr-=page_size;
 013C 2C80              ldd R2,y+4
 013E 3324              clr R3
 0140 4424              clr R4
 0142 5524              clr R5
 0144 6880              ldd R6,y+0
 0146 7980              ldd R7,y+1
 0148 8A80              ldd R8,y+2
 014A 9B80              ldd R9,y+3
 014C 6218              sub R6,R2
 014E 7308              sbc R7,R3
 0150 8408              sbc R8,R4
 0152 9508              sbc R9,R5
 0154 6882              std y+0,R6
 0156 7982              std y+1,R7
 0158 8A82              std y+2,R8
 015A 9B82              std y+3,R9
 015C                   .dbline 66
 015C           ;   if(next_page_start_addr<=addr)
 015C 2C88              ldd R2,y+20
 015E 3D88              ldd R3,y+21
 0160 4424              clr R4
 0162 5524              clr R5
 0164 6880              ldd R6,y+0
 0166 7980              ldd R7,y+1
 0168 8A80              ldd R8,y+2
 016A 9B80              ldd R9,y+3
 016C 2614              cp R2,R6
 016E 3704              cpc R3,R7
 0170 4804              cpc R4,R8
 0172 5904              cpc R5,R9
 0174 68F0              brlo L41
 0176           X11:
 0176                   .dbline 67
 0176           ;   {
 0176                   .dbline 68
 0176           ;    next_page_start_addr+=page_size;
 0176 2C80              ldd R2,y+4
 0178 3324              clr R3
 017A 4424              clr R4
 017C 5524              clr R5
 017E 620C              add R6,R2
 0180 731C              adc R7,R3
 0182 841C              adc R8,R4
 0184 951C              adc R9,R5
 0186 6882              std y+0,R6
 0188 7982              std y+1,R7
 018A 8A82              std y+2,R8
 018C 9B82              std y+3,R9
 018E                   .dbline 69
 018E           ;    break;
 018E 0DC0              xjmp L40
 0190           L41:
 0190                   .dbline 71
 0190           ;   }
 0190           ;  }
 0190           L39:
 0190                   .dbline 63
 0190 40E0              ldi R20,0
 0192 50E0              ldi R21,0
 0194 60E0              ldi R22,0
 0196 70E0              ldi R23,0
 0198 2880              ldd R2,y+0
 019A 3980              ldd R3,y+1
 019C 4A80              ldd R4,y+2
 019E 5B80              ldd R5,y+3
 01A0 2416              cp R2,R20
 01A2 3506              cpc R3,R21
 01A4 4606              cpc R4,R22
 01A6 5706              cpc R5,R23
 01A8 49F6              brne L38
 01AA           X12:
 01AA           L40:
 01AA           L43:
 01AA                   .dbline 74
 01AA           ; 
 01AA           ;  Wagain:
 01AA           ;   p=P_data;
 01AA CE88              ldd R12,y+22
 01AC DF88              ldd R13,y+23
 01AE                   .dbline 75
 01AE           ;  i=num;//数据个数
 01AE A88C              ldd R10,y+24
 01B0                   .dbline 76
 01B0           ;  if(ICerror<10)
 01B0 8D81              ldd R24,y+5
 01B2 8A30              cpi R24,10
 01B4 08F0              brlo X24
 01B6 54C0              xjmp L46
 01B8           X24:
 01B8           X13:
 01B8                   .dbline 77
 01B8           ;   ICerror++;
 01B8 082E              mov R0,R24
 01BA 0394              inc R0
 01BC 0D82              std y+5,R0
 01BE                   .dbline 79
 01BE           ;  else 
 01BE           ;   goto Wstop;
 01BE           L45:
 01BE                   .dbline 80
 01BE           ;  twi_start(); //启动
 01BE 4ADF              xcall _twi_start
 01C0                   .dbline 81
 01C0           ;  temp=0xa0+(DevAddr<<1);
 01C0 8A89              ldd R24,y+18
 01C2 880F              lsl R24
 01C4 8056              subi R24,96    ; addi 160
 01C6 E82E              mov R14,R24
 01C8                   .dbline 82
 01C8           ;  if(model<16) 
 01C8 8889              ldd R24,y+16
 01CA 9989              ldd R25,y+17
 01CC 8031              cpi R24,16
 01CE E0E0              ldi R30,0
 01D0 9E07              cpc R25,R30
 01D2 70F4              brsh L47
 01D4           X14:
 01D4                   .dbline 83
 01D4           ;   temp+=((addr>>7)&0x0e);//器件24c32以下地址高位
 01D4 27E0              ldi R18,7
 01D6 30E0              ldi R19,0
 01D8 0C89              ldd R16,y+20
 01DA 1D89              ldd R17,y+21
 01DC 0E940000          xcall lsr16
 01E0 C801              movw R24,R16
 01E2 8E70              andi R24,14
 01E4 9070              andi R25,0
 01E6 2E2C              mov R2,R14
 01E8 3324              clr R3
 01EA 280E              add R2,R24
 01EC 391E              adc R3,R25
 01EE E22C              mov R14,R2
 01F0           L47:
 01F0                   .dbline 84
 01F0           ;  if(twi_writebyte(temp)!=0x18)// //头字节
 01F0 0E2D              mov R16,R14
 01F2 3BDF              xcall _twi_writebyte
 01F4 0831              cpi R16,24
 01F6 09F0              breq L49
 01F8           X15:
 01F8                   .dbline 85
 01F8           ;  goto Wagain;
 01F8 D8CF              xjmp L43
 01FA           L49:
 01FA                   .dbline 86
 01FA           ;  if(model>16) //写器件24c32以上地址高位
 01FA 80E1              ldi R24,16
 01FC 90E0              ldi R25,0
 01FE 0888              ldd R0,y+16
 0200 1988              ldd R1,y+17
 0202 8015              cp R24,R0
 0204 9105              cpc R25,R1
 0206 40F4              brsh L51
 0208           X16:
 0208                   .dbline 87
 0208           ;  {
 0208                   .dbline 88
 0208           ;   if((twi_writebyte(addr>>8)!=0x28))//
 0208 0C89              ldd R16,y+20
 020A 1D89              ldd R17,y+21
 020C 012F              mov R16,R17
 020E 1127              clr R17
 0210 2CDF              xcall _twi_writebyte
 0212 0832              cpi R16,40
 0214 09F0              breq L53
 0216           X17:
 0216                   .dbline 89
 0216           ;   goto Wagain;
 0216 C9CF              xjmp L43
 0218           L53:
 0218                   .dbline 90
 0218           ;  }
 0218           L51:
 0218                   .dbline 91
 0218           ;  if((twi_writebyte(addr&0xff)!=0x28)) //写地址低位
 0218 0C89              ldd R16,y+20
 021A 1070              andi R17,0
 021C 26DF              xcall _twi_writebyte
 021E E02E              mov R14,R16
 0220 0832              cpi R16,40
 0222 E1F0              breq L58
 0224           X18:
 0224                   .dbline 92
 0224           ;  goto Wagain;
 0224 C2CF              xjmp L43
 0226           L57:
 0226                   .dbline 94
 0226           ;  while(i)//写入数据i个
 0226           ;  {
 0226                   .dbline 95
 0226           ;   i--;
 0226 AA94              dec R10
 0228                   .dbline 96
 0228           ;   if(twi_writebyte(*(p++))!=0x28)//
 0228 F601              movw R30,R12
 022A 0191              ld R16,Z+
 022C 6F01              movw R12,R30
 022E 1DDF              xcall _twi_writebyte
 0230 E02E              mov R14,R16
 0232 0832              cpi R16,40
 0234 09F0              breq L60
 0236           X19:
 0236                   .dbline 97
 0236           ;   goto Wagain;
 0236 B9CF              xjmp L43
 0238           L60:
 0238                   .dbline 98
 0238           ;   addr++;
 0238 8C89              ldd R24,y+20
 023A 9D89              ldd R25,y+21
 023C 0196              adiw R24,1
 023E 9D8B              std y+21,R25
 0240 8C8B              std y+20,R24
 0242                   .dbline 99
 0242           ;   if(addr==next_page_start_addr)break;
 0242 2880              ldd R2,y+0
 0244 3980              ldd R3,y+1
 0246 4A80              ldd R4,y+2
 0248 5B80              ldd R5,y+3
 024A 3C01              movw R6,R24
 024C 8824              clr R8
 024E 9924              clr R9
 0250 6214              cp R6,R2
 0252 7304              cpc R7,R3
 0254 8404              cpc R8,R4
 0256 9504              cpc R9,R5
 0258 09F4              brne L62
 025A           X20:
 025A                   .dbline 99
 025A 02C0              xjmp L59
 025C           L62:
 025C                   .dbline 100
 025C           ;  }
 025C           L58:
 025C                   .dbline 93
 025C AA20              tst R10
 025E 19F7              brne L57
 0260           X21:
 0260           L59:
 0260           L46:
 0260                   .dbline 102
 0260           ;  Wstop:
 0260           ;   Stop();
 0260 84E9              ldi R24,148
 0262 86BF              out 0x36,R24

⌨️ 快捷键说明

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