📄 3310lcd_function.s
字号:
.module _3310LCD_function.c
.area lit(rom, con, rel)
_font6x8::
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,47
.byte 0,0
.byte 0,0
.byte 7,0
.byte 7,0
.byte 0,20
.byte 127,20
.byte 127,20
.byte 0,36
.byte 42,127
.byte 42,18
.byte 0,'b
.byte 'd,8
.byte 19,35
.byte 0,54
.byte 'I,'U
.byte 34,'P
.byte 0,0
.byte 5,3
.byte 0,0
.byte 0,0
.byte 28,34
.byte 'A,0
.byte 0,0
.byte 'A,34
.byte 28,0
.byte 0,20
.byte 8,62
.byte 8,20
.byte 0,8
.byte 8,62
.byte 8,8
.byte 0,0
.byte 0,160
.byte 96,0
.byte 0,8
.byte 8,8
.byte 8,8
.byte 0,0
.byte 96,96
.byte 0,0
.byte 0,32
.byte 16,8
.byte 4,2
.byte 0,62
.byte 'Q,'I
.byte 'E,62
.byte 0,0
.byte 'B,127
.byte 64,0
.byte 0,'B
.byte 'a,'Q
.byte 'I,'F
.byte 0,33
.byte 'A,'E
.byte 'K,49
.byte 0,24
.byte 20,18
.byte 127,16
.byte 0,39
.byte 'E,'E
.byte 'E,57
.byte 0,60
.byte 'J,'I
.byte 'I,48
.byte 0,1
.byte 'q,9
.byte 5,3
.byte 0,54
.byte 'I,'I
.byte 'I,54
.byte 0,6
.byte 'I,'I
.byte 41,30
.byte 0,0
.byte 54,54
.byte 0,0
.byte 0,0
.byte 'V,54
.byte 0,0
.byte 0,8
.byte 20,34
.byte 'A,0
.byte 0,20
.byte 20,20
.byte 20,20
.byte 0,0
.byte 'A,34
.byte 20,8
.byte 0,2
.byte 1,'Q
.byte 9,6
.byte 0,50
.byte 'I,'Y
.byte 'Q,62
.byte 0,124
.byte 18,17
.byte 18,124
.byte 0,127
.byte 'I,'I
.byte 'I,54
.byte 0,62
.byte 'A,'A
.byte 'A,34
.byte 0,127
.byte 'A,'A
.byte 34,28
.byte 0,127
.byte 'I,'I
.byte 'I,'A
.byte 0,127
.byte 9,9
.byte 9,1
.byte 0,62
.byte 'A,'I
.byte 'I,'z
.byte 0,127
.byte 8,8
.byte 8,127
.byte 0,0
.byte 'A,127
.byte 'A,0
.byte 0,32
.byte 64,'A
.byte 63,1
.byte 0,127
.byte 8,20
.byte 34,'A
.byte 0,127
.byte 64,64
.byte 64,64
.byte 0,127
.byte 2,12
.byte 2,127
.byte 0,127
.byte 4,8
.byte 16,127
.byte 0,62
.byte 'A,'A
.byte 'A,62
.byte 0,127
.byte 9,9
.byte 9,6
.byte 0,62
.byte 'A,'Q
.byte 33,94
.byte 0,127
.byte 9,25
.byte 41,'F
.byte 0,'F
.byte 'I,'I
.byte 'I,49
.byte 0,1
.byte 1,127
.byte 1,1
.byte 0,63
.byte 64,64
.byte 64,63
.byte 0,31
.byte 32,64
.byte 32,31
.byte 0,63
.byte 64,56
.byte 64,63
.byte 0,'c
.byte 20,8
.byte 20,'c
.byte 0,7
.byte 8,'p
.byte 8,7
.byte 0,'a
.byte 'Q,'I
.byte 'E,'C
.byte 0,0
.byte 127,'A
.byte 'A,0
.byte 0,'U
.byte 42,'U
.byte 42,'U
.byte 0,0
.byte 'A,'A
.byte 127,0
.byte 0,4
.byte 2,1
.byte 2,4
.byte 0,64
.byte 64,64
.byte 64,64
.byte 0,0
.byte 1,2
.byte 4,0
.byte 0,32
.byte 'T,'T
.byte 'T,'x
.byte 0,127
.byte 'H,'D
.byte 'D,56
.byte 0,56
.byte 'D,'D
.byte 'D,32
.byte 0,56
.byte 'D,'D
.byte 'H,127
.byte 0,56
.byte 'T,'T
.byte 'T,24
.byte 0,8
.byte 126,9
.byte 1,2
.byte 0,24
.byte 164,164
.byte 164,124
.byte 0,127
.byte 8,4
.byte 4,'x
.byte 0,0
.byte 'D,125
.byte 64,0
.byte 0,64
.byte 128,132
.byte 125,0
.byte 0,127
.byte 16,40
.byte 'D,0
.byte 0,0
.byte 'A,127
.byte 64,0
.byte 0,124
.byte 4,24
.byte 4,'x
.byte 0,124
.byte 8,4
.byte 4,'x
.byte 0,56
.byte 'D,'D
.byte 'D,56
.byte 0,252
.byte 36,36
.byte 36,24
.byte 0,24
.byte 36,36
.byte 24,252
.byte 0,124
.byte 8,4
.byte 4,8
.byte 0,'H
.byte 'T,'T
.byte 'T,32
.byte 0,4
.byte 63,'D
.byte 64,32
.byte 0,60
.byte 64,64
.byte 32,124
.byte 0,28
.byte 32,64
.byte 32,28
.byte 0,60
.byte 64,48
.byte 64,60
.byte 0,'D
.byte 40,16
.byte 40,'D
.byte 0,28
.byte 160,160
.byte 160,124
.byte 0,'D
.byte 'd,'T
.byte 'L,'D
.byte 20,20
.byte 20,20
.byte 20,20
.dbfile D:\AVR\527dz\00--Mega16\3310/english_6x8_pixel.h
.dbsym e font6x8 _font6x8 A[552:92:6]kc
_write_chinese_string::
.byte 138,138
.byte 'J,254
.byte 'I,40
.byte 127,136
.byte 'I,42
.byte 8,0
.byte 0,4
.byte 4,7
.byte 2,2
.byte 1,1
.byte 2,4
.byte 7,0
.byte 16,252
.byte 3,0
.byte 253,2
.byte 4,2
.byte 2,2
.byte 254,0
.byte 0,7
.byte 0,0
.byte 7,0
.byte 0,0
.byte 4,4
.byte 7,0
.byte 252,'D
.byte 'F,'E
.byte 252,16
.byte 44,199
.byte 4,4
.byte 252,0
.byte 7,2
.byte 2,2
.byte 7,0
.byte 0,4
.byte 4,4
.byte 3,0
.dbfile D:\AVR\527dz\00--Mega16\3310/write_chinese_string_pixel.h
.dbsym e write_chinese_string _write_chinese_string A[72:3:24]kc
_move_chinese_string::
.byte 10,146
.byte 'b,158
.byte 2,24
.byte 135,'t
.byte 132,20
.byte 12,0
.byte 2,1
.byte 0,4
.byte 5,2
.byte 1,0
.byte 1,2
.byte 4,0
.byte 8,249
.byte 2,0
.byte 254,'B
.byte 'A,254
.byte 2,130
.byte 254,0
.byte 6,1
.byte 2,2
.byte 4,4
.byte 4,5
.byte 4,4
.byte 4,0
.byte 16,18
.byte 20,248
.byte 16,31
.byte 240,24
.byte 20,18
.byte 16,0
.byte 4,4
.byte 2,1
.byte 0,0
.byte 3,4
.byte 4,4
.byte 7,0
.byte 252,0
.byte 255,0
.byte 16,204
.byte 'G,204
.byte 'T,'D
.byte 196,0
.byte 1,0
.byte 7,0
.byte 0,7
.byte 2,3
.byte 2,2
.byte 7,0
.byte 4,132
.byte 'D,36
.byte 20,255
.byte 20,36
.byte 'D,134
.byte 4,0
.byte 1,0
.byte 1,1
.byte 1,7
.byte 1,1
.byte 1,0
.byte 1,0
.byte 0,255
.byte 'I,49
.byte 'M,129
.byte 'I,49
.byte 205,1
.byte 255,0
.byte 0,7
.byte 0,0
.byte 0,0
.byte 0,0
.byte 4,4
.byte 7,0
.byte 4,'u
.byte 134,'t
.byte 4,192
.byte 64,127
.byte 'D,196
.byte 4,0
.byte 2,2
.byte 1,1
.byte 1,7
.byte 2,2
.byte 2,7
.byte 0,0
.byte 0,28
.byte 126,126
.byte 28,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 3,3
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.dbfile D:\AVR\527dz\00--Mega16\3310/move_chinese_string_pixel.h
.dbsym e move_chinese_string _move_chinese_string A[192:8:24]kc
.area text(rom, con, rel)
.dbfile D:\AVR\527dz\00--Mega16\3310/move_chinese_string_pixel.h
.dbfile D:\AVR\527dz\00--Mega16\3310\3310LCD_function.c
.dbfunc e LCD_init _LCD_init fV
.even
_LCD_init::
.dbline -1
.dbline 15
; #include <iom16v.h>
; #include <macros.h>
; #include "3310LCD_function.h"
; #include "english_6x8_pixel.h"
; #include "write_chinese_string_pixel.h"
; #include "move_chinese_string_pixel.h"
;
; /*-----------------------------------------------------------------------
; LCD_init : 3310LCD初始化
;
; 编写日期 :2004-8-10
; 最后修改日期 :2004-8-10
; -----------------------------------------------------------------------*/
; void LCD_init(void)
; {
.dbline 16
; PORTB &= ~LCD_RST; // 产生一个让LCD复位的低电平脉冲
cbi 0x18,6
.dbline 17
; delay_1us();
xcall _delay_1us
.dbline 18
; PORTB |= LCD_RST;
sbi 0x18,6
.dbline 20
;
; PORTB &= ~LCD_CE ; // 关闭LCD
cbi 0x18,4
.dbline 21
; delay_1us();
xcall _delay_1us
.dbline 22
; PORTB |= LCD_CE; // 使能LCD
sbi 0x18,4
.dbline 23
; delay_1us();
xcall _delay_1us
.dbline 25
;
; LCD_write_byte(0x21, 0); // 使用扩展命令设置LCD模式
clr R18
ldi R16,33
xcall _LCD_write_byte
.dbline 26
; LCD_write_byte(0xc8, 0); // 设置偏置电压
clr R18
ldi R16,200
xcall _LCD_write_byte
.dbline 27
; LCD_write_byte(0x06, 0); // 温度校正
clr R18
ldi R16,6
xcall _LCD_write_byte
.dbline 28
; LCD_write_byte(0x13, 0); // 1:48
clr R18
ldi R16,19
xcall _LCD_write_byte
.dbline 29
; LCD_write_byte(0x20, 0); // 使用基本命令
clr R18
ldi R16,32
xcall _LCD_write_byte
.dbline 30
; LCD_clear(); // 清屏
xcall _LCD_clear
.dbline 31
; LCD_write_byte(0x0c, 0); // 设定显示模式,正常显示
clr R18
ldi R16,12
xcall _LCD_write_byte
.dbline 33
;
; PORTB &= ~LCD_CE ; // 关闭LCD
cbi 0x18,4
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e LCD_clear _LCD_clear fV
; i -> R20,R21
.even
_LCD_clear::
xcall push_gset1
.dbline -1
.dbline 43
; }
;
; /*-----------------------------------------------------------------------
; LCD_clear : LCD清屏函数
;
; 编写日期 :2004-8-10
; 最后修改日期 :2004-8-10
; -----------------------------------------------------------------------*/
; void LCD_clear(void)
; {
.dbline 46
; unsigned int i;
;
; LCD_write_byte(0x0c, 0);
clr R18
ldi R16,12
xcall _LCD_write_byte
.dbline 47
; LCD_write_byte(0x80, 0);
clr R18
ldi R16,128
xcall _LCD_write_byte
.dbline 49
;
; for (i=0; i<504; i++)
clr R20
clr R21
xjmp L6
L3:
.dbline 50
ldi R18,1
clr R16
xcall _LCD_write_byte
L4:
.dbline 49
subi R20,255 ; offset = 1
sbci R21,255
L6:
.dbline 49
cpi R20,248
ldi R30,1
cpc R21,R30
brlo L3
.dbline -2
L2:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbend
.dbfunc e LCD_set_XY _LCD_set_XY fV
; Y -> R22
; X -> R20
.even
_LCD_set_XY::
xcall push_gset2
mov R22,R18
mov R20,R16
.dbline -1
.dbline 63
; LCD_write_byte(0, 1);
; }
;
; /*-----------------------------------------------------------------------
; LCD_set_XY : 设置LCD坐标函数
;
; 输入参数:X :0-83
; Y :0-5
;
; 编写日期 :2004-8-10
; 最后修改日期 :2004-8-10
; -----------------------------------------------------------------------*/
; void LCD_set_XY(unsigned char X, unsigned char Y)
; {
.dbline 64
; LCD_write_byte(0x40 | Y, 0); // column
clr R18
mov R16,R22
ori R16,64
xcall _LCD_write_byte
.dbline 65
; LCD_write_byte(0x80 | X, 0); // row
clr R18
mov R16,R20
ori R16,128
xcall _LCD_write_byte
.dbline -2
L7:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r Y 22 c
.dbsym r X 20 c
.dbend
.dbfunc e LCD_write_char _LCD_write_char fV
; line -> R20
; c -> R22
.even
_LCD_write_char::
xcall push_gset2
mov R22,R16
.dbline -1
.dbline 77
; }
;
; /*-----------------------------------------------------------------------
; LCD_write_char : 显示英文字符
;
; 输入参数:c :显示的字符;
;
; 编写日期 :2004-8-10
; 最后修改日期 :2004-8-10
; -----------------------------------------------------------------------*/
; void LCD_write_char(unsigned char c)
; {
.dbline 80
; unsigned char line;
;
; c -= 32;
subi R22,32
.dbline 82
;
; for (line=0; line<6; line++)
clr R20
xjmp L12
L9:
.dbline 83
ldi R18,1
ldi R24,6
mul R24,R22
movw R2,R0
ldi R24,<_font6x8
ldi R25,>_font6x8
add R2,R24
adc R3,R25
mov R30,R20
clr R31
add R30,R2
adc R31,R3
lpm R16,Z
xcall _LCD_write_byte
L10:
.dbline 82
inc R20
L12:
.dbline 82
cpi R20,6
brlo L9
.dbline -2
L8:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r line 20 c
.dbsym r c 22 c
.dbend
.dbfunc e LCD_write_english_string _LCD_write_english_string fV
; s -> R20,R21
; Y -> R10
; X -> R22
.even
_LCD_write_english_string::
xcall push_gset3
mov R10,R18
mov R22,R16
ldd R20,y+6
ldd R21,y+7
.dbline -1
.dbline 96
; LCD_write_byte(font6x8[c][line], 1);
; }
;
; /*-----------------------------------------------------------------------
; LCD_write_english_String : 英文字符串显示函数
;
; 输入参数:*s :英文字符串指针;
; X、Y : 显示字符串的位置,x 0-83 ,y 0-5
;
; 编写日期 :2004-8-10
; 最后修改日期 :2004-8-10
; -----------------------------------------------------------------------*/
; void LCD_write_english_string(unsigned char X,unsigned char Y,char *s)
; {
.dbline 97
; LCD_set_XY(X,Y);
mov R18,R10
mov R16,R22
xcall _LCD_set_XY
xjmp L15
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -