?? multistep.lst
字號:
__start:
__text_start:
160E EFCF LDI R28,0xFF
160F E1D0 LDI R29,0x10
1610 BFCD OUT 0x3D,R28
1611 BFDE OUT 0x3E,R29
1612 51C0 SUBI R28,0x10
1613 40D0 SBCI R29,0
1614 EA0A LDI R16,0xAA
1615 8308 STD Y+0,R16
1616 2400 CLR R0
1617 E1E8 LDI R30,0x18
1618 E0F1 LDI R31,1
1619 E011 LDI R17,1
161A 31E8 CPI R30,0x18
161B 07F1 CPC R31,R17
161C F011 BEQ 0x161F
161D 9201 ST R0,Z+
161E CFFB RJMP 0x161A
161F 8300 STD Z+0,R16
1620 E0E4 LDI R30,4
1621 E2FC LDI R31,0x2C
1622 E0A0 LDI R26,0
1623 E0B1 LDI R27,1
1624 E21C LDI R17,0x2C
1625 31EC CPI R30,0x1C
1626 07F1 CPC R31,R17
1627 F021 BEQ 0x162C
1628 95C8 LPM
1629 9631 ADIW R30,1
162A 920D ST R0,X+
162B CFF9 RJMP 0x1625
162C 940E206A CALL _main
_exit:
162E CFFF RJMP _exit
FILE: D:\multistep\multistep.c
(0001) //************************************************************
(0002) //12路PWM波程序
(0003) //王超炎2005-05-05
(0004) //********************************************************
(0005) #include <iom128v.h>
(0006) #include <macros.h>
(0007) #include "data.h"
(0008) unsigned int N1=4;
(0009) unsigned int N2=20;
(0010) unsigned int N3=20;
(0011) unsigned int N4=10;
(0012) unsigned int cycle_start1=192;
(0013) unsigned int cycle_start2=3;
(0014) unsigned int cycle_start3=2;
(0015) unsigned int cycle_start4=2;
(0016) unsigned int totalstep1=392;
(0017) unsigned int totalstep2=11;
(0018) unsigned int totalstep3=6;
(0019) unsigned int totalstep4=7;
(0020) void port_init(void)
(0021) {
(0022) DDRA = 0xFF;
_port_init:
162F EF8F LDI R24,0xFF
1630 BB8A OUT 0x1A,R24
(0023) PORTA = 0x00;
1631 2422 CLR R2
1632 BA2B OUT 0x1B,R2
(0024) DDRC = 0xFF;
1633 BB84 OUT 0x14,R24
(0025) PORTC = 0x00;
1634 BA25 OUT 0x15,R2
(0026) }
1635 9508 RET
(0027)
(0028) void timer1_init(void)
(0029) {
(0030) TCCR1A = 0x00;
_timer1_init:
1636 2422 CLR R2
1637 BC2F OUT 0x2F,R2
(0031) TCNT1= 0x00;
1638 2433 CLR R3
1639 BC3D OUT 0x2D,R3
163A BC2C OUT 0x2C,R2
(0032)
(0033)
(0034) }
163B 9508 RET
(0035) void ClrAll(void)
(0036) {
(0037) PORTA = 0x00;
_ClrAll:
163C 2422 CLR R2
163D BA2B OUT 0x1B,R2
(0038) PORTC = 0x00;
163E BA25 OUT 0x15,R2
(0039) }
163F 9508 RET
_Motion_init:
i --> R20
t --> R20
temp2 --> R14
temp1 --> R12
j --> R10
temp --> R22
1640 940E20EF CALL push_gset5
(0040)
(0041)
(0042)
(0043)
(0044) //*******************************************************************************
(0045) //函數名: Motion_init(void)
(0046) //參 數:無
(0047) //功 能:初始化動作
(0048) //*******************************************************************************
(0049) void Motion_init(void)
(0050) { int i=0,j=0,t=0,temp=0,temp1,temp2;
1642 2744 CLR R20
1643 2755 CLR R21
1644 24AA CLR R10
1645 24BB CLR R11
1646 2766 CLR R22
1647 2777 CLR R23
(0051) for(t=0;t<50;t++)
(0052) { for(j=1;j<9;j++)
1648 E081 LDI R24,1
1649 E090 LDI R25,0
164A 015C MOVW R10,R24
(0053) {
(0054) if(j<5)
164B 01C5 MOVW R24,R10
164C 3085 CPI R24,5
164D E0E0 LDI R30,0
164E 079E CPC R25,R30
164F F4BC BGE 0x1667
(0055) {PORTA|=(1<<(j-1));
1650 019C MOVW R18,R24
1651 5021 SUBI R18,1
1652 4030 SBCI R19,0
1653 E001 LDI R16,1
1654 E010 LDI R17,0
1655 940E20F3 CALL lsl16
1657 B22B IN R2,0x1B
1658 2433 CLR R3
1659 2A20 OR R2,R16
165A 2A31 OR R3,R17
165B BA2B OUT 0x1B,R2
(0056) temp2=2250+(j-1)*3750;
165C EA06 LDI R16,0xA6
165D E01E LDI R17,0xE
165E 0195 MOVW R18,R10
165F 940E20B9 CALL empy16s
1661 01C8 MOVW R24,R16
1662 5A86 SUBI R24,0xA6
1663 409E SBCI R25,0xE
1664 5386 SUBI R24,0x36
1665 4F97 SBCI R25,0xF7
1666 017C MOVW R14,R24
(0057) }
(0058) PORTC|=(1<<(j-1));
1667 0195 MOVW R18,R10
1668 5021 SUBI R18,1
1669 4030 SBCI R19,0
166A E001 LDI R16,1
166B E010 LDI R17,0
166C 940E20F3 CALL lsl16
166E B225 IN R2,0x15
166F 2433 CLR R3
1670 2A20 OR R2,R16
1671 2A31 OR R3,R17
1672 BA25 OUT 0x15,R2
(0059) temp1=2250+(j-1)*3750;
1673 EA06 LDI R16,0xA6
1674 E01E LDI R17,0xE
1675 0195 MOVW R18,R10
1676 940E20B9 CALL empy16s
1678 01C8 MOVW R24,R16
1679 5A86 SUBI R24,0xA6
167A 409E SBCI R25,0xE
167B 5386 SUBI R24,0x36
167C 4F97 SBCI R25,0xF7
167D 016C MOVW R12,R24
(0060) do{ temp=TCNT1;
167E B56C IN R22,0x2C
167F B57D IN R23,0x2D
(0061) if(temp>temp1)PORTC&=~(1<<(j-1));
1680 16C6 CP R12,R22
1681 06D7 CPC R13,R23
1682 F47C BGE 0x1692
1683 0195 MOVW R18,R10
1684 5021 SUBI R18,1
1685 4030 SBCI R19,0
1686 E001 LDI R16,1
1687 E010 LDI R17,0
1688 940E20F3 CALL lsl16
168A 0118 MOVW R2,R16
168B 9420 COM R2
168C 9430 COM R3
168D B245 IN R4,0x15
168E 2455 CLR R5
168F 2042 AND R4,R2
1690 2053 AND R5,R3
1691 BA45 OUT 0x15,R4
(0062) if(temp>temp2)PORTA&=~(1<<(j-1));
1692 16E6 CP R14,R22
1693 06F7 CPC R15,R23
1694 F47C BGE 0x16A4
1695 0195 MOVW R18,R10
1696 5021 SUBI R18,1
1697 4030 SBCI R19,0
1698 E001 LDI R16,1
1699 E010 LDI R17,0
169A 940E20F3 CALL lsl16
169C 0118 MOVW R2,R16
169D 9420 COM R2
169E 9430 COM R3
169F B24B IN R4,0x1B
16A0 2455 CLR R5
16A1 2042 AND R4,R2
16A2 2053 AND R5,R3
16A3 BA4B OUT 0x1B,R4
(0063) }while(temp<j*3750);
16A4 EA06 LDI R16,0xA6
16A5 E01E LDI R17,0xE
16A6 0195 MOVW R18,R10
16A7 940E20B9 CALL empy16s
16A9 1760 CP R22,R16
16AA 0771 CPC R23,R17
16AB F294 BLT 0x167E
16AC 01C5 MOVW R24,R10
16AD 9601 ADIW R24,1
16AE 015C MOVW R10,R24
16AF 3089 CPI R24,0x9
16B0 E0E0 LDI R30,0
16B1 079E CPC R25,R30
16B2 F40C BGE 0x16B4
16B3 CF97 RJMP 0x164B
(0064) }
(0065) TCNT1=0;
16B4 2422 CLR R2
16B5 2433 CLR R3
16B6 BC3D OUT 0x2D,R3
16B7 BC2C OUT 0x2C,R2
16B8 5F4F SUBI R20,0xFF
16B9 4F5F SBCI R21,0xFF
16BA 3342 CPI R20,0x32
16BB E0E0 LDI R30,0
16BC 075E CPC R21,R30
16BD F40C BGE 0x16BF
16BE CF89 RJMP 0x1648
(0066) }
(0067) }
16BF 940E20C9 CALL pop_gset5
16C1 9508 RET
_Motion_excute:
t --> R20
i --> R6
temp2 --> R10
temp1 --> R12
j --> R14
temp --> R22
p --> R8
16C2 940E20EF CALL push_gset5
16C4 0148 MOVW R8,R16
(0068) //*******************************************************************************
(0069) //函數名: Motion()
(0070) //參 數:
(0071) //功 能:
(0072) //*******************************************************************************
(0073)
(0074) void Motion_excute(unsigned int p)
(0075) {
(0076) unsigned int i=0,t=0,j=0;
16C5 2466 CLR R6
16C6 2477 CLR R7
16C7 2744 CLR R20
16C8 2755 CLR R21
16C9 24EE CLR R14
16CA 24FF CLR R15
(0077) unsigned int temp1=0,temp2=0,temp=0;
16CB 24CC CLR R12
16CC 24DD CLR R13
16CD 24AA CLR R10
16CE 24BB CLR R11
16CF 2766 CLR R22
16D0 2777 CLR R23
(0078) if(p==1)
16D1 01C4 MOVW R24,R8
16D2 3081 CPI R24,1
16D3 E0E0 LDI R30,0
16D4 079E CPC R25,R30
16D5 F009 BEQ 0x16D7
16D6 C293 RJMP 0x196A
(0079) { for(i=0;i<cycle_start1;i++)
16D7 C0CB RJMP 0x17A3
(0080) for(t=angle1[i][0];t>0;t--)
16D8 E10A LDI R16,0x1A
16D9 E010 LDI R17,0
16DA 0193 MOVW R18,R6
16DB 940E20B9 CALL empy16s
16DD 01F8 MOVW R30,R16
16DE E88C LDI R24,0x8C
16DF E090 LDI R25,0
16E0 0FE8 ADD R30,R24
16E1 1FF9 ADC R31,R25
16E2 9145 LPM R20,Z+
16E3 9154 LPM R21,0(Z)
16E4 C0B7 RJMP 0x179C
(0081) { TCNT1=0x00;
16E5 2422 CLR R2
16E6 2433 CLR R3
16E7 BC3D OUT 0x2D,R3
16E8 BC2C OUT 0x2C,R2
(0082) for(j=1;j<9;j++)
16E9 E081 LDI R24,1
16EA E090 LDI R25,0
16EB 017C MOVW R14,R24
16EC C0A3 RJMP 0x1790
(0083) {if(j<5)
16ED 01C7 MOVW R24,R14
16EE 3085 CPI R24,5
16EF E0E0 LDI R30,0
16F0 079E CPC R25,R30
16F1 F008 BCS 0x16F3
16F2 C037 RJMP 0x172A
(0084) {PORTA|=(1<<(j-1));
16F3 019C MOVW R18,R24
16F4 5021 SUBI R18,1
16F5 4030 SBCI R19,0
16F6 E001 LDI R16,1
16F7 E010 LDI R17,0
16F8 940E20F3 CALL lsl16
16FA B22B IN R2,0x1B
16FB 2433 CLR R3
16FC 2A20 OR R2,R16
16FD 2A31 OR R3,R17
16FE BA2B OUT 0x1B,R2
(0085) temp2=(50*angle1[i][j+8]/3+750)+(j-1)*3750;}
16FF E10A LDI R16,0x1A
1700 E010 LDI R17,0
1701 0193 MOVW R18,R6
1702 940E20B9 CALL empy16s
1704 0118 MOVW R2,R16
1705 E88C LDI R24,0x8C
1706 E090 LDI R25,0
1707 0E28 ADD R2,R24
1708 1E39 ADC R3,R25
1709 0197 MOVW R18,R14
170A 5F28 SUBI R18,0xF8
170B 4F3F SBCI R19,0xFF
170C E002 LDI R16,2
170D E010 LDI R17,0
170E 940E20B9 CALL empy16s
1710 01F8 MOVW R30,R16
1711 0DE2 ADD R30,R2
1712 1DF3 ADC R31,R3
1713 9125 LPM R18,Z+
1714 9134 LPM R19,0(Z)
1715 E302 LDI R16,0x32
1716 E010 LDI R17,0
1717 940E20B9 CALL empy16s
1719 E023 LDI R18,3
171A E030 LDI R19,0
171B 940E209F CALL div16u
171D 01C8 MOVW R24,R16
171E 5182 SUBI R24,0x12
171F 4F9D SBCI R25,0xFD
1720 0197 MOVW R18,R14
1721 5021 SUBI R18,1
1722 4030 SBCI R19,0
1723 EA06 LDI R16,0xA6
1724 E01E LDI R17,0xE
1725 940E20B9 CALL empy16s
1727 015C MOVW R10,R24
1728 0EA0 ADD R10,R16
1729 1EB1 ADC R11,R17
(0086) PORTC|=(1<<(j-1));
172A 0197 MOVW R18,R14
172B 5021 SUBI R18,1
172C 4030 SBCI R19,0
172D E001 LDI R16,1
172E E010 LDI R17,0
172F 940E20F3 CALL lsl16
1731 B225 IN R2,0x15
1732 2433 CLR R3
1733 2A20 OR R2,R16
1734 2A31 OR R3,R17
1735 BA25 OUT 0x15,R2
(0087) temp1=(50*angle1[i][j]/3+750)+(j-1)*3750;
1736 E10A LDI R16,0x1A
1737 E010 LDI R17,0
1738 0193 MOVW R18,R6
1739 940E20B9 CALL empy16s
173B 0118 MOVW R2,R16
173C E88C LDI R24,0x8C
173D E090 LDI R25,0
173E 0E28 ADD R2,R24
173F 1E39 ADC R3,R25
1740 E002 LDI R16,2
1741 E010 LDI R17,0
1742 0197 MOVW R18,R14
1743 940E20B9 CALL empy16s
1745 01F8 MOVW R30,R16
1746 0DE2 ADD R30,R2
1747 1DF3 ADC R31,R3
1748 9125 LPM R18,Z+
1749 9134 LPM R19,0(Z)
174A E302 LDI R16,0x32
174B E010 LDI R17,0
174C 940E20B9 CALL empy16s
174E E023 LDI R18,3
174F E030 LDI R19,0
1750 940E209F CALL div16u
1752 01C8 MOVW R24,R16
1753 5182 SUBI R24,0x12
1754 4F9D SBCI R25,0xFD
1755 0197 MOVW R18,R14
1756 5021 SUBI R18,1
1757 4030 SBCI R19,0
1758 EA06 LDI R16,0xA6
1759 E01E LDI R17,0xE
175A 940E20B9 CALL empy16s
175C 016C MOVW R12,R24
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -