📄 led-8-2.lst
字号:
__start:
__text_start:
72 EFCF LDI R28,0xFF
73 E2D1 LDI R29,0x21
74 BFCD OUT 0x3D,R28
75 BFDE OUT 0x3E,R29
76 51CE SUBI R28,0x1E
77 40D0 SBCI R29,0
78 EA0A LDI R16,0xAA
79 8308 STD Y+0,R16
7A 2400 CLR R0
7B E0E0 LDI R30,0
7C E0F2 LDI R31,2
7D E012 LDI R17,2
7E 32E0 CPI R30,0x20
7F 07F1 CPC R31,R17
80 F011 BEQ 0x0083
81 9201 ST R0,Z+
82 CFFB RJMP 0x007E
83 8300 STD Z+0,R16
84 EEE4 LDI R30,0xE4
85 E0F0 LDI R31,0
86 E0A0 LDI R26,0
87 E0B2 LDI R27,2
88 E010 LDI R17,0
89 E000 LDI R16,0
8A BF0B OUT 0x3B,R16
8B 3EE4 CPI R30,0xE4
8C 07F1 CPC R31,R17
8D F021 BEQ 0x0092
8E 95C8 LPM
8F 9631 ADIW R30,1
90 920D ST R0,X+
91 CFF9 RJMP 0x008B
92 940E 044F CALL _main
_exit:
94 CFFF RJMP _exit
_encoder:
code --> R20
num --> R16
95 940E 055E CALL push_xgsetF000
FILE: E:\16实验程序\数码管显示2\encoder.h
(0001) //数码管译码函数
(0002) uchar encoder(uchar num)
(0003) {
(0004) uchar code;
(0005) switch(num)
97 2F60 MOV R22,R16
98 2777 CLR R23
99 3060 CPI R22,0
9A 0767 CPC R22,R23
9B F129 BEQ 0x00C1
9C 3061 CPI R22,1
9D E0E0 LDI R30,0
9E 077E CPC R23,R30
9F F119 BEQ 0x00C3
A0 3062 CPI R22,2
A1 E0E0 LDI R30,0
A2 077E CPC R23,R30
A3 F109 BEQ 0x00C5
A4 3063 CPI R22,3
A5 E0E0 LDI R30,0
A6 077E CPC R23,R30
A7 F0F9 BEQ 0x00C7
A8 3064 CPI R22,4
A9 E0E0 LDI R30,0
AA 077E CPC R23,R30
AB F0E9 BEQ 0x00C9
AC 3065 CPI R22,5
AD E0E0 LDI R30,0
AE 077E CPC R23,R30
AF F0D9 BEQ 0x00CB
B0 3066 CPI R22,6
B1 E0E0 LDI R30,0
B2 077E CPC R23,R30
B3 F0C9 BEQ 0x00CD
B4 3067 CPI R22,7
B5 E0E0 LDI R30,0
B6 077E CPC R23,R30
B7 F0B9 BEQ 0x00CF
B8 3068 CPI R22,0x8
B9 E0E0 LDI R30,0
BA 077E CPC R23,R30
BB F0A9 BEQ 0x00D1
BC 3069 CPI R22,0x9
BD E0E0 LDI R30,0
BE 077E CPC R23,R30
BF F099 BEQ 0x00D3
C0 C013 RJMP 0x00D4
(0006) {
(0007) case 0x00:
(0008) code=0xc0;break;
C1 EC40 LDI R20,0xC0
C2 C011 RJMP 0x00D4
(0009) case 0x01:
(0010) code=0xf9;break;
C3 EF49 LDI R20,0xF9
C4 C00F RJMP 0x00D4
(0011) case 0x02:
(0012) code=0xa4;break;
C5 EA44 LDI R20,0xA4
C6 C00D RJMP 0x00D4
(0013) case 0x03:
(0014) code=0xb0;break;
C7 EB40 LDI R20,0xB0
C8 C00B RJMP 0x00D4
(0015) case 0x04:
(0016) code=0x99;break;
C9 E949 LDI R20,0x99
CA C009 RJMP 0x00D4
(0017) case 0x05:
(0018) code=0x92;break;
CB E942 LDI R20,0x92
CC C007 RJMP 0x00D4
(0019) case 0x06:
(0020) code=0x82;break;
CD E842 LDI R20,0x82
CE C005 RJMP 0x00D4
(0021) case 0x07:
(0022) code=0xf8;break;
CF EF48 LDI R20,0xF8
D0 C003 RJMP 0x00D4
(0023) case 0x08:
(0024) code=0x80;break;
D1 E840 LDI R20,0x80
D2 C001 RJMP 0x00D4
(0025) case 0x09:
(0026) code=0x90;break;
D3 E940 LDI R20,0x90
(0027) }
(0028) return(code);
D4 2F04 MOV R16,R20
D5 940C 0563 JMP pop_xgsetF000
FILE: E:\16实验程序\数码管显示2\ch595.h
(0001) //ch595的数据输入
(0002) #define clk 1
(0003) #define rclk 2
(0004) #define dat 3
(0005)
(0006) //延时函数
(0007) void s_ms(unsigned int t)
(0008) {
(0009) for(;t>1;t--)
_s_ms:
t --> R16
D7 C002 RJMP 0x00DA
D8 5001 SUBI R16,1
D9 4010 SBCI R17,0
DA E081 LDI R24,1
DB E090 LDI R25,0
DC 1780 CP R24,R16
DD 0791 CPC R25,R17
DE F3C8 BCS 0x00D8
DF 9508 RET
_sendbyte:
tem --> R10
i --> R22
byte --> R20
E0 940E 0568 CALL push_xgsetF00C
E2 2F40 MOV R20,R16
(0010) {
(0011) }
(0012) }
(0013) //写74hc595函数
(0014) void sendbyte(uchar byte)
(0015) {
(0016) uchar i,tem;
(0017) byte=encoder(byte); //译码
E3 2F04 MOV R16,R20
E4 DFB0 RCALL _encoder
E5 2F40 MOV R20,R16
(0018) for(i=0;i<8;i++)
E6 2766 CLR R22
E7 C00C RJMP 0x00F4
(0019) {
(0020) PORTA&=~(1<<clk);
E8 98D9 CBI 0x1B,1
(0021) tem=(byte&0x80);
E9 2F84 MOV R24,R20
EA 7880 ANDI R24,0x80
EB 2EA8 MOV R10,R24
(0022) if(tem==0)
EC 2388 TST R24
ED F411 BNE 0x00F0
(0023) {
(0024) PORTA&=~(1<<dat);
EE 98DB CBI 0x1B,3
(0025) }
EF C001 RJMP 0x00F1
(0026) else
(0027) {
(0028) PORTA|=(1<<dat);
F0 9ADB SBI 0x1B,3
(0029) }
(0030) byte=byte<<1;
F1 0F44 LSL R20
(0031) PORTA|=(1<<clk);
F2 9AD9 SBI 0x1B,1
F3 9563 INC R22
F4 3068 CPI R22,0x8
F5 F390 BCS 0x00E8
(0032) }
(0033) PORTA&=~(1<<rclk);
F6 98DA CBI 0x1B,2
(0034) s_ms(100);
F7 E604 LDI R16,0x64
F8 E010 LDI R17,0
F9 DFDD RCALL _s_ms
(0035) PORTA|=(1<<rclk);
FA 9ADA SBI 0x1B,2
FB 940C 056F JMP pop_xgsetF00C
_disa:
data --> Y,+6
FD 940E 04BB CALL push_arg4
FF 940E 0568 CALL push_xgsetF00C
FILE: E:\16实验程序\数码管显示2\led-8-2.c
(0001) //数码管显示程序
(0002) #define uchar unsigned char
(0003) #define uint unsigned int
(0004) #include<iom16v.h>
(0005) //7段译码
(0006) #include"encoder.h"
(0007) //写74hc595
(0008) #include"ch595.h"
(0009) #define ls138a 7
(0010) #define ls138b 6
(0011) #define ls138c 5
(0012) #define ls138en 4
(0013)
(0014) unsigned long a1,a2,a3,a4,a5,a6,a7,a8;
(0015)
(0016) //按10进制分解各个位
(0017) void disa(unsigned long data)
(0018) {
(0019) a8=data/10000000;
101 E840 LDI R20,0x80
102 E956 LDI R21,0x96
103 E968 LDI R22,0x98
104 E070 LDI R23,0
105 810E LDD R16,Y+6
106 811F LDD R17,Y+7
107 8528 LDD R18,Y+8
108 8539 LDD R19,Y+9
109 937A ST R23,-Y
10A 936A ST R22,-Y
10B 935A ST R21,-Y
10C 934A ST R20,-Y
10D 940E 04C0 CALL div32u
10F 9310 0201 STS a8+1,R17
111 9300 0200 STS a8,R16
113 9330 0203 STS a8+3,R19
115 9320 0202 STS a8+2,R18
(0020) a7=(data-a8*10000000)/1000000;
117 E840 LDI R20,0x80
118 E956 LDI R21,0x96
119 E968 LDI R22,0x98
11A E070 LDI R23,0
11B 933A ST R19,-Y
11C 932A ST R18,-Y
11D 931A ST R17,-Y
11E 930A ST R16,-Y
11F 018A MOVW R16,R20
120 019B MOVW R18,R22
121 940E 052A CALL empy32s
123 0118 MOVW R2,R16
124 0129 MOVW R4,R18
125 810E LDD R16,Y+6
126 811F LDD R17,Y+7
127 8528 LDD R18,Y+8
128 8539 LDD R19,Y+9
129 1902 SUB R16,R2
12A 0913 SBC R17,R3
12B 0924 SBC R18,R4
12C 0935 SBC R19,R5
12D E440 LDI R20,0x40
12E E452 LDI R21,0x42
12F E06F LDI R22,0xF
130 E070 LDI R23,0
131 937A ST R23,-Y
132 936A ST R22,-Y
133 935A ST R21,-Y
134 934A ST R20,-Y
135 940E 04C0 CALL div32u
137 9310 0205 STS a7+1,R17
139 9300 0204 STS a7,R16
13B 9330 0207 STS a7+3,R19
13D 9320 0206 STS a7+2,R18
(0021) a6=(data-a8*10000000-a7*1000000)/100000;
13F 9040 0202 LDS R4,a8+2
141 9050 0203 LDS R5,a8+3
143 9020 0200 LDS R2,a8
145 9030 0201 LDS R3,a8+1
147 E840 LDI R20,0x80
148 E956 LDI R21,0x96
149 E968 LDI R22,0x98
14A E070 LDI R23,0
14B 925A ST R5,-Y
14C 924A ST R4,-Y
14D 923A ST R3,-Y
14E 922A ST R2,-Y
14F 018A MOVW R16,R20
150 019B MOVW R18,R22
151 940E 052A CALL empy32s
153 802E LDD R2,Y+6
154 803F LDD R3,Y+7
155 8448 LDD R4,Y+8
156 8459 LDD R5,Y+9
157 1A20 SUB R2,R16
158 0A31 SBC R3,R17
159 0A42 SBC R4,R18
15A 0A53 SBC R5,R19
15B 9080 0206 LDS R8,a7+2
15D 9090 0207 LDS R9,a7+3
15F 9060 0204 LDS R6,a7
161 9070 0205 LDS R7,a7+1
163 E440 LDI R20,0x40
164 E452 LDI R21,0x42
165 E06F LDI R22,0xF
166 E070 LDI R23,0
167 929A ST R9,-Y
168 928A ST R8,-Y
169 927A ST R7,-Y
16A 926A ST R6,-Y
16B 018A MOVW R16,R20
16C 019B MOVW R18,R22
16D 940E 052A CALL empy32s
16F 1A20 SUB R2,R16
170 0A31 SBC R3,R17
171 0A42 SBC R4,R18
172 0A53 SBC R5,R19
173 EA40 LDI R20,0xA0
174 E856 LDI R21,0x86
175 E061 LDI R22,1
176 E070 LDI R23,0
177 937A ST R23,-Y
178 936A ST R22,-Y
179 935A ST R21,-Y
17A 934A ST R20,-Y
17B 0181 MOVW R16,R2
17C 0192 MOVW R18,R4
17D 940E 04C0 CALL div32u
17F 9310 0209 STS a6+1,R17
181 9300 0208 STS a6,R16
183 9330 020B STS a6+3,R19
185 9320 020A STS a6+2,R18
(0022) a5=(data-a8*10000000-a7*1000000-a6*100000)/10000;
187 9040 0202 LDS R4,a8+2
189 9050 0203 LDS R5,a8+3
18B 9020 0200 LDS R2,a8
18D 9030 0201 LDS R3,a8+1
18F E840 LDI R20,0x80
190 E956 LDI R21,0x96
191 E968 LDI R22,0x98
192 E070 LDI R23,0
193 925A ST R5,-Y
194 924A ST R4,-Y
195 923A ST R3,-Y
196 922A ST R2,-Y
197 018A MOVW R16,R20
198 019B MOVW R18,R22
199 940E 052A CALL empy32s
19B 802E LDD R2,Y+6
19C 803F LDD R3,Y+7
19D 8448 LDD R4,Y+8
19E 8459 LDD R5,Y+9
19F 1A20 SUB R2,R16
1A0 0A31 SBC R3,R17
1A1 0A42 SBC R4,R18
1A2 0A53 SBC R5,R19
1A3 9080 0206 LDS R8,a7+2
1A5 9090 0207 LDS R9,a7+3
1A7 9060 0204 LDS R6,a7
1A9 9070 0205 LDS R7,a7+1
1AB E440 LDI R20,0x40
1AC E452 LDI R21,0x42
1AD E06F LDI R22,0xF
1AE E070 LDI R23,0
1AF 929A ST R9,-Y
1B0 928A ST R8,-Y
1B1 927A ST R7,-Y
1B2 926A ST R6,-Y
1B3 018A MOVW R16,R20
1B4 019B MOVW R18,R22
1B5 940E 052A CALL empy32s
1B7 1A20 SUB R2,R16
1B8 0A31 SBC R3,R17
1B9 0A42 SBC R4,R18
1BA 0A53 SBC R5,R19
1BB 9080 020A LDS R8,a6+2
1BD 9090 020B LDS R9,a6+3
1BF 9060 0208 LDS R6,a6
1C1 9070 0209 LDS R7,a6+1
1C3 EA40 LDI R20,0xA0
1C4 E856 LDI R21,0x86
1C5 E061 LDI R22,1
1C6 E070 LDI R23,0
1C7 929A ST R9,-Y
1C8 928A ST R8,-Y
1C9 927A ST R7,-Y
1CA 926A ST R6,-Y
1CB 018A MOVW R16,R20
1CC 019B MOVW R18,R22
1CD 940E 052A CALL empy32s
1CF 1A20 SUB R2,R16
1D0 0A31 SBC R3,R17
1D1 0A42 SBC R4,R18
1D2 0A53 SBC R5,R19
1D3 E140 LDI R20,0x10
1D4 E257 LDI R21,0x27
1D5 E060 LDI R22,0
1D6 E070 LDI R23,0
1D7 937A ST R23,-Y
1D8 936A ST R22,-Y
1D9 935A ST R21,-Y
1DA 934A ST R20,-Y
1DB 0181 MOVW R16,R2
1DC 0192 MOVW R18,R4
1DD 940E 04C0 CALL div32u
1DF 9310 020D STS a5+1,R17
1E1 9300 020C STS a5,R16
1E3 9330 020F STS a5+3,R19
1E5 9320 020E STS a5+2,R18
(0023) a4=(data-a8*10000000-a7*1000000-a6*100000-a5*10000)/1000;
1E7 9040 0202 LDS R4,a8+2
1E9 9050 0203 LDS R5,a8+3
1EB 9020 0200 LDS R2,a8
1ED 9030 0201 LDS R3,a8+1
1EF E840 LDI R20,0x80
1F0 E956 LDI R21,0x96
1F1 E968 LDI R22,0x98
1F2 E070 LDI R23,0
1F3 925A ST R5,-Y
1F4 924A ST R4,-Y
1F5 923A ST R3,-Y
1F6 922A ST R2,-Y
1F7 018A MOVW R16,R20
1F8 019B MOVW R18,R22
1F9 940E 052A CALL empy32s
1FB 802E LDD R2,Y+6
1FC 803F LDD R3,Y+7
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -