📄 lcd1602显示.lis
字号:
008C 01E0 ldi R16,1
008E DBDF rcall _com_lcd
0090 .dbline 83
0090 ; delay(5);
0090 05E0 ldi R16,5
0092 10E0 ldi R17,0
0094 C5DF rcall _delay
0096 .dbline 84
0096 ; com_lcd(0x0C);//文字不动,光标自动右移
0096 0CE0 ldi R16,12
0098 D6DF rcall _com_lcd
009A .dbline 85
009A ; delay(5);
009A 05E0 ldi R16,5
009C 10E0 ldi R17,0
009E C0DF rcall _delay
00A0 .dbline 86
00A0 ; com_lcd(0x06);//开显示
00A0 06E0 ldi R16,6
00A2 D1DF rcall _com_lcd
00A4 .dbline 87
00A4 ; delay(5);
00A4 05E0 ldi R16,5
00A6 10E0 ldi R17,0
00A8 BBDF rcall _delay
00AA .dbline -2
00AA L14:
00AA .dbline 0 ; func end
00AA 0895 ret
00AC .dbend
00AC .dbfunc e LCD1602_clear _LCD1602_clear fV
.even
00AC _LCD1602_clear::
00AC .dbline -1
00AC .dbline 91
00AC ; }
00AC ; //清屏
00AC ; void LCD1602_clear()
00AC ; {
00AC .dbline 92
00AC ; com_lcd(0x01); //清屏
00AC 01E0 ldi R16,1
00AE CBDF rcall _com_lcd
00B0 .dbline 93
00B0 ; delay(5);
00B0 05E0 ldi R16,5
00B2 10E0 ldi R17,0
00B4 B5DF rcall _delay
00B6 .dbline -2
00B6 L15:
00B6 .dbline 0 ; func end
00B6 0895 ret
00B8 .dbend
00B8 .dbfunc e LCD1602_goxy _LCD1602_goxy fV
00B8 ; row -> R10
00B8 ; line -> R20
.even
00B8 _LCD1602_goxy::
00B8 00D0 rcall push_xgset300C
00BA A22E mov R10,R18
00BC 402F mov R20,R16
00BE .dbline -1
00BE .dbline 97
00BE ; }
00BE ; //定位x,y(x-列,y-行)
00BE ; void LCD1602_goxy(unsigned char line,unsigned char row)
00BE ; {
00BE .dbline 98
00BE ; if (row==0)
00BE AA20 tst R10
00C0 11F4 brne L17
00C2 X2:
00C2 .dbline 99
00C2 ; line+=0x81;
00C2 4F57 subi R20,127 ; addi 129
00C4 01C0 rjmp L18
00C6 L17:
00C6 .dbline 101
00C6 ; else
00C6 ; line+=0xc0;
00C6 4054 subi R20,64 ; addi 192
00C8 L18:
00C8 .dbline 102
00C8 ; com_lcd(line);//第二行首地址
00C8 042F mov R16,R20
00CA BDDF rcall _com_lcd
00CC .dbline 103
00CC ; delay(5);
00CC 05E0 ldi R16,5
00CE 10E0 ldi R17,0
00D0 A7DF rcall _delay
00D2 .dbline -2
00D2 L16:
00D2 .dbline 0 ; func end
00D2 00C0 rjmp pop_xgset300C
00D4 .dbsym r row 10 c
00D4 .dbsym r line 20 c
00D4 .dbend
00D4 .dbfunc e LCD1602_print _LCD1602_print fI
00D4 ; str -> R20,R21
.even
00D4 _LCD1602_print::
00D4 4A93 st -y,R20
00D6 5A93 st -y,R21
00D8 A801 movw R20,R16
00DA .dbline -1
00DA .dbline 107
00DA ; }
00DA ; //显示字符串
00DA ; LCD1602_print(char *str)
00DA ; {
00DA 08C0 rjmp L21
00DC L20:
00DC .dbline 109
00DC ; while(*str)
00DC ; {
00DC .dbline 110
00DC ; data_lcd(*str);
00DC FA01 movw R30,R20
00DE 0081 ldd R16,z+0
00E0 BEDF rcall _data_lcd
00E2 .dbline 111
00E2 ; delay(10);
00E2 0AE0 ldi R16,10
00E4 10E0 ldi R17,0
00E6 9CDF rcall _delay
00E8 .dbline 112
00E8 ; str++;
00E8 4F5F subi R20,255 ; offset = 1
00EA 5F4F sbci R21,255
00EC .dbline 113
00EC ; }
00EC L21:
00EC .dbline 108
00EC FA01 movw R30,R20
00EE 2080 ldd R2,z+0
00F0 2220 tst R2
00F2 A1F7 brne L20
00F4 X3:
00F4 .dbline -2
00F4 L19:
00F4 .dbline 0 ; func end
00F4 5991 ld R21,y+
00F6 4991 ld R20,y+
00F8 0895 ret
00FA .dbsym r str 20 pc
00FA .dbend
00FA .dbfunc e LCD1602_printD _LCD1602_printD fI
00FA ; n -> R10
.even
00FA _LCD1602_printD::
00FA AA92 st -y,R10
00FC A02E mov R10,R16
00FE .dbline -1
00FE .dbline 117
00FE ; }
00FE ; //显示一个二位十位数
00FE ; LCD1602_printD(unsigned char n)
00FE ; {
00FE .dbline 118
00FE ; data_lcd(n/10+0x30);
00FE 1AE0 ldi R17,10
0100 0A2D mov R16,R10
0102 00D0 rcall div8u
0104 005D subi R16,208 ; addi 48
0106 ABDF rcall _data_lcd
0108 .dbline 119
0108 ; delay(10);
0108 0AE0 ldi R16,10
010A 10E0 ldi R17,0
010C 89DF rcall _delay
010E .dbline 120
010E ; data_lcd(n%10+0x30);
010E 1AE0 ldi R17,10
0110 0A2D mov R16,R10
0112 00D0 rcall mod8u
0114 005D subi R16,208 ; addi 48
0116 A3DF rcall _data_lcd
0118 .dbline 121
0118 ; delay(10);
0118 0AE0 ldi R16,10
011A 10E0 ldi R17,0
011C 81DF rcall _delay
011E .dbline -2
011E L23:
011E .dbline 0 ; func end
011E A990 ld R10,y+
0120 0895 ret
0122 .dbsym r n 10 c
0122 .dbend
0122 .dbfunc e main _main fV
0122 ; i -> R20
.even
0122 _main::
0122 .dbline -1
0122 .dbline 126
0122 ; }
0122 ; //**************************************************************************
0122 ;
0122 ; void main()
0122 ; {
0122 .dbline 127
0122 ; unsigned char i=23;
0122 47E1 ldi R20,23
0124 .dbline 128
0124 ; port_init();
0124 6DDF rcall _port_init
0126 .dbline 129
0126 ; init_devices();
0126 74DF rcall _init_devices
0128 .dbline 131
0128 ;
0128 ; LCD1602_init();
0128 A6DF rcall _LCD1602_init
012A .dbline 132
012A ; LCD1602_goxy(2,0);
012A 2227 clr R18
012C 02E0 ldi R16,2
012E C4DF rcall _LCD1602_goxy
0130 .dbline 133
0130 ; LCD1602_print("xiaozhiyong");
0130 00E0 ldi R16,<L25
0132 10E0 ldi R17,>L25
0134 CFDF rcall _LCD1602_print
0136 .dbline 134
0136 ; LCD1602_goxy(2,1);
0136 21E0 ldi R18,1
0138 02E0 ldi R16,2
013A BEDF rcall _LCD1602_goxy
013C .dbline 135
013C ; LCD1602_printD(i);
013C 042F mov R16,R20
013E DDDF rcall _LCD1602_printD
0140 L26:
0140 .dbline 138
0140 ;
0140 ; while(1)
0140 ; {
0140 .dbline 139
0140 ; ;
0140 .dbline 140
0140 ; }
0140 L27:
0140 .dbline 137
0140 FFCF rjmp L26
0142 X4:
0142 .dbline -2
0142 L24:
0142 .dbline 0 ; func end
0142 0895 ret
0144 .dbsym r i 20 c
0144 .dbend
.area data(ram, con, rel)
0000 .dbfile E:\xiaozhiyong2009\设计资料\项目设计\ICCAVR_mega8_C\ICCAVR_mega8_LCD1602显示\LCD1602显示.c
0000 L25:
0000 .blkb 12
.area idata
0000 7869616F7A6869796F6E6700 .byte 'x,'i,'a,'o,'z,'h,'i,'y,'o,'n,'g,0
.area data(ram, con, rel)
000C .dbfile E:\xiaozhiyong2009\设计资料\项目设计\ICCAVR_mega8_C\ICCAVR_mega8_LCD1602显示\LCD1602显示.c
000C ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -