📄 m16_horse.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 D050 RCALL _main
_exit:
0032 CFFF RJMP _exit
_Delay:
j --> R20
i --> R16
0033 D072 RCALL push_gset1
FILE: G:\M16_Horse\M16_Horse.c
(0001) #include<iom8.h>
(0002) #define uchar unsigned char
(0003) #define uint unsigned int
(0004)
(0005) void Delay(uchar i)
(0006) {
(0007) uchar j;
(0008) for(;i!=0;i--)
0034 C006 RJMP 0x003B
(0009) {
(0010) for(j=250;j!=0;j--);
0035 EF4A LDI R20,0xFA
0036 C001 RJMP 0x0038
0037 954A DEC R20
0038 2344 TST R20
0039 F7E9 BNE 0x0037
003A 950A DEC R16
003B 2300 TST R16
003C F7C1 BNE 0x0035
003D D06B RCALL pop_gset1
003E 9508 RET
_Horse:
i --> R16
003F D066 RCALL push_gset1
(0011) }
(0012) }
(0013)
(0014) void Horse(uchar i)
(0015) {
(0016) switch(i)
0040 2F40 MOV R20,R16
0041 2755 CLR R21
0042 3040 CPI R20,0
0043 0745 CPC R20,R21
0044 F109 BEQ 0x0066
0045 3041 CPI R20,1
0046 E0E0 LDI R30,0
0047 075E CPC R21,R30
0048 F101 BEQ 0x0069
0049 3042 CPI R20,2
004A E0E0 LDI R30,0
004B 075E CPC R21,R30
004C F0F9 BEQ 0x006C
004D 3043 CPI R20,3
004E E0E0 LDI R30,0
004F 075E CPC R21,R30
0050 F0F1 BEQ 0x006F
0051 3044 CPI R20,4
0052 E0E0 LDI R30,0
0053 075E CPC R21,R30
0054 F0E9 BEQ 0x0072
0055 3045 CPI R20,5
0056 E0E0 LDI R30,0
0057 075E CPC R21,R30
0058 F0E1 BEQ 0x0075
0059 3046 CPI R20,6
005A E0E0 LDI R30,0
005B 075E CPC R21,R30
005C F0D9 BEQ 0x0078
005D 3047 CPI R20,7
005E E0E0 LDI R30,0
005F 075E CPC R21,R30
0060 F0D1 BEQ 0x007B
0061 3048 CPI R20,0x8
0062 E0E0 LDI R30,0
0063 075E CPC R21,R30
0064 F0C9 BEQ 0x007E
0065 C01A RJMP 0x0080
(0017) {
(0018) case 0:PORTB=0x00;break;
0066 2422 CLR R2
0067 BA28 OUT 0x18,R2
0068 C017 RJMP 0x0080
(0019) case 1:PORTB=0x01;break;
0069 E081 LDI R24,1
006A BB88 OUT 0x18,R24
006B C014 RJMP 0x0080
(0020) case 2:PORTB=0x03;break;
006C E083 LDI R24,3
006D BB88 OUT 0x18,R24
006E C011 RJMP 0x0080
(0021) case 3:PORTB=0x07;break;
006F E087 LDI R24,7
0070 BB88 OUT 0x18,R24
0071 C00E RJMP 0x0080
(0022) case 4:PORTB=0x0f;break;
0072 E08F LDI R24,0xF
0073 BB88 OUT 0x18,R24
0074 C00B RJMP 0x0080
(0023) case 5:PORTB=0x1f;break;
0075 E18F LDI R24,0x1F
0076 BB88 OUT 0x18,R24
0077 C008 RJMP 0x0080
(0024) case 6:PORTB=0x3f;break;
0078 E38F LDI R24,0x3F
0079 BB88 OUT 0x18,R24
007A C005 RJMP 0x0080
(0025) case 7:PORTB=0x7f;break;
007B E78F LDI R24,0x7F
007C BB88 OUT 0x18,R24
007D C002 RJMP 0x0080
(0026) case 8:PORTB=0xff;break;
007E EF8F LDI R24,0xFF
007F BB88 OUT 0x18,R24
(0027) default:break;
0080 D028 RCALL pop_gset1
0081 9508 RET
(0028) }
(0029) }
(0030)
(0031) void main()
(0032) {
(0033) uchar i;
(0034) DDRB=0xff;
_main:
i --> R20
0082 EF8F LDI R24,0xFF
0083 BB87 OUT 0x17,R24
(0035) PORTB=0xff;
0084 BB88 OUT 0x18,R24
(0036) Delay(10);
0085 E00A LDI R16,0xA
0086 DFAC RCALL _Delay
(0037) PORTB=0x00;
0087 2422 CLR R2
0088 BA28 OUT 0x18,R2
0089 C012 RJMP 0x009C
(0038) while(1)
(0039) {
(0040) for(i=0;i<9;i++)
008A 2744 CLR R20
008B C005 RJMP 0x0091
(0041) {
(0042) Horse(i);
008C 2F04 MOV R16,R20
008D DFB1 RCALL _Horse
(0043) Delay(100);
008E E604 LDI R16,0x64
008F DFA3 RCALL _Delay
0090 9543 INC R20
0091 3049 CPI R20,0x9
0092 F3C8 BCS 0x008C
(0044) }
(0045) for(i=8;i!=0;i--)
0093 E048 LDI R20,0x8
0094 C005 RJMP 0x009A
(0046) {
(0047) Horse(i);
0095 2F04 MOV R16,R20
0096 DFA8 RCALL _Horse
(0048) Delay(100);
FILE: <library>
0097 E604 LDI R16,0x64
0098 DF9A RCALL _Delay
0099 954A DEC R20
009A 2344 TST R20
009B F7C9 BNE 0x0095
009C CFED RJMP 0x008A
009D 9508 RET
push_gset5:
009E 92FA ST R15,-Y
009F 92EA ST R14,-Y
push_gset4:
00A0 92DA ST R13,-Y
00A1 92CA ST R12,-Y
push_gset3:
00A2 92BA ST R11,-Y
00A3 92AA ST R10,-Y
push_gset2:
00A4 937A ST R23,-Y
00A5 936A ST R22,-Y
push_gset1:
00A6 935A ST R21,-Y
00A7 934A ST R20,-Y
00A8 9508 RET
pop_gset1:
00A9 E0E1 LDI R30,1
pop:
00AA 9149 LD R20,Y+
00AB 9159 LD R21,Y+
00AC FDE0 SBRC R30,0
00AD 9508 RET
00AE 9169 LD R22,Y+
00AF 9179 LD R23,Y+
00B0 FDE1 SBRC R30,1
00B1 9508 RET
00B2 90A9 LD R10,Y+
00B3 90B9 LD R11,Y+
00B4 FDE2 SBRC R30,2
00B5 9508 RET
00B6 90C9 LD R12,Y+
00B7 90D9 LD R13,Y+
00B8 FDE3 SBRC R30,3
00B9 9508 RET
00BA 90E9 LD R14,Y+
00BB 90F9 LD R15,Y+
00BC 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -