📄 mdls40466.lst
字号:
__start:
__text_start:
45 E5CF LDI R28,0x5F
46 E0D4 LDI R29,4
47 BFCD OUT 0x3D,R28
48 BFDE OUT 0x3E,R29
49 51CE SUBI R28,0x1E
4A 40D0 SBCI R29,0
4B EA0A LDI R16,0xAA
4C 8308 STD Y+0,R16
4D 2400 CLR R0
4E E6E0 LDI R30,0x60
4F E0F0 LDI R31,0
50 E010 LDI R17,0
51 36E1 CPI R30,0x61
52 07F1 CPC R31,R17
53 F011 BEQ 0x0056
54 9201 ST R0,Z+
55 CFFB RJMP 0x0051
56 8300 STD Z+0,R16
57 E8EA LDI R30,0x8A
58 E0F0 LDI R31,0
59 E6A0 LDI R26,0x60
5A E0B0 LDI R27,0
5B E010 LDI R17,0
5C E000 LDI R16,0
5D BF0B OUT 0x3B,R16
5E 38EA CPI R30,0x8A
5F 07F1 CPC R31,R17
60 F021 BEQ 0x0065
61 95C8 LPM
62 9631 ADIW R30,1
63 920D ST R0,X+
64 CFF9 RJMP 0x005E
65 940E 00B5 CALL _main
_exit:
67 CFFF RJMP _exit
_delay:
i --> R20
j --> R22
ms --> R16
68 940E 014C CALL push_xgsetF000
FILE: G:\学习\avr\天祥电子AVR视频教程\chengxu\MDLS40466\MDLS40466.c
(0001) #include <iom16v.h>
(0002) #include <macros.h>
(0003) #define uchar unsigned char
(0004) #define uint unsigned int
(0005) #pragma data:code
(0006) const uchar table[]="I LIKE AVR !";
(0007) const uchar table1[]="WWW.TXMCU.COM";
(0008) const uchar table2[]="I LOVE YOU !";
(0009) const uchar table3[]="WWW.ZJSRU.NET";
(0010) uchar k;
(0011)
(0012) void delay(uint ms)
(0013) {
(0014) uint i,j;
(0015) for(i=0;i<ms;i++)
6A 2744 CLR R20
6B 2755 CLR R21
6C C00B RJMP 0x0078
(0016) {
(0017) for(j=0;j<1141;j++);
6D 2766 CLR R22
6E 2777 CLR R23
6F C002 RJMP 0x0072
70 5F6F SUBI R22,0xFF
71 4F7F SBCI R23,0xFF
72 3765 CPI R22,0x75
73 E0E4 LDI R30,4
74 077E CPC R23,R30
75 F3D0 BCS 0x0070
76 5F4F SUBI R20,0xFF
77 4F5F SBCI R21,0xFF
78 1740 CP R20,R16
79 0751 CPC R21,R17
7A F390 BCS 0x006D
7B 940C 0151 JMP pop_xgsetF000
_write_com:
com --> R10
7D 92AA ST R10,-Y
7E 2EA0 MOV R10,R16
(0018) }
(0019) }
(0020) void write_com(uchar com)
(0021) {
(0022) PORTD&=~BIT(4);
7F 9894 CBI 0x12,4
(0023) PORTD&=~BIT(5);
80 9895 CBI 0x12,5
(0024) PORTB=com;
81 BAA8 OUT 0x18,R10
(0025) PORTD|=BIT(k);
82 9110 0060 LDS R17,k
84 E001 LDI R16,1
85 940E 0156 CALL lsl8
87 B222 IN R2,0x12
88 2A20 OR R2,R16
89 BA22 OUT 0x12,R2
(0026) delay(1);
8A E001 LDI R16,1
8B E010 LDI R17,0
8C DFDB RCALL _delay
(0027) PORTD&=~BIT(k);
8D 9110 0060 LDS R17,k
8F E001 LDI R16,1
90 940E 0156 CALL lsl8
92 2E20 MOV R2,R16
93 9420 COM R2
94 B232 IN R3,0x12
95 2032 AND R3,R2
96 BA32 OUT 0x12,R3
97 90A9 LD R10,Y+
98 9508 RET
_write_dat:
dat --> R10
99 92AA ST R10,-Y
9A 2EA0 MOV R10,R16
(0028) }
(0029)
(0030) void write_dat(uchar dat)
(0031) {
(0032) PORTD|=BIT(4);
9B 9A94 SBI 0x12,4
(0033) PORTD&=~BIT(5);
9C 9895 CBI 0x12,5
(0034) PORTB=dat;
9D BAA8 OUT 0x18,R10
(0035) PORTD|=BIT(k);
9E 9110 0060 LDS R17,k
A0 E001 LDI R16,1
A1 940E 0156 CALL lsl8
A3 B222 IN R2,0x12
A4 2A20 OR R2,R16
A5 BA22 OUT 0x12,R2
(0036) delay(1);
A6 E001 LDI R16,1
A7 E010 LDI R17,0
A8 DFBF RCALL _delay
(0037) PORTD&=~BIT(k);
A9 9110 0060 LDS R17,k
AB E001 LDI R16,1
AC 940E 0156 CALL lsl8
AE 2E20 MOV R2,R16
AF 9420 COM R2
B0 B232 IN R3,0x12
B1 2032 AND R3,R2
B2 BA32 OUT 0x12,R3
B3 90A9 LD R10,Y+
B4 9508 RET
(0038) }
(0039) void main()
(0040) {
(0041) uchar i;
(0042) for(k=6;k<8;k++)
_main:
i --> R20
B5 E086 LDI R24,6
B6 9380 0060 STS k,R24
B8 C08D RJMP 0x0146
(0043) {
(0044) DDRB=0XFF;
B9 EF8F LDI R24,0xFF
BA BB87 OUT 0x17,R24
(0045) DDRD|=BIT(4)|BIT(5)|BIT(k);
BB 9110 0060 LDS R17,k
BD E001 LDI R16,1
BE 940E 0156 CALL lsl8
C0 2F80 MOV R24,R16
C1 6380 ORI R24,0x30
C2 B221 IN R2,0x11
C3 2A28 OR R2,R24
C4 BA21 OUT 0x11,R2
(0046) PORTD&=~BIT(k);
C5 9110 0060 LDS R17,k
C7 E001 LDI R16,1
C8 940E 0156 CALL lsl8
CA 2E20 MOV R2,R16
CB 9420 COM R2
CC B232 IN R3,0x12
CD 2032 AND R3,R2
CE BA32 OUT 0x12,R3
(0047) write_com(0X38);
CF E308 LDI R16,0x38
D0 DFAC RCALL _write_com
(0048) delay(5);
D1 E005 LDI R16,5
D2 E010 LDI R17,0
D3 DF94 RCALL _delay
(0049) write_com(0X01);/*清屏*/
D4 E001 LDI R16,1
D5 DFA7 RCALL _write_com
(0050) delay(5);
D6 E005 LDI R16,5
D7 E010 LDI R17,0
D8 DF8F RCALL _delay
(0051) write_com(0X0C);
D9 E00C LDI R16,0xC
DA DFA2 RCALL _write_com
(0052) delay(5);
DB E005 LDI R16,5
DC E010 LDI R17,0
DD DF8A RCALL _delay
(0053) write_com(0X06);
DE E006 LDI R16,6
DF DF9D RCALL _write_com
(0054) delay(5);
E0 E005 LDI R16,5
E1 E010 LDI R17,0
E2 DF85 RCALL _delay
(0055) write_com(0X80+27);
E3 E90B LDI R16,0x9B
E4 DF98 RCALL _write_com
(0056) delay(5);
E5 E005 LDI R16,5
E6 E010 LDI R17,0
E7 DF80 RCALL _delay
(0057) if(k==6)
E8 9180 0060 LDS R24,k
EA 3086 CPI R24,6
EB F489 BNE 0x00FD
(0058) for(i=0;i<12;i++)
EC 2744 CLR R20
ED C00C RJMP 0x00FA
(0059) {
(0060) write_dat(table[i]);
EE E584 LDI R24,0x54
EF E090 LDI R25,0
F0 2FE4 MOV R30,R20
F1 27FF CLR R31
F2 0FE8 ADD R30,R24
F3 1FF9 ADC R31,R25
F4 9104 LPM R16,0(Z)
F5 DFA3 RCALL _write_dat
(0061) delay(50);
F6 E302 LDI R16,0x32
F7 E010 LDI R17,0
F8 DF6F RCALL _delay
F9 9543 INC R20
FA 304C CPI R20,0xC
FB F390 BCS 0x00EE
FC C010 RJMP 0x010D
(0062) }
(0063) else
(0064) for(i=0;i<12;i++)
FD 2744 CLR R20
FE C00C RJMP 0x010B
(0065) {
(0066) write_dat(table2[i]);
FF E68F LDI R24,0x6F
100 E090 LDI R25,0
101 2FE4 MOV R30,R20
102 27FF CLR R31
103 0FE8 ADD R30,R24
104 1FF9 ADC R31,R25
105 9104 LPM R16,0(Z)
106 DF92 RCALL _write_dat
(0067) delay(50);
107 E302 LDI R16,0x32
108 E010 LDI R17,0
109 DF5E RCALL _delay
10A 9543 INC R20
10B 304C CPI R20,0xC
10C F390 BCS 0x00FF
(0068) }
(0069) write_com(0X80+0X43);
10D EC03 LDI R16,0xC3
10E DF6E RCALL _write_com
(0070) delay(5);
10F E005 LDI R16,5
110 E010 LDI R17,0
111 DF56 RCALL _delay
(0071) if(k==6)
112 9180 0060 LDS R24,k
114 3086 CPI R24,6
115 F489 BNE 0x0127
(0072) for(i=0;i<13;i++)
116 2744 CLR R20
117 C00C RJMP 0x0124
(0073) {
(0074) write_dat(table1[i]);
118 E681 LDI R24,0x61
119 E090 LDI R25,0
11A 2FE4 MOV R30,R20
11B 27FF CLR R31
11C 0FE8 ADD R30,R24
11D 1FF9 ADC R31,R25
11E 9104 LPM R16,0(Z)
11F DF79 RCALL _write_dat
(0075) delay(5);
120 E005 LDI R16,5
121 E010 LDI R17,0
122 DF45 RCALL _delay
123 9543 INC R20
124 304D CPI R20,0xD
125 F390 BCS 0x0118
126 C010 RJMP 0x0137
(0076) }
(0077) else
(0078) for(i=0;i<13;i++)
127 2744 CLR R20
128 C00C RJMP 0x0135
(0079) {
(0080) write_dat(table3[i]);
129 E78C LDI R24,0x7C
12A E090 LDI R25,0
12B 2FE4 MOV R30,R20
12C 27FF CLR R31
12D 0FE8 ADD R30,R24
12E 1FF9 ADC R31,R25
12F 9104 LPM R16,0(Z)
130 DF68 RCALL _write_dat
(0081) delay(5);
131 E005 LDI R16,5
132 E010 LDI R17,0
133 DF34 RCALL _delay
134 9543 INC R20
135 304D CPI R20,0xD
136 F390 BCS 0x0129
(0082) }
(0083) for(i=0;i<10;i++)
137 2744 CLR R20
138 C006 RJMP 0x013F
(0084) {
(0085) write_com(0X1D);/*左移*/
139 E10D LDI R16,0x1D
13A DF42 RCALL _write_com
(0086) delay(500);
FILE: <library>
13B EF04 LDI R16,0xF4
13C E011 LDI R17,1
13D DF2A RCALL _delay
13E 9543 INC R20
13F 304A CPI R20,0xA
140 F3C0 BCS 0x0139
141 9180 0060 LDS R24,k
143 5F8F SUBI R24,0xFF
144 9380 0060 STS k,R24
146 9180 0060 LDS R24,k
148 3088 CPI R24,0x8
149 F408 BCC 0x014B
14A CF6E RJMP 0x00B9
14B 9508 RET
push_xgsetF000:
14C 937A ST R23,-Y
14D 936A ST R22,-Y
14E 935A ST R21,-Y
14F 934A ST R20,-Y
150 9508 RET
pop_xgsetF000:
151 9149 LD R20,Y+
152 9159 LD R21,Y+
153 9169 LD R22,Y+
154 9179 LD R23,Y+
155 9508 RET
lsl8:
156 2311 TST R17
157 F019 BEQ 0x015B
158 0F00 LSL R16
159 951A DEC R17
15A CFFB RJMP lsl8
15B 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -