📄 main.lis
字号:
.module main.c
.area lit(rom, con, rel)
0000 _Tab::
0000 21F9 .byte 33,249
0002 1351 .byte 19,'Q
0004 C945 .byte 201,'E
0006 05F1 .byte 5,241
0008 0141 .byte 1,'A
000A 810D .byte 129,13
000C 2719 .byte 39,25
000E 0787 .byte 7,135
0010 .dbfile C:\ATMega8515\LCD/ForATmega8515.h
0010 .dbsym e Tab _Tab A[16:16]kc
.area text(rom, con, rel)
0000 .dbfile C:\ATMega8515\LCD/ForATmega8515.h
0000 .dbfile C:\ATMega8515\LCD\main.c
0000 .dbfunc e main _main fV
0000 ; softdelay -> R20,R21
.even
0000 _main::
0000 .dbline -1
0000 .dbline 12
0000 ; #include <iom8515v.h>
0000 ; #include"ForATmega8515.h"
0000 ;
0000 ; void delay(uint ticks);
0000 ; ///////////////////////
0000 ; void writedata(uchar lcddata);//写数据到LCD
0000 ; void writecom(uchar lcddata);//写命令到LCD
0000 ; void writeline(uchar *str); //写一串数据到LCD
0000 ; void initlcd(); //初始话LCD
0000 ; ////////////////////////////
0000 ; void main()
0000 ; {
0000 .dbline 13
0000 ; uint softdelay=1000;
0000 48EE ldi R20,1000
0002 53E0 ldi R21,3
0004 .dbline 14
0004 ; init_devices();
0004 00D0 rcall _init_devices
0006 .dbline 15
0006 ; initlcd();
0006 5CD0 rcall _initlcd
0008 28C0 rjmp L3
000A L2:
000A .dbline 18
000A ;
000A ; while(1)
000A ; {
000A .dbline 19
000A ; writeline("Hello World!");//在LCD上面显示Hello World!
000A 00E0 ldi R16,<L5
000C 10E0 ldi R17,>L5
000E 4BD0 rcall _writeline
0010 03C0 rjmp L7
0012 L6:
0012 .dbline 20
0012 0EE1 ldi R16,30
0014 10E0 ldi R17,0
0016 23D0 rcall _delay
0018 L7:
0018 .dbline 20
0018 ; while(softdelay--)delay(30);softdelay=1000;//延时
0018 1A01 movw R2,R20
001A 4150 subi R20,1
001C 5040 sbci R21,0
001E 2220 tst R2
0020 C1F7 brne L6
0022 3320 tst R3
0024 B1F7 brne L6
0026 X0:
0026 .dbline 20
0026 48EE ldi R20,1000
0028 53E0 ldi R21,3
002A .dbline 21
002A ; writecom(0x01);//清屏
002A 01E0 ldi R16,1
002C 31D0 rcall _writecom
002E .dbline 22
002E ; writecom(0x80);//回车
002E 00E8 ldi R16,128
0030 2FD0 rcall _writecom
0032 .dbline 23
0032 ; writeline("ForATMega8515");//在LCD上面显示ForATMega8515
0032 00E0 ldi R16,<L9
0034 10E0 ldi R17,>L9
0036 37D0 rcall _writeline
0038 03C0 rjmp L11
003A L10:
003A .dbline 24
003A 0EE1 ldi R16,30
003C 10E0 ldi R17,0
003E 0FD0 rcall _delay
0040 L11:
0040 .dbline 24
0040 1A01 movw R2,R20
0042 4150 subi R20,1
0044 5040 sbci R21,0
0046 2220 tst R2
0048 C1F7 brne L10
004A 3320 tst R3
004C B1F7 brne L10
004E X1:
004E .dbline 24
004E 48EE ldi R20,1000
0050 53E0 ldi R21,3
0052 .dbline 25
0052 01E0 ldi R16,1
0054 1DD0 rcall _writecom
0056 .dbline 26
0056 00E8 ldi R16,128
0058 1BD0 rcall _writecom
005A .dbline 28
005A L3:
005A .dbline 17
005A D7CF rjmp L2
005C X2:
005C .dbline -2
005C L1:
005C .dbline 0 ; func end
005C 0895 ret
005E .dbsym r softdelay 20 i
005E .dbend
005E .dbfunc e delay _delay fV
005E ; i -> R20
005E ; ticks -> R16,R17
.even
005E _delay::
005E 00D0 rcall push_gset1
0060 .dbline -1
0060 .dbline 33
0060 ; while(softdelay--)delay(30);softdelay=1000;//延时
0060 ; writecom(0x01);//清屏
0060 ; writecom(0x80);//回车
0060 ;
0060 ; }
0060 ; }
0060 ;
0060 ;
0060 ; void delay(uint ticks)
0060 ; {
0060 .dbline 35
0060 07C0 rjmp L17
0062 L14:
0062 .dbline 35
0062 48EC ldi R20,200
0064 01C0 rjmp L21
0066 L18:
0066 .dbline 35
0066 L19:
0066 .dbline 35
0066 4A95 dec R20
0068 L21:
0068 .dbline 35
0068 4423 tst R20
006A E9F7 brne L18
006C L15:
006C .dbline 35
006C 0150 subi R16,1
006E 1040 sbci R17,0
0070 L17:
0070 .dbline 35
0070 ; uchar i;
0070 ; for(;ticks!=0;ticks--)for(i=200;i!=0;i--);
0070 0030 cpi R16,0
0072 0107 cpc R16,R17
0074 B1F7 brne L14
0076 X3:
0076 .dbline -2
0076 L13:
0076 00D0 rcall pop_gset1
0078 .dbline 0 ; func end
0078 0895 ret
007A .dbsym r i 20 c
007A .dbsym r ticks 16 i
007A .dbend
007A .dbfunc e writedata _writedata fV
007A ; lcddata -> R20
.even
007A _writedata::
007A 00D0 rcall push_gset1
007C 402F mov R20,R16
007E .dbline -1
007E .dbline 42
007E ; }
007E ;
007E ;
007E ;
007E ; ///////////////////////////////
007E ; void writedata(uchar lcddata)
007E ; {
007E .dbline 44
007E ; // E=1;
007E ; PORTC|=E;
007E AC9A sbi 0x15,4
0080 .dbline 46
0080 ; // RS=1;
0080 ; PORTC|=RS;
0080 AA9A sbi 0x15,2
0082 .dbline 48
0082 ; // RW=0;
0082 ; PORTA=lcddata;
0082 4BBB out 0x1b,R20
0084 .dbline 50
0084 ; // E=0;
0084 ; PORTC&=~E;
0084 AC98 cbi 0x15,4
0086 .dbline 51
0086 ; delay(100);
0086 04E6 ldi R16,100
0088 10E0 ldi R17,0
008A E9DF rcall _delay
008C .dbline -2
008C L22:
008C 00D0 rcall pop_gset1
008E .dbline 0 ; func end
008E 0895 ret
0090 .dbsym r lcddata 20 c
0090 .dbend
0090 .dbfunc e writecom _writecom fV
0090 ; lcddata -> R20
.even
0090 _writecom::
0090 00D0 rcall push_gset1
0092 402F mov R20,R16
0094 .dbline -1
0094 .dbline 55
0094 ; }
0094 ; /////////////////////////////////
0094 ; void writecom(uchar lcddata)
0094 ; {
0094 .dbline 57
0094 ; // E=1;
0094 ; PORTC|=E;
0094 AC9A sbi 0x15,4
0096 .dbline 59
0096 ; // RS=0;
0096 ; PORTC&=~RS;
0096 AA98 cbi 0x15,2
0098 .dbline 61
0098 ; // RW=0;
0098 ; PORTA=lcddata;
0098 4BBB out 0x1b,R20
009A .dbline 63
009A ; // E=0;
009A ; PORTC&=~E;
009A AC98 cbi 0x15,4
009C .dbline 64
009C ; delay(100);
009C 04E6 ldi R16,100
009E 10E0 ldi R17,0
00A0 DEDF rcall _delay
00A2 .dbline -2
00A2 L23:
00A2 00D0 rcall pop_gset1
00A4 .dbline 0 ; func end
00A4 0895 ret
00A6 .dbsym r lcddata 20 c
00A6 .dbend
00A6 .dbfunc e writeline _writeline fV
00A6 ; str -> R20,R21
.even
00A6 _writeline::
00A6 00D0 rcall push_gset1
00A8 A801 movw R20,R16
00AA .dbline -1
00AA .dbline 68
00AA ; }
00AA ;
00AA ; void writeline(uchar *str)
00AA ; {
00AA 04C0 rjmp L26
00AC L25:
00AC .dbline 69
00AC FA01 movw R30,R20
00AE 0191 ld R16,Z+
00B0 AF01 movw R20,R30
00B2 E3DF rcall _writedata
00B4 L26:
00B4 .dbline 69
00B4 ; while(*str)writedata(*str++);
00B4 FA01 movw R30,R20
00B6 2080 ldd R2,z+0
00B8 2220 tst R2
00BA C1F7 brne L25
00BC .dbline -2
00BC L24:
00BC 00D0 rcall pop_gset1
00BE .dbline 0 ; func end
00BE 0895 ret
00C0 .dbsym r str 20 pc
00C0 .dbend
00C0 .dbfunc e initlcd _initlcd fV
.even
00C0 _initlcd::
00C0 .dbline -1
00C0 .dbline 74
00C0 ; }
00C0 ;
00C0 ; ///////////////////////////////////
00C0 ; void initlcd()
00C0 ; {
00C0 .dbline 76
00C0 ;
00C0 ; writecom(0x01); //清屏
00C0 01E0 ldi R16,1
00C2 E6DF rcall _writecom
00C4 .dbline 77
00C4 ; writecom(0x38); //功能设置
00C4 08E3 ldi R16,56
00C6 E4DF rcall _writecom
00C8 .dbline 78
00C8 ; writecom(0x0f); //显示开关控制
00C8 0FE0 ldi R16,15
00CA E2DF rcall _writecom
00CC .dbline 79
00CC ; writecom(0x06); //设置输入模式
00CC 06E0 ldi R16,6
00CE E0DF rcall _writecom
00D0 .dbline 80
00D0 ; writecom(0x01); //清屏
00D0 01E0 ldi R16,1
00D2 DEDF rcall _writecom
00D4 .dbline 81
00D4 ; writecom(0x80); //回车
00D4 00E8 ldi R16,128
00D6 DCDF rcall _writecom
00D8 .dbline -2
00D8 L28:
00D8 .dbline 0 ; func end
00D8 0895 ret
00DA .dbend
.area data(ram, con, rel)
0000 .dbfile C:\ATMega8515\LCD\main.c
0000 L9:
0000 .blkb 14
.area idata
0000 466F7241544D6567613835313500 .byte 'F,'o,'r,'A,'T,'M,'e,'g,'a,56,53,49,53,0
.area data(ram, con, rel)
000E .dbfile C:\ATMega8515\LCD\main.c
000E L5:
000E .blkb 13
.area idata
000E 48656C6C6F20576F726C642100 .byte 'H,'e,'l,'l,'o,32,'W,'o,'r,'l,'d,33,0
.area data(ram, con, rel)
001B .dbfile C:\ATMega8515\LCD\main.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -