📄 lesson6.lst
字号:
__text_start:
__start:
003E E5CF LDI R28,0x5F
003F E0D4 LDI R29,4
0040 BFCD OUT P3D,R28
0041 BFDE OUT P3E,R29
0042 51C0 SUBI R28,0x10
0043 40D0 SBCI R29,0
0044 EA0A LDI R16,0xAA
0045 8308 STD R16,0+Y
0046 2400 CLR R0
0047 E6E0 LDI R30,0x60
0048 E0F0 LDI R31,0
0049 E010 LDI R17,0
004A 36E0 CPI R30,0x60
004B 07F1 CPC R31,R17
004C F011 BEQ 0x004F
004D 9201 ST R0,Z+
004E CFFB RJMP 0x004A
004F 8300 STD R16,0+Z
0050 E7EB LDI R30,0x7B
0051 E0F0 LDI R31,0
0052 E6A0 LDI R26,0x60
0053 E0B0 LDI R27,0
0054 E010 LDI R17,0
0055 37EB CPI R30,0x7B
0056 07F1 CPC R31,R17
0057 F021 BEQ 0x005C
0058 95C8 LPM
0059 9631 ADIW R30,1
005A 920D ST R0,X+
005B CFF9 RJMP 0x0055
005C 940E0091 CALL _main
_exit:
005E CFFF RJMP _exit
_delay:
i --> R20
j --> R22
ms --> R16
005F 940E00F7 CALL push_gset2
FILE: I:\AVR视频教程\视频教程\lesson6\chengxu\lesson6\lesson6.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)
(0009) void delay(uint ms)
(0010) {
(0011) uint i,j;
(0012) for(i=0;i<ms;i++)
0061 2744 CLR R20
0062 2755 CLR R21
0063 C00B RJMP 0x006F
(0013) {
(0014) for(j=0;j<1141;j++);
0064 2766 CLR R22
0065 2777 CLR R23
0066 C002 RJMP 0x0069
0067 5F6F SUBI R22,0xFF
0068 4F7F SBCI R23,0xFF
0069 3765 CPI R22,0x75
006A E0E4 LDI R30,4
006B 077E CPC R23,R30
006C F3D0 BCS 0x0067
006D 5F4F SUBI R20,0xFF
006E 4F5F SBCI R21,0xFF
006F 1740 CP R20,R16
0070 0751 CPC R21,R17
0071 F390 BCS 0x0064
(0015) }
(0016) }
0072 940E00FB CALL pop_gset2
0074 9508 RET
_write_com:
com --> R20
0075 940E00E0 CALL push_gset1
0077 2F40 MOV R20,R16
(0017) void write_com(uchar com)
(0018) {
(0019) PORTD&=~BIT(4);
0078 9894 CBI P12,4
(0020) PORTD&=~BIT(5);
0079 9895 CBI P12,5
(0021) PORTB=com;
007A BB48 OUT P18,R20
(0022) PORTD|=BIT(6);
007B 9A96 SBI P12,6
(0023) delay(1);
007C E001 LDI R16,1
007D E010 LDI R17,0
007E DFE0 RCALL _delay
(0024) PORTD&=~BIT(6);
007F 9896 CBI P12,6
(0025) }
0080 940E00E3 CALL pop_gset1
0082 9508 RET
_write_dat:
dat --> R20
0083 940E00E0 CALL push_gset1
0085 2F40 MOV R20,R16
(0026)
(0027) void write_dat(uchar dat)
(0028) {
(0029) PORTD|=BIT(4);
0086 9A94 SBI P12,4
(0030) PORTD&=~BIT(5);
0087 9895 CBI P12,5
(0031) PORTB=dat;
0088 BB48 OUT P18,R20
(0032) PORTD|=BIT(6);
0089 9A96 SBI P12,6
(0033) delay(1);
008A E001 LDI R16,1
008B E010 LDI R17,0
008C DFD2 RCALL _delay
(0034) PORTD&=~BIT(6);
008D 9896 CBI P12,6
(0035)
(0036) }
008E 940E00E3 CALL pop_gset1
0090 9508 RET
(0037) void main()
(0038) {
(0039) uchar i;
(0040) DDRB=0XFF;
_main:
i --> R20
0091 EF8F LDI R24,0xFF
0092 BB87 OUT P17,R24
(0041) DDRD|=BIT(4)|BIT(5)|BIT(6);
0093 B381 IN R24,P11
0094 6780 ORI R24,0x70
0095 BB81 OUT P11,R24
(0042) PORTD&=~BIT(6);
0096 9896 CBI P12,6
(0043)
(0044) write_com(0X38);
0097 E308 LDI R16,0x38
0098 DFDC RCALL _write_com
(0045) delay(5);
0099 E005 LDI R16,5
009A E010 LDI R17,0
009B DFC3 RCALL _delay
(0046) write_com(0X01);
009C E001 LDI R16,1
009D DFD7 RCALL _write_com
(0047) delay(5);
009E E005 LDI R16,5
009F E010 LDI R17,0
00A0 DFBE RCALL _delay
(0048) write_com(0X0C);
00A1 E00C LDI R16,0xC
00A2 DFD2 RCALL _write_com
(0049) delay(5);
00A3 E005 LDI R16,5
00A4 E010 LDI R17,0
00A5 DFB9 RCALL _delay
(0050) write_com(0X06);
00A6 E006 LDI R16,6
00A7 DFCD RCALL _write_com
(0051) delay(5);
00A8 E005 LDI R16,5
00A9 E010 LDI R17,0
00AA DFB4 RCALL _delay
(0052) write_com(0X80+0X10);
00AB E900 LDI R16,0x90
00AC DFC8 RCALL _write_com
(0053) delay(5);
00AD E005 LDI R16,5
00AE E010 LDI R17,0
00AF DFAF RCALL _delay
(0054) for(i=0;i<12;i++)
00B0 2744 CLR R20
00B1 C00C RJMP 0x00BE
(0055) {
(0056) write_dat(table[i]);
00B2 E680 LDI R24,0x60
00B3 E090 LDI R25,0
00B4 2FE4 MOV R30,R20
00B5 27FF CLR R31
00B6 0FE8 ADD R30,R24
00B7 1FF9 ADC R31,R25
00B8 9104 LD R16,R16
00B9 DFC9 RCALL _write_dat
(0057) delay(5);
00BA E005 LDI R16,5
00BB E010 LDI R17,0
00BC DFA2 RCALL _delay
00BD 9543 INC R20
00BE 304C CPI R20,0xC
00BF F390 BCS 0x00B2
(0058) }
(0059) write_com(0X80+0X50);
00C0 ED00 LDI R16,0xD0
00C1 DFB3 RCALL _write_com
(0060) delay(5);
00C2 E005 LDI R16,5
00C3 E010 LDI R17,0
00C4 DF9A RCALL _delay
(0061) for(i=0;i<13;i++)
00C5 2744 CLR R20
00C6 C00C RJMP 0x00D3
(0062) {
(0063) write_dat(table1[i]);
00C7 E68D LDI R24,0x6D
00C8 E090 LDI R25,0
00C9 2FE4 MOV R30,R20
00CA 27FF CLR R31
00CB 0FE8 ADD R30,R24
00CC 1FF9 ADC R31,R25
00CD 9104 LD R16,R16
00CE DFB4 RCALL _write_dat
(0064) delay(5);
00CF E005 LDI R16,5
00D0 E010 LDI R17,0
00D1 DF8D RCALL _delay
00D2 9543 INC R20
00D3 304D CPI R20,0xD
00D4 F390 BCS 0x00C7
(0065) }
(0066) for(i=0;i<16;i++)
00D5 2744 CLR R20
00D6 C006 RJMP 0x00DD
(0067) {
(0068) write_com(0X18);
00D7 E108 LDI R16,0x18
00D8 DF9C RCALL _write_com
(0069) delay(500);
00D9 EF04 LDI R16,0xF4
00DA E011 LDI R17,1
00DB DF83 RCALL _delay
00DC 9543 INC R20
00DD 3140 CPI R20,0x10
00DE F3C0 BCS 0x00D7
(0070) }
(0071)
(0072) }FILE: <library>
00DF 9508 RET
push_gset1:
00E0 935A ST R21,-Y
00E1 934A ST R20,-Y
00E2 9508 RET
pop_gset1:
00E3 E0E1 LDI R30,1
pop:
00E4 9149 LD R20,Y+
00E5 9159 LD R21,Y+
00E6 FDE0 SBRC R30,0
00E7 9508 RET
00E8 9169 LD R22,Y+
00E9 9179 LD R23,Y+
00EA FDE1 SBRC R30,1
00EB 9508 RET
00EC 90A9 LD R10,Y+
00ED 90B9 LD R11,Y+
00EE FDE2 SBRC R30,2
00EF 9508 RET
00F0 90C9 LD R12,Y+
00F1 90D9 LD R13,Y+
00F2 FDE3 SBRC R30,3
00F3 9508 RET
00F4 90E9 LD R14,Y+
00F5 90F9 LD R15,Y+
00F6 9508 RET
push_gset2:
00F7 937A ST R23,-Y
00F8 936A ST R22,-Y
00F9 940C00E0 JMP push_gset1
pop_gset2:
00FB E0E2 LDI R30,2
00FC 940C00E4 JMP pop
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -