📄 bujindianji.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 + -