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

📄 self.lst

📁 单片机开发资料光盘-双龙-686M.zip
💻 LST
📖 第 1 页 / 共 2 页
字号:
    0EDE DF58      RCALL	_sendchar
(0128)            }       
    0EDF CF6D      RJMP	0x0E4D
(0129)           else if(val=='F')                   // read fuse bits
    0EE0 3446      CPI	R20,0x46
    0EE1 F431      BNE	0x0EE8
(0130)            {
(0131)             sendchar(read_program_memory(0x0000,0x09));
    0EE2 E029      LDI	R18,0x9
    0EE3 2700      CLR	R16
    0EE4 2711      CLR	R17
    0EE5 D06F      RCALL	_read_program_memory
    0EE6 DF50      RCALL	_sendchar
(0132)            }        
    0EE7 CF65      RJMP	0x0E4D
(0133)           else if(val=='r')                   // read lock bits
    0EE8 3742      CPI	R20,0x72
    0EE9 F431      BNE	0x0EF0
(0134)            {
(0135)             sendchar(read_program_memory(0x0001,0x09));
    0EEA E029      LDI	R18,0x9
    0EEB E001      LDI	R16,1
    0EEC E010      LDI	R17,0
    0EED D067      RCALL	_read_program_memory
    0EEE DF48      RCALL	_sendchar
(0136)            }        
    0EEF CF5D      RJMP	0x0E4D
(0137)           else if(val=='N')                   // read high fuse bits
    0EF0 344E      CPI	R20,0x4E
    0EF1 F431      BNE	0x0EF8
(0138)            {
(0139)             sendchar(read_program_memory(0x0003,0x09));
    0EF2 E029      LDI	R18,0x9
    0EF3 E003      LDI	R16,3
    0EF4 E010      LDI	R17,0
    0EF5 D05F      RCALL	_read_program_memory
    0EF6 DF40      RCALL	_sendchar
(0140)             }        
    0EF7 CF55      RJMP	0x0E4D
(0141)           else if(val=='t')                   // Return programmer type 
    0EF8 3744      CPI	R20,0x74
    0EF9 F429      BNE	0x0EFF
(0142)            {
(0143)             sendchar(device);
    0EFA E707      LDI	R16,0x77
    0EFB DF3B      RCALL	_sendchar
(0144)             sendchar(0);
    0EFC 2700      CLR	R16
    0EFD DF39      RCALL	_sendchar
(0145)             }
    0EFE CF4E      RJMP	0x0E4D
(0146)           else if ((val=='x')||(val=='y')||(val=='T'))
    0EFF 3748      CPI	R20,0x78
    0F00 F021      BEQ	0x0F05
    0F01 3749      CPI	R20,0x79
    0F02 F011      BEQ	0x0F05
    0F03 3544      CPI	R20,0x54
    0F04 F421      BNE	0x0F09
(0147)             {
(0148)              recchar();
    0F05 DF35      RCALL	_recchar
(0149)              sendchar('\r');
    0F06 E00D      LDI	R16,0xD
    0F07 DF2F      RCALL	_sendchar
(0150)             }       
    0F08 CF44      RJMP	0x0E4D
(0151)           else if (val=='S')                  // Return software identifier 
    0F09 3543      CPI	R20,0x53
    0F0A F479      BNE	0x0F1A
(0152)             {
(0153)              sendchar('A');
    0F0B E401      LDI	R16,0x41
    0F0C DF2A      RCALL	_sendchar
(0154)              sendchar('V');
    0F0D E506      LDI	R16,0x56
    0F0E DF28      RCALL	_sendchar
(0155)              sendchar('R');
    0F0F E502      LDI	R16,0x52
    0F10 DF26      RCALL	_sendchar
(0156)              sendchar('B');
    0F11 E402      LDI	R16,0x42
    0F12 DF24      RCALL	_sendchar
(0157)              sendchar('O');
    0F13 E40F      LDI	R16,0x4F
    0F14 DF22      RCALL	_sendchar
(0158)              sendchar('O');
    0F15 E40F      LDI	R16,0x4F
    0F16 DF20      RCALL	_sendchar
(0159)              sendchar('T');
    0F17 E504      LDI	R16,0x54
    0F18 DF1E      RCALL	_sendchar
(0160)             }			                       
    0F19 CF33      RJMP	0x0E4D
(0161)           else if (val=='V')                  // Return Software Version
    0F1A 3546      CPI	R20,0x56
    0F1B F429      BNE	0x0F21
(0162)             {
(0163)              sendchar('1');
    0F1C E301      LDI	R16,0x31
    0F1D DF19      RCALL	_sendchar
(0164)              sendchar('0');
    0F1E E300      LDI	R16,0x30
    0F1F DF17      RCALL	_sendchar
(0165)              }        
    0F20 CF2C      RJMP	0x0E4D
(0166)           else if (val=='s')                  // Return Signature Byte
    0F21 3743      CPI	R20,0x73
    0F22 F439      BNE	0x0F2A
(0167)             {							
(0168)              sendchar(sig_byte3);
    0F23 E007      LDI	R16,7
    0F24 DF12      RCALL	_sendchar
(0169)              sendchar(sig_byte2);
    0F25 E903      LDI	R16,0x93
    0F26 DF10      RCALL	_sendchar
(0170)              sendchar(sig_byte1);
    0F27 E10E      LDI	R16,0x1E
    0F28 DF0E      RCALL	_sendchar
(0171)             }       
    0F29 CF23      RJMP	0x0E4D
(0172)           else if(val!=0x1b)                  // if not esc
    0F2A 314B      CPI	R20,0x1B
    0F2B F409      BNE	0x0F2D
    0F2C CF20      RJMP	0x0E4D
(0173)             {
(0174)              sendchar('?');
    0F2D E30F      LDI	R16,0x3F
    0F2E DF08      RCALL	_sendchar
    0F2F CF1D      RJMP	0x0E4D
    0F30 D042      RCALL	pop_gset5
    0F31 9508      RET
(0175)              }
(0176)          }	
(0177) }
(0178) void main(void)
(0179) {
(0180)     void (*funcptr)( void ) = 0x0000;       // Set up function pointer
_main:
  funcptr              --> R20
    0F32 2744      CLR	R20
    0F33 2755      CLR	R21
(0181) 	DDRD=0;
    0F34 2422      CLR	R2
    0F35 BA21      OUT	0x11,R2
(0182) 	PORTD=0xff;	
    0F36 EF8F      LDI	R24,0xFF
    0F37 BB82      OUT	0x12,R24
(0183)     uart_init();
    0F38 DF06      RCALL	_uart_init
(0184) 	if ((PIND&0x04)==0)   
    0F39 9982      SBIC	0x10,2
    0F3A C004      RJMP	0x0F3F
(0185)        {
(0186) 	    PORTD=0;
    0F3B 2422      CLR	R2
    0F3C BA22      OUT	0x12,R2
(0187) 	    iap();
    0F3D DF0E      RCALL	_iap
(0188) 	   }
    0F3E C003      RJMP	0x0F42
(0189) 	else
(0190) 	   funcptr();   
    0F3F 2FE4      MOV	R30,R20
    0F40 2FF5      MOV	R31,R21
    0F41 D056      RCALL	xicall
(0191) }
    0F42 9508      RET
FILE: E:\icc\iccavr\mega8\mega8\boot\assembly.s
(0001) 		.text
(0002) 
(0003) SPMCR = 0x37 
(0004) 
(0005) ; void write_page (unsigned int adr, unsigned char function);
(0006) _write_page::
(0007)         in r20,SPMCR
_write_page:
    0F43 B747      IN	R20,0x37
(0008) 		sbrc r20,0
    0F44 FD40      SBRC	R20,0
(0009) 		rjmp _write_page 
    0F45 CFFD      RJMP	_write_page
(0010) 		MOV R31,R17        
    0F46 2FF1      MOV	R31,R17
(0011)         MOV R30,R16         ;move adress to z pointer (R31=ZH R30=ZL)
    0F47 2FE0      MOV	R30,R16
(0012)         OUT SPMCR,R18       ;argument 2 decides function
    0F48 BF27      OUT	0x37,R18
(0013)         SPM                 ;perform pagewrite
    0F49 95E8      SPM
    0F4A FFFF      SBRS	R31,7
(0014) 		.dw $ffff
(0015) 		NOP
    0F4B 0000      NOP
(0016)         RET
    0F4C 9508      RET
(0017) 
(0018) ; void fill_temp_buffer (unsigned int data, unsigned int adr);
(0019) _fill_temp_buffer::
(0020)         MOV R31,R19        
_fill_temp_buffer:
    0F4D 2FF3      MOV	R31,R19
(0021)         MOV R30,R18         ;move adress to z pointer (R31=ZH R30=ZL)
    0F4E 2FE2      MOV	R30,R18
(0022)         MOV R1,R17
    0F4F 2E11      MOV	R1,R17
(0023)         MOV R0,R16          ;move data to reg 0 and 1      
    0F50 2E00      MOV	R0,R16
(0024)         LDI R18,0x01
    0F51 E021      LDI	R18,1
(0025)         OUT SPMCR,R18
    0F52 BF27      OUT	0x37,R18
(0026)         SPM            ;Store program memory
    0F53 95E8      SPM
(0027)         RET      
    0F54 9508      RET
(0028) 
(0029) ;unsigned int read_program_memory (unsigned int adr ,unsigned char cmd);
(0030) _read_program_memory::
(0031)         ldi  r20,0x11
_read_program_memory:
    0F55 E141      LDI	R20,0x11
(0032) 		out	 SPMCR,r20
    0F56 BF47      OUT	0x37,R20
(0033) 		SPM
    0F57 95E8      SPM
    0F58 FFFF      SBRS	R31,7
(0034) 		.dw $ffff
(0035) 		nop		 	  		;重新使能RWW扇区
    0F59 0000      NOP
(0036)         MOV R31,R17         ;R31=ZH R30=ZL
    0F5A 2FF1      MOV	R31,R17
(0037)         MOV R30,R16         ;move adress to z pointer
    0F5B 2FE0      MOV	R30,R16
(0038)         SBRC R18,0          ;read lockbits? (second argument=0x09)
    0F5C FD20      SBRC	R18,0
(0039)         OUT SPMCR,R18	    ;if so, place second argument in SPMEN register
    0F5D BF27      OUT	0x37,R18
(0040)         LPM                 ;read LSB
    0F5E 95C8      LPM
(0041)         MOV R16,R0         
    0F5F 2D00      MOV	R16,R0
(0042)         INC R30
    0F60 95E3      INC	R30
(0043)         LPM
    0F61 95C8      LPM
(0044)         MOV R17,R0          ;read MSB (ignored when reading lockbits)
    0F62 2D10      MOV	R17,R0
(0045)         RET
    0F63 9508      RET
(0046) 
(0047) ;void write_lock_bits (unsigned char val);
(0048) _write_lock_bits::
(0049)         in r20,SPMCR
_write_lock_bits:
    0F64 B747      IN	R20,0x37
(0050) 		sbrc r20,0
    0F65 FD40      SBRC	R20,0
(0051) 		rjmp _write_lock_bits         
    0F66 CFFD      RJMP	_write_lock_bits
(0052)         MOV R0,R16   
    0F67 2E00      MOV	R0,R16
(0053)         LDI R17,0x09     
    0F68 E019      LDI	R17,0x9
(0054)         OUT SPMCR,R17
    0F69 BF17      OUT	0x37,R17
(0055)         SPM                ;write lockbits
    0F6A 95E8      SPM
    0F6B FFFF      SBRS	R31,7
(0056) 		.dw $ffff
(0057) 		NOP
    0F6C 0000      NOP
(0058)         RET
    0F6D 9508      RET
FILE: E:\icc\iccavr\mega8\mega8\boot\read_flash.s
(0001) ;unsigned char read_flash(unsigned int add);
(0002) _read_flash::
(0003)         mov r31,r17
_read_flash:
    0F6E 2FF1      MOV	R31,R17
(0004) 		mov r30,r16 
    0F6F 2FE0      MOV	R30,R16
(0005) 		lpm r16,z
    0F70 9104      LPM	R16,0(Z)
(0006) 		clr r17
    0F71 2711      CLR	R17
(0007) 		ret	
FILE: <library>
    0F72 9508      RET
pop_gset5:
    0F73 27EE      CLR	R30
    0F74 C004      RJMP	pop
push_gset1:
    0F75 935A      ST	R21,-Y
    0F76 934A      ST	R20,-Y
    0F77 9508      RET
pop_gset1:
    0F78 E0E1      LDI	R30,1
pop:
    0F79 9149      LD	R20,Y+
    0F7A 9159      LD	R21,Y+
    0F7B FDE0      SBRC	R30,0
    0F7C 9508      RET
    0F7D 9169      LD	R22,Y+
    0F7E 9179      LD	R23,Y+
    0F7F FDE1      SBRC	R30,1
    0F80 9508      RET
    0F81 90A9      LD	R10,Y+
    0F82 90B9      LD	R11,Y+
    0F83 FDE2      SBRC	R30,2
    0F84 9508      RET
    0F85 90C9      LD	R12,Y+
    0F86 90D9      LD	R13,Y+
    0F87 FDE3      SBRC	R30,3
    0F88 9508      RET
    0F89 90E9      LD	R14,Y+
    0F8A 90F9      LD	R15,Y+
    0F8B 9508      RET
push_gset2:
    0F8C 937A      ST	R23,-Y
    0F8D 936A      ST	R22,-Y
    0F8E CFE6      RJMP	push_gset1
push_gset3:
    0F8F 92BA      ST	R11,-Y
    0F90 92AA      ST	R10,-Y
    0F91 CFFA      RJMP	push_gset2
push_gset4:
    0F92 92DA      ST	R13,-Y
    0F93 92CA      ST	R12,-Y
    0F94 CFFA      RJMP	push_gset3
push_gset5:
    0F95 92FA      ST	R15,-Y
    0F96 92EA      ST	R14,-Y
    0F97 CFFA      RJMP	push_gset4
xicall:
    0F98 920A      ST	R0,-Y
    0F99 95C8      LPM
    0F9A 920A      ST	R0,-Y
    0F9B 9631      ADIW	R30,1
    0F9C 95C8      LPM
    0F9D 2DF0      MOV	R31,R0
    0F9E 91E9      LD	R30,Y+
    0F9F 9009      LD	R0,Y+
    0FA0 9409      IJMP

⌨️ 快捷键说明

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