📄 3310lcd_function.lis
字号:
02AE 0201 .byte 2,1
02B0 0000 .byte 0,0
02B2 0304 .byte 3,4
02B4 0404 .byte 4,4
02B6 0700 .byte 7,0
02B8 FC00 .byte 252,0
02BA FF00 .byte 255,0
02BC 10CC .byte 16,204
02BE 47CC .byte 'G,204
02C0 5444 .byte 'T,'D
02C2 C400 .byte 196,0
02C4 0100 .byte 1,0
02C6 0700 .byte 7,0
02C8 0007 .byte 0,7
02CA 0203 .byte 2,3
02CC 0202 .byte 2,2
02CE 0700 .byte 7,0
02D0 0484 .byte 4,132
02D2 4424 .byte 'D,36
02D4 14FF .byte 20,255
02D6 1424 .byte 20,36
02D8 4486 .byte 'D,134
02DA 0400 .byte 4,0
02DC 0100 .byte 1,0
02DE 0101 .byte 1,1
02E0 0107 .byte 1,7
02E2 0101 .byte 1,1
02E4 0100 .byte 1,0
02E6 0100 .byte 1,0
02E8 00FF .byte 0,255
02EA 4931 .byte 'I,49
02EC 4D81 .byte 'M,129
02EE 4931 .byte 'I,49
02F0 CD01 .byte 205,1
02F2 FF00 .byte 255,0
02F4 0007 .byte 0,7
02F6 0000 .byte 0,0
02F8 0000 .byte 0,0
02FA 0000 .byte 0,0
02FC 0404 .byte 4,4
02FE 0700 .byte 7,0
0300 0475 .byte 4,'u
0302 8674 .byte 134,'t
0304 04C0 .byte 4,192
0306 407F .byte 64,127
0308 44C4 .byte 'D,196
030A 0400 .byte 4,0
030C 0202 .byte 2,2
030E 0101 .byte 1,1
0310 0107 .byte 1,7
0312 0202 .byte 2,2
0314 0207 .byte 2,7
0316 0000 .byte 0,0
0318 001C .byte 0,28
031A 7E7E .byte 126,126
031C 1C00 .byte 28,0
031E 0000 .byte 0,0
0320 0000 .byte 0,0
0322 0000 .byte 0,0
0324 0000 .byte 0,0
0326 0303 .byte 3,3
0328 0000 .byte 0,0
032A 0000 .byte 0,0
032C 0000 .byte 0,0
032E 0000 .byte 0,0
0330 .dbfile D:\AVR\527dz\00--Mega16\3310/move_chinese_string_pixel.h
0330 .dbsym e move_chinese_string _move_chinese_string A[192:8:24]kc
.area text(rom, con, rel)
0000 .dbfile D:\AVR\527dz\00--Mega16\3310/move_chinese_string_pixel.h
0000 .dbfile D:\AVR\527dz\00--Mega16\3310\3310LCD_function.c
0000 .dbfunc e LCD_init _LCD_init fV
.even
0000 _LCD_init::
0000 .dbline -1
0000 .dbline 15
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; #include "3310LCD_function.h"
0000 ; #include "english_6x8_pixel.h"
0000 ; #include "write_chinese_string_pixel.h"
0000 ; #include "move_chinese_string_pixel.h"
0000 ;
0000 ; /*-----------------------------------------------------------------------
0000 ; LCD_init : 3310LCD初始化
0000 ;
0000 ; 编写日期 :2004-8-10
0000 ; 最后修改日期 :2004-8-10
0000 ; -----------------------------------------------------------------------*/
0000 ; void LCD_init(void)
0000 ; {
0000 .dbline 16
0000 ; PORTB &= ~LCD_RST; // 产生一个让LCD复位的低电平脉冲
0000 C698 cbi 0x18,6
0002 .dbline 17
0002 ; delay_1us();
0002 0E940000 xcall _delay_1us
0006 .dbline 18
0006 ; PORTB |= LCD_RST;
0006 C69A sbi 0x18,6
0008 .dbline 20
0008 ;
0008 ; PORTB &= ~LCD_CE ; // 关闭LCD
0008 C498 cbi 0x18,4
000A .dbline 21
000A ; delay_1us();
000A 0E940000 xcall _delay_1us
000E .dbline 22
000E ; PORTB |= LCD_CE; // 使能LCD
000E C49A sbi 0x18,4
0010 .dbline 23
0010 ; delay_1us();
0010 0E940000 xcall _delay_1us
0014 .dbline 25
0014 ;
0014 ; LCD_write_byte(0x21, 0); // 使用扩展命令设置LCD模式
0014 2227 clr R18
0016 01E2 ldi R16,33
0018 A6D1 xcall _LCD_write_byte
001A .dbline 26
001A ; LCD_write_byte(0xc8, 0); // 设置偏置电压
001A 2227 clr R18
001C 08EC ldi R16,200
001E A3D1 xcall _LCD_write_byte
0020 .dbline 27
0020 ; LCD_write_byte(0x06, 0); // 温度校正
0020 2227 clr R18
0022 06E0 ldi R16,6
0024 A0D1 xcall _LCD_write_byte
0026 .dbline 28
0026 ; LCD_write_byte(0x13, 0); // 1:48
0026 2227 clr R18
0028 03E1 ldi R16,19
002A 9DD1 xcall _LCD_write_byte
002C .dbline 29
002C ; LCD_write_byte(0x20, 0); // 使用基本命令
002C 2227 clr R18
002E 00E2 ldi R16,32
0030 9AD1 xcall _LCD_write_byte
0032 .dbline 30
0032 ; LCD_clear(); // 清屏
0032 05D0 xcall _LCD_clear
0034 .dbline 31
0034 ; LCD_write_byte(0x0c, 0); // 设定显示模式,正常显示
0034 2227 clr R18
0036 0CE0 ldi R16,12
0038 96D1 xcall _LCD_write_byte
003A .dbline 33
003A ;
003A ; PORTB &= ~LCD_CE ; // 关闭LCD
003A C498 cbi 0x18,4
003C .dbline -2
003C L1:
003C .dbline 0 ; func end
003C 0895 ret
003E .dbend
003E .dbfunc e LCD_clear _LCD_clear fV
003E ; i -> R20,R21
.even
003E _LCD_clear::
003E 0E940000 xcall push_gset1
0042 .dbline -1
0042 .dbline 43
0042 ; }
0042 ;
0042 ; /*-----------------------------------------------------------------------
0042 ; LCD_clear : LCD清屏函数
0042 ;
0042 ; 编写日期 :2004-8-10
0042 ; 最后修改日期 :2004-8-10
0042 ; -----------------------------------------------------------------------*/
0042 ; void LCD_clear(void)
0042 ; {
0042 .dbline 46
0042 ; unsigned int i;
0042 ;
0042 ; LCD_write_byte(0x0c, 0);
0042 2227 clr R18
0044 0CE0 ldi R16,12
0046 8FD1 xcall _LCD_write_byte
0048 .dbline 47
0048 ; LCD_write_byte(0x80, 0);
0048 2227 clr R18
004A 00E8 ldi R16,128
004C 8CD1 xcall _LCD_write_byte
004E .dbline 49
004E ;
004E ; for (i=0; i<504; i++)
004E 4427 clr R20
0050 5527 clr R21
0052 05C0 xjmp L6
0054 L3:
0054 .dbline 50
0054 21E0 ldi R18,1
0056 0027 clr R16
0058 86D1 xcall _LCD_write_byte
005A L4:
005A .dbline 49
005A 4F5F subi R20,255 ; offset = 1
005C 5F4F sbci R21,255
005E L6:
005E .dbline 49
005E 483F cpi R20,248
0060 E1E0 ldi R30,1
0062 5E07 cpc R21,R30
0064 B8F3 brlo L3
0066 .dbline -2
0066 L2:
0066 0E940000 xcall pop_gset1
006A .dbline 0 ; func end
006A 0895 ret
006C .dbsym r i 20 i
006C .dbend
006C .dbfunc e LCD_set_XY _LCD_set_XY fV
006C ; Y -> R22
006C ; X -> R20
.even
006C _LCD_set_XY::
006C 0E940000 xcall push_gset2
0070 622F mov R22,R18
0072 402F mov R20,R16
0074 .dbline -1
0074 .dbline 63
0074 ; LCD_write_byte(0, 1);
0074 ; }
0074 ;
0074 ; /*-----------------------------------------------------------------------
0074 ; LCD_set_XY : 设置LCD坐标函数
0074 ;
0074 ; 输入参数:X :0-83
0074 ; Y :0-5
0074 ;
0074 ; 编写日期 :2004-8-10
0074 ; 最后修改日期 :2004-8-10
0074 ; -----------------------------------------------------------------------*/
0074 ; void LCD_set_XY(unsigned char X, unsigned char Y)
0074 ; {
0074 .dbline 64
0074 ; LCD_write_byte(0x40 | Y, 0); // column
0074 2227 clr R18
0076 062F mov R16,R22
0078 0064 ori R16,64
007A 75D1 xcall _LCD_write_byte
007C .dbline 65
007C ; LCD_write_byte(0x80 | X, 0); // row
007C 2227 clr R18
007E 042F mov R16,R20
0080 0068 ori R16,128
0082 71D1 xcall _LCD_write_byte
0084 .dbline -2
0084 L7:
0084 0E940000 xcall pop_gset2
0088 .dbline 0 ; func end
0088 0895 ret
008A .dbsym r Y 22 c
008A .dbsym r X 20 c
008A .dbend
008A .dbfunc e LCD_write_char _LCD_write_char fV
008A ; line -> R20
008A ; c -> R22
.even
008A _LCD_write_char::
008A 0E940000 xcall push_gset2
008E 602F mov R22,R16
0090 .dbline -1
0090 .dbline 77
0090 ; }
0090 ;
0090 ; /*-----------------------------------------------------------------------
0090 ; LCD_write_char : 显示英文字符
0090 ;
0090 ; 输入参数:c :显示的字符;
0090 ;
0090 ; 编写日期 :2004-8-10
0090 ; 最后修改日期 :2004-8-10
0090 ; -----------------------------------------------------------------------*/
0090 ; void LCD_write_char(unsigned char c)
0090 ; {
0090 .dbline 80
0090 ; unsigned char line;
0090 ;
0090 ; c -= 32;
0090 6052 subi R22,32
0092 .dbline 82
0092 ;
0092 ; for (line=0; line<6; line++)
0092 4427 clr R20
0094 0FC0 xjmp L12
0096 L9:
0096 .dbline 83
0096 21E0 ldi R18,1
0098 86E0 ldi R24,6
009A 869F mul R24,R22
009C 1001 movw R2,R0
009E 80E0 ldi R24,<_font6x8
00A0 90E0 ldi R25,>_font6x8
00A2 280E add R2,R24
00A4 391E adc R3,R25
00A6 E42F mov R30,R20
00A8 FF27 clr R31
00AA E20D add R30,R2
00AC F31D adc R31,R3
00AE 0491 lpm R16,Z
00B0 5AD1 xcall _LCD_write_byte
00B2 L10:
00B2 .dbline 82
00B2 4395 inc R20
00B4 L12:
00B4 .dbline 82
00B4 4630 cpi R20,6
00B6 78F3 brlo L9
00B8 .dbline -2
00B8 L8:
00B8 0E940000 xcall pop_gset2
00BC .dbline 0 ; func end
00BC 0895 ret
00BE .dbsym r line 20 c
00BE .dbsym r c 22 c
00BE .dbend
00BE .dbfunc e LCD_write_english_string _LCD_write_english_string fV
00BE ; s -> R20,R21
00BE ; Y -> R10
00BE ; X -> R22
.even
00BE _LCD_write_english_string::
00BE 0E940000 xcall push_gset3
00C2 A22E mov R10,R18
00C4 602F mov R22,R16
00C6 4E81 ldd R20,y+6
00C8 5F81 ldd R21,y+7
00CA .dbline -1
00CA .dbline 96
00CA ; LCD_write_byte(font6x8[c][line], 1);
00CA ; }
00CA ;
00CA ; /*-----------------------------------------------------------------------
00CA ; LCD_write_english_String : 英文字符串显示函数
00CA ;
00CA ; 输入参数:*s :英文字符串指针;
00CA ; X、Y : 显示字符串的位置,x 0-83 ,y 0-5
00CA ;
00CA ; 编写日期 :2004-8-10
00CA ; 最后修改日期 :2004-8-10
00CA ; -----------------------------------------------------------------------*/
00CA ; void LCD_write_english_string(unsigned char X,unsigned char Y,char *s)
00CA ; {
00CA .dbline 97
00CA ; LCD_set_XY(X,Y);
00CA 2A2D mov R18,R10
00CC 062F mov R16,R22
00CE CEDF xcall _LCD_set_XY
00D0 05C0 xjmp L15
00D2 L14:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -