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

📄 bujindianji.lst

📁 步进电机的控制程序
💻 LST
字号:
__start:
__text_start:
    0013 E5CF      LDI	R28,0x5F
    0014 E0D4      LDI	R29,4
    0015 BFCD      OUT	0x3D,R28
    0016 BFDE      OUT	0x3E,R29
    0017 51C0      SUBI	R28,0x10
    0018 40D0      SBCI	R29,0
    0019 EA0A      LDI	R16,0xAA
    001A 8308      STD	Y+0,R16
    001B 2400      CLR	R0
    001C E6E0      LDI	R30,0x60
    001D E0F0      LDI	R31,0
    001E E010      LDI	R17,0
    001F 36E0      CPI	R30,0x60
    0020 07F1      CPC	R31,R17
    0021 F011      BEQ	0x0024
    0022 9201      ST	R0,Z+
    0023 CFFB      RJMP	0x001F
    0024 8300      STD	Z+0,R16
    0025 E2E6      LDI	R30,0x26
    0026 E0F0      LDI	R31,0
    0027 E6A0      LDI	R26,0x60
    0028 E0B0      LDI	R27,0
    0029 E010      LDI	R17,0
    002A 32E6      CPI	R30,0x26
    002B 07F1      CPC	R31,R17
    002C F021      BEQ	0x0031
    002D 95C8      LPM
    002E 9631      ADIW	R30,1
    002F 920D      ST	R0,X+
    0030 CFF9      RJMP	0x002A
    0031 D047      RCALL	_main
_exit:
    0032 CFFF      RJMP	_exit
FILE: F:\张应红单片机资料\ICCAVR编程学习\步进电机驱动\bujin.c
(0001) 
(0002) #include <iom8v.h>
(0003) #include <macros.h>
(0004) #include <stdio.h>
(0005) 
(0006) void delay_1ms(void)
(0007) {
(0008)  unsigned int i;
(0009)  for(i=0;i<8*143-2;i++)
_delay_1ms:
  i                    --> R16
    0033 2700      CLR	R16
    0034 2711      CLR	R17
    0035 C002      RJMP	0x0038
    0036 5F0F      SUBI	R16,0xFF
    0037 4F1F      SBCI	R17,0xFF
    0038 3706      CPI	R16,0x76
    0039 E0E4      LDI	R30,4
    003A 071E      CPC	R17,R30
    003B F3D0      BCS	0x0036
    003C 9508      RET
_delay_ms:
  i                    --> R20
  n                    --> R22
    003D D048      RCALL	push_gset2
    003E 01B8      MOVW	R22,R16
(0010)  ;
(0011)  }
(0012)  
(0013) void delay_ms(unsigned int n)
(0014) {
(0015)  unsigned int i=0;
    003F 2744      CLR	R20
    0040 2755      CLR	R21
(0016)  for(i=0;i<n;i++)
    0041 C003      RJMP	0x0045
(0017)  {
(0018)   delay_1ms();
    0042 DFF0      RCALL	_delay_1ms
    0043 5F4F      SUBI	R20,0xFF
    0044 4F5F      SBCI	R21,0xFF
    0045 1746      CP	R20,R22
    0046 0757      CPC	R21,R23
    0047 F3D0      BCS	0x0042
    0048 D035      RCALL	pop_gset2
    0049 9508      RET
(0019)   }
(0020)  }
(0021) 
(0022) void delay_1us(void)
(0023) {
(0024)  asm("nop");
_delay_1us:
    004A 0000      NOP
    004B 9508      RET
_delay_us:
  i                    --> R20
  n                    --> R22
    004C D039      RCALL	push_gset2
    004D 01B8      MOVW	R22,R16
(0025)  }
(0026)  
(0027) void delay_us(unsigned int n)
(0028) {
(0029)  unsigned int i=0;
    004E 2744      CLR	R20
    004F 2755      CLR	R21
(0030)  for(i=0;i<n;i++)
    0050 C003      RJMP	0x0054
(0031)  delay_1us();
    0051 DFF8      RCALL	_delay_1us
    0052 5F4F      SUBI	R20,0xFF
    0053 4F5F      SBCI	R21,0xFF
    0054 1746      CP	R20,R22
    0055 0757      CPC	R21,R23
    0056 F3D0      BCS	0x0051
    0057 D026      RCALL	pop_gset2
    0058 9508      RET
(0032)  }
(0033)  
(0034) 
(0035) void port_init(void)
(0036) {
(0037)  PORTB = 0xff;
_port_init:
    0059 EF8F      LDI	R24,0xFF
    005A BB88      OUT	0x18,R24
(0038)  DDRB  = 0xff;
    005B BB87      OUT	0x17,R24
(0039)  PORTC = 0x00; //m103 output only
    005C 2422      CLR	R2
    005D BA25      OUT	0x15,R2
(0040)  DDRC  = 0x00;
    005E BA24      OUT	0x14,R2
(0041)  PORTD = 0xff;
    005F BB82      OUT	0x12,R24
(0042)  DDRD  = 0xff;
    0060 BB81      OUT	0x11,R24
    0061 9508      RET
_step:
  i                    --> R20
    0062 D025      RCALL	push_gset1
(0043) }
(0044) 
(0045) void step(void)
(0046) {
(0047)   unsigned i;
(0048)   for(i=4;i<8;i++)
    0063 E044      LDI	R20,4
    0064 E050      LDI	R21,0
    0065 C00D      RJMP	0x0073
(0049)     {
(0050)      PORTD=~(1<<i);
    0066 E001      LDI	R16,1
    0067 E010      LDI	R17,0
    0068 019A      MOVW	R18,R20
    0069 D035      RCALL	lsl16
    006A 0118      MOVW	R2,R16
    006B 9420      COM	R2
    006C 9430      COM	R3
    006D BA22      OUT	0x12,R2
(0051) 	 delay_ms(3);
    006E E003      LDI	R16,3
    006F E010      LDI	R17,0
    0070 DFCC      RCALL	_delay_ms
    0071 5F4F      SUBI	R20,0xFF
    0072 4F5F      SBCI	R21,0xFF
    0073 3048      CPI	R20,0x8
    0074 E0E0      LDI	R30,0
    0075 075E      CPC	R21,R30
    0076 F378      BCS	0x0066
    0077 D013      RCALL	pop_gset1
    0078 9508      RET
(0052) 	 }
(0053)   }
(0054) 
(0055) void main(void)
(0056) {
(0057)  port_init();
_main:
    0079 DFDF      RCALL	_port_init
    007A C001      RJMP	0x007C
(0058)  while(1)
(0059)  {
(0060)  step(); 
FILE: <library>
    007B DFE6      RCALL	_step
    007C CFFE      RJMP	0x007B
    007D 9508      RET
pop_gset2:
    007E E0E2      LDI	R30,2
    007F C00C      RJMP	pop
push_gset5:
    0080 92FA      ST	R15,-Y
    0081 92EA      ST	R14,-Y
push_gset4:
    0082 92DA      ST	R13,-Y
    0083 92CA      ST	R12,-Y
push_gset3:
    0084 92BA      ST	R11,-Y
    0085 92AA      ST	R10,-Y
push_gset2:
    0086 937A      ST	R23,-Y
    0087 936A      ST	R22,-Y
push_gset1:
    0088 935A      ST	R21,-Y
    0089 934A      ST	R20,-Y
    008A 9508      RET
pop_gset1:
    008B E0E1      LDI	R30,1
pop:
    008C 9149      LD	R20,Y+
    008D 9159      LD	R21,Y+
    008E FDE0      SBRC	R30,0
    008F 9508      RET
    0090 9169      LD	R22,Y+
    0091 9179      LD	R23,Y+
    0092 FDE1      SBRC	R30,1
    0093 9508      RET
    0094 90A9      LD	R10,Y+
    0095 90B9      LD	R11,Y+
    0096 FDE2      SBRC	R30,2
    0097 9508      RET
    0098 90C9      LD	R12,Y+
    0099 90D9      LD	R13,Y+
    009A FDE3      SBRC	R30,3
    009B 9508      RET
    009C 90E9      LD	R14,Y+
    009D 90F9      LD	R15,Y+
    009E 9508      RET
lsl16:
    009F 2322      TST	R18
    00A0 F021      BEQ	0x00A5
    00A1 0F00      LSL	R16
    00A2 1F11      ROL	R17
    00A3 952A      DEC	R18
    00A4 CFFA      RJMP	lsl16
    00A5 9508      RET

⌨️ 快捷键说明

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