📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile E:\ICCAVR\project\AVRMEG~3\icc\017-LCD1602\main.c
0000 .dbfunc e io_init _io_init fV
.even
0000 _io_init::
0000 .dbline -1
0000 .dbline 17
0000 ; /*
0000 ; 实验十七:
0000 ; LCD1602显示实验。
0000 ; 1、LCD1602显示实验。显示欢迎及网址信息。
0000 ; 2、内部1 M晶振,程序采用单任务方式,软件延时。
0000 ; 3、此实验可以让你学会LCD1602的使用方法。
0000 ;
0000 ; AVR mega16学习板
0000 ; www.iccavr.com
0000 ; 23:03 2007-4-13
0000 ; */
0000 ;
0000 ; #include <iom128v.h>
0000 ; #include "lcd1602.h"
0000 ;
0000 ; /*IO口初始化函数*/
0000 ; void io_init(void) {
0000 .dbline 19
0000 ;
0000 ; DDRA = 0xFF; /*方向输出*/
0000 8FEF ldi R24,255
0002 8ABB out 0x1a,R24
0004 .dbline 20
0004 ; PORTA = 0xFF; /*高电平*/
0004 8BBB out 0x1b,R24
0006 .dbline 21
0006 ; DDRB = 0x00; /*方向输入*/
0006 2224 clr R2
0008 27BA out 0x17,R2
000A .dbline 22
000A ; PORTB = 0xFF; /*打开上拉*/
000A 88BB out 0x18,R24
000C .dbline 23
000C ; DDRC = 0xFF; /*不用的IO口建议设置为输入带上拉*/
000C 84BB out 0x14,R24
000E .dbline 24
000E ; PORTC = 0x00;
000E 25BA out 0x15,R2
0010 .dbline 25
0010 ; DDRD = 0x00;
0010 21BA out 0x11,R2
0012 .dbline 26
0012 ; PORTD = 0xFF;
0012 82BB out 0x12,R24
0014 .dbline 27
0014 ; DDRE = 0x00;
0014 22B8 out 0x2,R2
0016 .dbline 28
0016 ; PORTE = 0xFF;
0016 83B9 out 0x3,R24
0018 .dbline 29
0018 ; DDRF = 0x00;
0018 20926100 sts 97,R2
001C .dbline 30
001C ; PORTF = 0xFF;
001C 80936200 sts 98,R24
0020 .dbline 31
0020 ; DDRG = 0x00;
0020 20926400 sts 100,R2
0024 .dbline 32
0024 ; PORTG = 0xFF;
0024 80936500 sts 101,R24
0028 .dbline -2
0028 L1:
0028 .dbline 0 ; func end
0028 0895 ret
002A .dbend
002A .dbfunc e main _main fV
002A ; i -> R20
002A ; p -> R22,R23
.even
002A _main::
002A 2297 sbiw R28,2
002C .dbline -1
002C .dbline 35
002C ; }
002C ;
002C ; void main(void) {
002C .dbline 40
002C ;
002C ; unsigned char i;
002C ; unsigned char *p;
002C ;
002C ; io_init(); /*初始化IO口*/
002C E9DF xcall _io_init
002E .dbline 41
002E ; delay_ms(100);
002E 04E6 ldi R16,100
0030 0E940000 xcall _delay_ms
0034 .dbline 42
0034 ; LCD_init(); /*显示初始化*/
0034 0E940000 xcall _LCD_init
0038 25C0 xjmp L4
003A L3:
003A .dbline 44
003A ;
003A ; while (1) {
003A .dbline 45
003A ; i = 1;
003A 41E0 ldi R20,1
003C .dbline 46
003C ; p = "www.iccavr.com"; /*定义字符串指针*/
003C 60E0 ldi R22,<L6
003E 70E0 ldi R23,>L6
0040 .dbline 47
0040 ; LCD_clear(); /*清除显示屏内容*/
0040 0E940000 xcall _LCD_clear
0044 .dbline 48
0044 ; LCD_write_str(5,0,"Welcome"); /*在指定位置显示欢迎信息*/
0044 80E0 ldi R24,<L7
0046 90E0 ldi R25,>L7
0048 9983 std y+1,R25
004A 8883 std y+0,R24
004C 2227 clr R18
004E 05E0 ldi R16,5
0050 0E940000 xcall _LCD_write_str
0054 .dbline 49
0054 ; delay_ms(250);
0054 0AEF ldi R16,250
0056 0E940000 xcall _delay_ms
005A 0DC0 xjmp L9
005C L8:
005C .dbline 51
005C .dbline 52
005C FB01 movw R30,R22
005E 2080 ldd R2,z+0
0060 2882 std y+0,R2
0062 21E0 ldi R18,1
0064 042F mov R16,R20
0066 0E940000 xcall _LCD_write_char
006A .dbline 53
006A 4395 inc R20
006C .dbline 54
006C 6F5F subi R22,255 ; offset = 1
006E 7F4F sbci R23,255
0070 .dbline 55
0070 0AEF ldi R16,250
0072 0E940000 xcall _delay_ms
0076 .dbline 56
0076 L9:
0076 .dbline 51
0076 FB01 movw R30,R22
0078 2080 ldd R2,z+0
007A 2220 tst R2
007C 79F7 brne L8
007E .dbline 57
007E 0AEF ldi R16,250
0080 0E940000 xcall _delay_ms
0084 .dbline 58
0084 L4:
0084 .dbline 44
0084 DACF xjmp L3
0086 X0:
0086 .dbline -2
0086 L2:
0086 2296 adiw R28,2
0088 .dbline 0 ; func end
0088 0895 ret
008A .dbsym r i 20 c
008A .dbsym r p 22 pc
008A .dbend
.area data(ram, con, rel)
0000 .dbfile E:\ICCAVR\project\AVRMEG~3\icc\017-LCD1602\main.c
0000 L7:
0000 .blkb 8
.area idata
0000 57656C636F6D6500 .byte 'W,'e,'l,'c,'o,'m,'e,0
.area data(ram, con, rel)
0008 .dbfile E:\ICCAVR\project\AVRMEG~3\icc\017-LCD1602\main.c
0008 L6:
0008 .blkb 15
.area idata
0008 7777772E6963636176722E636F6D00 .byte 'w,'w,'w,46,'i,'c,'c,'a,'v,'r,46,'c,'o,'m,0
.area data(ram, con, rel)
0017 .dbfile E:\ICCAVR\project\AVRMEG~3\icc\017-LCD1602\main.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -