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

📄 m128_test.lst

📁 AVR单片机开发中
💻 LST
📖 第 1 页 / 共 5 页
字号:
__start:
__text_start:
    015B EFCF      LDI	R28,0xFF
    015C E1D0      LDI	R29,0x10
    015D BFCD      OUT	P3D,R28
    015E BFDE      OUT	P3E,R29
    015F 52C0      SUBI	R28,0x20
    0160 40D0      SBCI	R29,0
    0161 EA0A      LDI	R16,0xAA
    0162 8308      STD	R16,0+Y
    0163 2400      CLR	R0
    0164 E2E2      LDI	R30,0x22
    0165 E0F2      LDI	R31,2
    0166 E012      LDI	R17,2
    0167 36E4      CPI	R30,0x64
    0168 07F1      CPC	R31,R17
    0169 F011      BEQ	0x016C
    016A 9201      ST	R0,Z+
    016B CFFB      RJMP	0x0167
    016C 8300      STD	R16,0+Z
    016D E9E3      LDI	R30,0x93
    016E E0F1      LDI	R31,1
    016F E0A0      LDI	R26,0
    0170 E0B1      LDI	R27,1
    0171 E012      LDI	R17,2
    0172 3BE5      CPI	R30,0xB5
    0173 07F1      CPC	R31,R17
    0174 F021      BEQ	0x0179
    0175 95C8      LPM
    0176 9631      ADIW	R30,1
    0177 920D      ST	R0,X+
    0178 CFF9      RJMP	0x0172
    0179 940E0961  CALL	_main
_exit:
    017B CFFF      RJMP	_exit
_hextochar:
  temp                 --> R10
  target               --> R20
  first                --> R22
  hex                  --> R16
    017C 940E0FC1  CALL	push_gset3
FILE: H:\m128_test\converse.c
(0001) 
(0002) unsigned int  hextochar(unsigned char hex){
(0003)    unsigned int first = 0 ;
    017E 2766      CLR	R22
    017F 2777      CLR	R23
(0004)    unsigned int  target = 0;
    0180 2744      CLR	R20
    0181 2755      CLR	R21
(0005)    unsigned char temp = hex & 0x0f;
    0182 2F80      MOV	R24,R16
    0183 708F      ANDI	R24,0xF
    0184 2EA8      MOV	R10,R24
(0006)    if( temp >= 0x0A ) 
    0185 308A      CPI	R24,0xA
    0186 F028      BCS	0x018C
(0007)           first = temp + 0x37;
    0187 2F68      MOV	R22,R24
    0188 2777      CLR	R23
    0189 5C69      SUBI	R22,0xC9
    018A 4F7F      SBCI	R23,0xFF
    018B C004      RJMP	0x0190
(0008)    else 
(0009)        first = temp + 0x30;          
    018C 2D6A      MOV	R22,R10
    018D 2777      CLR	R23
    018E 5D60      SUBI	R22,0xD0
    018F 4F7F      SBCI	R23,0xFF
(0010)    target = first;
    0190 01AB      MOVW	R20,R22
(0011)    hex = hex >> 4;
    0191 2F80      MOV	R24,R16
    0192 9582      SWAP	R24
    0193 708F      ANDI	R24,0xF
    0194 2F08      MOV	R16,R24
(0012)    if( hex >= 0x0A ) 
    0195 308A      CPI	R24,0xA
    0196 F028      BCS	0x019C
(0013)           first = hex + 0x37;
    0197 2F68      MOV	R22,R24
    0198 2777      CLR	R23
    0199 5C69      SUBI	R22,0xC9
    019A 4F7F      SBCI	R23,0xFF
    019B C004      RJMP	0x01A0
(0014)    else 
(0015)        first = hex + 0x30;  
    019C 2F60      MOV	R22,R16
    019D 2777      CLR	R23
    019E 5D60      SUBI	R22,0xD0
    019F 4F7F      SBCI	R23,0xFF
(0016)    first = first << 8 ;
    01A0 2F76      MOV	R23,R22
    01A1 2766      CLR	R22
(0017)    target |= first;  
    01A2 2B46      OR	R20,R22
    01A3 2B57      OR	R21,R23
(0018)    return  target;
    01A4 2F04      MOV	R16,R20
    01A5 2F15      MOV	R17,R21
    01A6 940E0FD0  CALL	pop_gset3
    01A8 9508      RET
_bcd_char:
  kk                   --> R14
  temp                 --> R12
  i                    --> R20
  s                    --> R10
  hex                  --> R22
    01A9 940E0FC9  CALL	push_gset5
    01AB 0159      MOVW	R10,R18
    01AC 01B8      MOVW	R22,R16
(0019) }
(0020) 
(0021) 
(0022) 
(0023) unsigned char  bcd_char( int hex ,char *s ){
(0024)    unsigned char i  = 0 ,temp = 0;
    01AD 2744      CLR	R20
    01AE 24CC      CLR	R12
(0025)    int  kk = 0 ;
    01AF 24EE      CLR	R14
    01B0 24FF      CLR	R15
(0026)    
(0027)    if( hex < 0){
    01B1 3060      CPI	R22,0
    01B2 E0E0      LDI	R30,0
    01B3 077E      CPC	R23,R30
    01B4 F45C      BGE	0x01C0
(0028)      s[i] = '-';
    01B5 2FE4      MOV	R30,R20
    01B6 27FF      CLR	R31
    01B7 0DEA      ADD	R30,R10
    01B8 1DFB      ADC	R31,R11
    01B9 E28D      LDI	R24,0x2D
    01BA 8380      STD	R24,0+Z
(0029)      i++;	 
    01BB 9543      INC	R20
(0030) 	 hex = -hex;
    01BC 9560      COM	R22
    01BD 9570      COM	R23
    01BE 5F6F      SUBI	R22,0xFF
    01BF 4F7F      SBCI	R23,0xFF
(0031)    }	
(0032)     
(0033)    kk = hex;
    01C0 017B      MOVW	R14,R22
(0034)    temp = hex /10000;
    01C1 E120      LDI	R18,0x10
    01C2 E237      LDI	R19,0x27
    01C3 018B      MOVW	R16,R22
    01C4 940E0E29  CALL	div16s
    01C6 2EC0      MOV	R12,R16
(0035)    if( kk >= 10000 ){
    01C7 01C7      MOVW	R24,R14
    01C8 3180      CPI	R24,0x10
    01C9 E2E7      LDI	R30,0x27
    01CA 079E      CPC	R25,R30
    01CB F044      BLT	0x01D4
(0036)    	   s[i] = temp + 0x30;
    01CC 2FE4      MOV	R30,R20
    01CD 27FF      CLR	R31
    01CE 0DEA      ADD	R30,R10
    01CF 1DFB      ADC	R31,R11
    01D0 2D8C      MOV	R24,R12
    01D1 5D80      SUBI	R24,0xD0
    01D2 8380      STD	R24,0+Z
(0037) 	   i++;
    01D3 9543      INC	R20
(0038)    }
(0039)       
(0040)    hex = hex % 10000;
    01D4 E120      LDI	R18,0x10
    01D5 E237      LDI	R19,0x27
    01D6 018B      MOVW	R16,R22
    01D7 940E0E27  CALL	mod16s
    01D9 01B8      MOVW	R22,R16
(0041)    temp = hex /1000;
    01DA EE28      LDI	R18,0xE8
    01DB E033      LDI	R19,3
    01DC 940E0E29  CALL	div16s
    01DE 2EC0      MOV	R12,R16
(0042)    if( kk >= 1000 ){
    01DF 01C7      MOVW	R24,R14
    01E0 3E88      CPI	R24,0xE8
    01E1 E0E3      LDI	R30,3
    01E2 079E      CPC	R25,R30
    01E3 F044      BLT	0x01EC
(0043)    	   s[i] = temp + 0x30;
    01E4 2FE4      MOV	R30,R20
    01E5 27FF      CLR	R31
    01E6 0DEA      ADD	R30,R10
    01E7 1DFB      ADC	R31,R11
    01E8 2D8C      MOV	R24,R12
    01E9 5D80      SUBI	R24,0xD0
    01EA 8380      STD	R24,0+Z
(0044) 	   i++;
    01EB 9543      INC	R20
(0045)    }	
(0046)    
(0047)    hex = hex % 1000; 
    01EC EE28      LDI	R18,0xE8
    01ED E033      LDI	R19,3
    01EE 018B      MOVW	R16,R22
    01EF 940E0E27  CALL	mod16s
    01F1 01B8      MOVW	R22,R16
(0048)    temp = hex /100;
    01F2 E624      LDI	R18,0x64
    01F3 E030      LDI	R19,0
    01F4 940E0E29  CALL	div16s
    01F6 2EC0      MOV	R12,R16
(0049)    if( kk >= 100 ){
    01F7 01C7      MOVW	R24,R14
    01F8 3684      CPI	R24,0x64
    01F9 E0E0      LDI	R30,0
    01FA 079E      CPC	R25,R30
    01FB F044      BLT	0x0204
(0050)    	   s[i] = temp + 0x30;
    01FC 2FE4      MOV	R30,R20
    01FD 27FF      CLR	R31
    01FE 0DEA      ADD	R30,R10
    01FF 1DFB      ADC	R31,R11
    0200 2D8C      MOV	R24,R12
    0201 5D80      SUBI	R24,0xD0
    0202 8380      STD	R24,0+Z
(0051) 	   i++;
    0203 9543      INC	R20
(0052)    }	
(0053)    
(0054)    hex = hex % 100;
    0204 E624      LDI	R18,0x64
    0205 E030      LDI	R19,0
    0206 018B      MOVW	R16,R22
    0207 940E0E27  CALL	mod16s
    0209 01B8      MOVW	R22,R16
(0055)    temp = hex /10;
    020A E02A      LDI	R18,0xA
    020B E030      LDI	R19,0
    020C 940E0E29  CALL	div16s
    020E 2EC0      MOV	R12,R16
(0056)    if( kk >= 10 ){
    020F 01C7      MOVW	R24,R14
    0210 308A      CPI	R24,0xA
    0211 E0E0      LDI	R30,0
    0212 079E      CPC	R25,R30
    0213 F044      BLT	0x021C
(0057)    	   s[i] = temp + 0x30;
    0214 2FE4      MOV	R30,R20
    0215 27FF      CLR	R31
    0216 0DEA      ADD	R30,R10
    0217 1DFB      ADC	R31,R11
    0218 2D8C      MOV	R24,R12
    0219 5D80      SUBI	R24,0xD0
    021A 8380      STD	R24,0+Z
(0058) 	   i++;
    021B 9543      INC	R20
(0059)    }
(0060)    
(0061)    hex = hex % 10;
    021C E02A      LDI	R18,0xA
    021D E030      LDI	R19,0
    021E 018B      MOVW	R16,R22
    021F 940E0E27  CALL	mod16s
    0221 01B8      MOVW	R22,R16
(0062)    s[i] = hex+ 0x30;
    0222 2FE4      MOV	R30,R20
    0223 27FF      CLR	R31
    0224 0DEA      ADD	R30,R10
    0225 1DFB      ADC	R31,R11
    0226 01CB      MOVW	R24,R22
    0227 96C0      ADIW	R24,0x30
    0228 8380      STD	R24,0+Z
(0063)    i++;
    0229 9543      INC	R20
(0064)    return i;
    022A 2F04      MOV	R16,R20
    022B 940E0FD6  CALL	pop_gset5
    022D 9508      RET
_spi_tranByte:
  p                    --> R20
  addr                 --> R18
  cData                --> R16
    022E 940E0FA6  CALL	push_gset1
FILE: H:\m128_test\test_isp.c
(0001) //ICC-AVR application builder : 2005-3-21 10:06:01
(0002) // Target : M128
(0003) // Crystal: 16.000Mhz
(0004) 
(0005) #include <iom128v.h>
(0006) #include <macros.h>
(0007) #include <stdio.h>
(0008) #define CH1    1
(0009) #define CH2    2
(0010) #define CH3    4
(0011) #define  READY 0XAA
(0012) #define  STOP  0X00
(0013) #define  TEST  0x1A
(0014) 
(0015) extern long len;
(0016) //SPI initialize
(0017) // clock rate: 2000000hz
(0018) 
(0019) 
(0020)   
(0021)   
(0022) 
(0023) 
(0024) 
(0025) unsigned char spi_tranByte (unsigned char cData, int addr)
(0026) {     
(0027)       
(0028) 	  unsigned char *p = (unsigned char *) addr;
    0230 01A9      MOVW	R20,R18
(0029)  
(0030)       *p = 0x00;
    0231 2422      CLR	R2
    0232 01FA      MOVW	R30,R20
    0233 8220      STD	R2,0+Z
(0031)       SPDR = cData;
    0234 B90F      OUT	P0F,R16
(0032) 	  while (!(SPSR&0x80));
    0235 9B77      SBIS	P0E,7
    0236 CFFE      RJMP	0x0235
(0033) 	  return SPDR;
    0237 B10F      IN	R16,P0F
    0238 940E0FA9  CALL	pop_gset1
    023A 9508      RET
_spi_cnt:
  temp                 --> Y+0
  buf                  --> R10
  cha                  --> R12
    023B 940E0FC5  CALL	push_gset4
    023D 2EC0      MOV	R12,R16
    023E 9724      SBIW	R28,4
(0034) 
(0035) }
(0036) 
(0037) 	   
(0038) 	   
(0039) long spi_cnt(unsigned char cha)
(0040) {  
(0041)       long temp=0;
    023F E040      LDI	R20,0
    0240 E050      LDI	R21,0
    0241 E060      LDI	R22,0
    0242 E070      LDI	R23,0
    0243 01FE      MOVW	R30,R28
    0244 8340      STD	R20,0+Z
    0245 8351      STD	R21,1+Z
    0246 8362      STD	R22,2+Z
    0247 8373      STD	R23,3+Z
(0042)       unsigned char buf=0;
    0248 24AA      CLR	R10
(0043) 	  temp=0;
    0249 E040      LDI	R20,0
    024A E050      LDI	R21,0
    024B E060      LDI	R22,0
    024C E070      LDI	R23,0
    024D 8340      STD	R20,0+Z
    024E 8351      STD	R21,1+Z
    024F 8362      STD	R22,2+Z
    0250 8373      STD	R23,3+Z
(0044) 	  switch (cha)
    0251 24DD      CLR	R13
    0252 01C6      MOVW	R24,R12
    0253 3081      CPI	R24,1
    0254 E0E0      LDI	R30,0
    0255 079E      CPC	R25,R30
    0256 F059      BEQ	0x0262
    0257 3082      CPI	R24,2
    0258 E0E0      LDI	R30,0
    0259 079E      CPC	R25,R30
    025A F409      BNE	0x025C
    025B C08C      RJMP	0x02E8
    025C 3084      CPI	R24,4
    025D E0E0      LDI	R30,0
    025E 079E      CPC	R25,R30
    025F F409      BNE	0x0261
    0260 C12E      RJMP	0x038F
    0261 C1D3      RJMP	0x0435
(0045) 	  {
(0046) 	         case CH1:     do
(0047) 			               {
(0048) 			               buf=spi_tranByte (CH1,0X9000);
    0262 E020      LDI	R18,0
    0263 E930      LDI	R19,0x90
    0264 E001      LDI	R16,1
    0265 DFC8      RCALL	_spi_tranByte
    0266 2EA0      MOV	R10,R16
(0049) 						   asm ("nop");
    0267 0000      NOP
(0050) 			               asm ("nop");  
    0268 0000      NOP
(0051) 	                       asm ("nop");
    0269 0000      NOP
(0052) 						   }
(0053) 						   while(buf!=READY);
    026A 2D8A      MOV	R24,R10
    026B 3A8A      CPI	R24,0xAA
    026C F7A9      BNE	0x0262
(0054) 						   delay_nus(100);
    026D E604      LDI	R16,0x64
    026E E010      LDI	R17,0
    026F 940E0462  CALL	_delay_nus
(0055) 						   buf=spi_tranByte (CH1,0x9000);
    0271 E020      LDI	R18,0
    0272 E930      LDI	R19,0x90
    0273 E001      LDI	R16,1
    0274 DFB9      RCALL	_spi_tranByte
    0275 2EA0      MOV	R10,R16
(0056) 						   temp=buf;
    0276 2C2A      MOV	R2,R10
    0277 2433      CLR	R3
    0278 2444      CLR	R4
    0279 2455      CLR	R5
    027A 01FE      MOVW	R30,R28
    027B 8220      STD	R2,0+Z
    027C 8231      STD	R3,1+Z
    027D 8242      STD	R4,2+Z
    027E 8253      STD	R5,3+Z
(0057) 						   temp=temp*256;
    027F E040      LDI	R20,0
    0280 E051      LDI	R21,1
    0281 E060      LDI	R22,0
    0282 E070      LDI	R23,0
    0283 925A      ST	R5,-Y
    0284 924A      ST	R4,-Y
    0285 923A      ST	R3,-Y
    0286 922A      ST	R2,-Y
    0287 018A      MOVW	R16,R20
    0288 019B      MOVW	R18,R22
    0289 940E0E44  CALL	empy32s
    028B 01FE      MOVW	R30,R28
    028C 8300      STD	R16,0+Z
    028D 8311      STD	R17,1+Z
    028E 8322      STD	R18,2+Z
    028F 8333      STD	R19,3+Z
(0058) 						  
(0059) 						   buf=spi_tranByte (CH1,0x9000);
    0290 E020      LDI	R18,0
    0291 E930      LDI	R19,0x90

⌨️ 快捷键说明

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