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

📄 shuma.lst

📁 avr单片机与flash存储器通信程序,调试通过,希望对大家有所帮助.
💻 LST
字号:
__start:
__text_start:
    0019 E5CF      LDI	R28,0x5F
    001A E0D2      LDI	R29,2
    001B BFCD      OUT	0x3D,R28
    001C BFDE      OUT	0x3E,R29
    001D 51C0      SUBI	R28,0x10
    001E 40D0      SBCI	R29,0
    001F EA0A      LDI	R16,0xAA
    0020 8308      STD	Y+0,R16
    0021 2400      CLR	R0
    0022 E6E0      LDI	R30,0x60
    0023 E0F0      LDI	R31,0
    0024 E010      LDI	R17,0
    0025 36E0      CPI	R30,0x60
    0026 07F1      CPC	R31,R17
    0027 F011      BEQ	0x002A
    0028 9201      ST	R0,Z+
    0029 CFFB      RJMP	0x0025
    002A 8300      STD	Z+0,R16
    002B E3E2      LDI	R30,0x32
    002C E0F0      LDI	R31,0
    002D E6A0      LDI	R26,0x60
    002E E0B0      LDI	R27,0
    002F E010      LDI	R17,0
    0030 33E2      CPI	R30,0x32
    0031 07F1      CPC	R31,R17
    0032 F021      BEQ	0x0037
    0033 95C8      LPM
    0034 9631      ADIW	R30,1
    0035 920D      ST	R0,X+
    0036 CFF9      RJMP	0x0030
    0037 D018      RCALL	_main
_exit:
    0038 CFFF      RJMP	_exit
FILE: C:\ATMega8515\数码管\init.c
(0001) //ICC-AVR application builder : 2006-4-27 13:17:05
(0002) // Target : M8515
(0003) // Crystal: 11.0592Mhz
(0004) 
(0005) #include <iom8515v.h>
(0006) #include <macros.h>
(0007) 
(0008) void port_init(void)
(0009) {
(0010)  PORTA = 0x00;
_port_init:
    0039 2422      CLR	R2
    003A BA2B      OUT	0x1B,R2
(0011)  DDRA  = 0xFF;
    003B EF8F      LDI	R24,0xFF
    003C BB8A      OUT	0x1A,R24
(0012)  PORTB = 0x00;
    003D BA28      OUT	0x18,R2
(0013)  DDRB  = 0x00;
    003E BA27      OUT	0x17,R2
(0014)  PORTC = 0xC0;
    003F EC80      LDI	R24,0xC0
    0040 BB85      OUT	0x15,R24
(0015)  DDRC  = 0xC0;
    0041 BB84      OUT	0x14,R24
(0016)  PORTD = 0x00;
    0042 BA22      OUT	0x12,R2
(0017)  DDRD  = 0x00; 
    0043 BA21      OUT	0x11,R2
(0018)  PORTE = 0x00;
    0044 B827      OUT	0x07,R2
(0019)  DDRE  = 0x00; 
    0045 B826      OUT	0x06,R2
    0046 9508      RET
(0020) }
(0021) 
(0022) //call this routine to initialize all peripherals
(0023) void init_devices(void)
(0024) {
(0025)  //stop errant interrupts until set up
(0026)  CLI(); //disable all interrupts
_init_devices:
    0047 94F8      BCLR	7
(0027)  port_init();
    0048 DFF0      RCALL	_port_init
(0028) 
(0029)  MCUCR = 0x00;
    0049 2422      CLR	R2
    004A BE25      OUT	0x35,R2
(0030)  EMCUCR = 0x00;
    004B BE26      OUT	0x36,R2
(0031)  GICR = 0x00;
    004C BE2B      OUT	0x3B,R2
(0032)  TIMSK = 0x00;
    004D BE29      OUT	0x39,R2
(0033)  SEI(); //re-enable interrupts
    004E 9478      BSET	7
    004F 9508      RET
FILE: C:\ATMega8515\数码管\main.c
(0001) #include <iom8515v.h>
(0002) #include"ForATmega8515.h"
(0003) 
(0004) void delay(uint ticks);
(0005) void display(uchar left,uchar right);
(0006) 
(0007) void main()
(0008) {
(0009)  uchar count=0;
_main:
  softdelay            --> R20
  count                --> R22
    0050 2766      CLR	R22
(0010)  uint softdelay=1000;
    0051 EE48      LDI	R20,0xE8
    0052 E053      LDI	R21,3
(0011)  init_devices();
    0053 DFF3      RCALL	_init_devices
    0054 C017      RJMP	0x006C
(0012)  while(1)
(0013)  {
(0014)  while(softdelay--)display(count/10,count%10);
    0055 E01A      LDI	R17,0xA
    0056 2F06      MOV	R16,R22
    0057 D043      RCALL	mod8u
    0058 2F20      MOV	R18,R16
    0059 E01A      LDI	R17,0xA
    005A 2F06      MOV	R16,R22
    005B D041      RCALL	div8u
    005C D01F      RCALL	_display
    005D 011A      MOVW	R2,R20
    005E 5041      SUBI	R20,1
    005F 4050      SBCI	R21,0
    0060 2022      TST	R2
    0061 F799      BNE	0x0055
    0062 2033      TST	R3
    0063 F789      BNE	0x0055
(0015)  softdelay=1000;
    0064 EE48      LDI	R20,0xE8
    0065 E053      LDI	R21,3
(0016)  if(++count==100)count=0;
    0066 2F86      MOV	R24,R22
    0067 5F8F      SUBI	R24,0xFF
    0068 2F68      MOV	R22,R24
    0069 3664      CPI	R22,0x64
    006A F409      BNE	0x006C
    006B 2766      CLR	R22
    006C CFF0      RJMP	0x005D
    006D 9508      RET
_delay:
  i                    --> R20
  ticks                --> R16
    006E D04E      RCALL	push_gset1
(0017)  }
(0018) }
(0019) 
(0020) void delay(uint ticks)
(0021) {
(0022)  uchar i;
(0023)  for(;ticks!=0;ticks--)for(i=200;i!=0;i--);
    006F C007      RJMP	0x0077
    0070 EC48      LDI	R20,0xC8
    0071 C001      RJMP	0x0073
    0072 954A      DEC	R20
    0073 2344      TST	R20
    0074 F7E9      BNE	0x0072
    0075 5001      SUBI	R16,1
    0076 4010      SBCI	R17,0
    0077 3000      CPI	R16,0
    0078 0701      CPC	R16,R17
    0079 F7B1      BNE	0x0070
    007A D045      RCALL	pop_gset1
    007B 9508      RET
_display:
  right                --> R20
  left                 --> R22
    007C D03E      RCALL	push_gset2
    007D 2F42      MOV	R20,R18
    007E 2F60      MOV	R22,R16
(0024) }
(0025) 
(0026) void display(uchar left,uchar right)
(0027) {
(0028)  PORTA=Tab[left];//查表显示数码管
    007F E282      LDI	R24,0x22
    0080 E090      LDI	R25,0
    0081 2FE6      MOV	R30,R22
    0082 27FF      CLR	R31
    0083 0FE8      ADD	R30,R24
    0084 1FF9      ADC	R31,R25
    0085 91E4      LPM	R30,0(Z)
    0086 BBEB      OUT	0x1B,R30
(0029)  PORTC&=~SEG0;  //选通左边的数码管
    0087 98AF      CBI	0x15,7
(0030)  delay(1);		//延时
    0088 E001      LDI	R16,1
    0089 E010      LDI	R17,0
    008A DFE3      RCALL	_delay
(0031)  PORTC|=SEG0;   //关左边的数码管
    008B 9AAF      SBI	0x15,7
(0032)  PORTA=Tab[right];//查表显示数码管
    008C E282      LDI	R24,0x22
    008D E090      LDI	R25,0
    008E 2FE4      MOV	R30,R20
    008F 27FF      CLR	R31
    0090 0FE8      ADD	R30,R24
    0091 1FF9      ADC	R31,R25
    0092 91E4      LPM	R30,0(Z)
    0093 BBEB      OUT	0x1B,R30
(0033)  PORTC&=~SEG1;		//选通右边的数码管			  
    0094 98AE      CBI	0x15,6
(0034)  delay(1);
    0095 E001      LDI	R16,1
    0096 E010      LDI	R17,0
    0097 DFD6      RCALL	_delay
(0035)  PORTC|=SEG1;    //关右边的数码管
FILE: <library>
    0098 9AAE      SBI	0x15,6
    0099 D019      RCALL	pop_gset2
    009A 9508      RET
mod8u:
    009B 9468      BSET	6
    009C C001      RJMP	xdiv8u
div8u:
    009D 94E8      BCLR	6
xdiv8u:
    009E 932A      ST	R18,-Y
    009F 92FA      ST	R15,-Y
    00A0 92EA      ST	R14,-Y
    00A1 24FF      CLR	R15
    00A2 24EE      CLR	R14
    00A3 E120      LDI	R18,0x10
    00A4 0F00      LSL	R16
    00A5 1CFF      ROL	R15
    00A6 1CEE      ROL	R14
    00A7 16E1      CP	R14,R17
    00A8 F010      BCS	0x00AB
    00A9 1AE1      SUB	R14,R17
    00AA 9503      INC	R16
    00AB 952A      DEC	R18
    00AC F7B9      BNE	0x00A4
    00AD F40E      BRTC	0x00AF
    00AE 2D0E      MOV	R16,R14
    00AF 90E9      LD	R14,Y+
    00B0 90F9      LD	R15,Y+
    00B1 9129      LD	R18,Y+
    00B2 9508      RET
pop_gset2:
    00B3 E0E2      LDI	R30,2
    00B4 C00C      RJMP	pop
push_gset5:
    00B5 92FA      ST	R15,-Y
    00B6 92EA      ST	R14,-Y
push_gset4:
    00B7 92DA      ST	R13,-Y
    00B8 92CA      ST	R12,-Y
push_gset3:
    00B9 92BA      ST	R11,-Y
    00BA 92AA      ST	R10,-Y
push_gset2:
    00BB 937A      ST	R23,-Y
    00BC 936A      ST	R22,-Y
push_gset1:
    00BD 935A      ST	R21,-Y
    00BE 934A      ST	R20,-Y
    00BF 9508      RET
pop_gset1:
    00C0 E0E1      LDI	R30,1
pop:
    00C1 9149      LD	R20,Y+
    00C2 9159      LD	R21,Y+
    00C3 FDE0      SBRC	R30,0
    00C4 9508      RET
    00C5 9169      LD	R22,Y+
    00C6 9179      LD	R23,Y+
    00C7 FDE1      SBRC	R30,1
    00C8 9508      RET
    00C9 90A9      LD	R10,Y+
    00CA 90B9      LD	R11,Y+
    00CB FDE2      SBRC	R30,2
    00CC 9508      RET
    00CD 90C9      LD	R12,Y+
    00CE 90D9      LD	R13,Y+
    00CF FDE3      SBRC	R30,3
    00D0 9508      RET
    00D1 90E9      LD	R14,Y+
    00D2 90F9      LD	R15,Y+
    00D3 9508      RET

⌨️ 快捷键说明

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