📄 lcd.s
字号:
.module lcd.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 E:\V3U~1\sd\M64-SD卡MP3程序/6x8.h
.dbsym e font6x8 _font6x8 A[552:92:6]kc
_china_char::
.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 0,252
.byte 148,148
.byte 148,255
.byte 148,148
.byte 148,254
.byte 4,0
.byte 0,1
.byte 0,0
.byte 0,3
.byte 4,4
.byte 4,4
.byte 6,0
.byte 32,33
.byte 33,33
.byte 33,249
.byte 41,37
.byte 35,49
.byte 32,0
.byte 0,0
.byte 0,4
.byte 4,7
.byte 0,0
.byte 0,0
.byte 0,0
.byte 32,34
.byte 34,254
.byte 34,34
.byte 34,254
.byte 34,35
.byte 34,0
.byte 4,4
.byte 2,1
.byte 0,0
.byte 0,7
.byte 0,0
.byte 0,0
.byte 8,14
.byte 136,'x
.byte 47,232
.byte 40,169
.byte 'j,8
.byte 8,0
.byte 4,2
.byte 5,4
.byte 2,2
.byte 1,2
.byte 2,4
.byte 4,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 16,241
.byte 18,16
.byte 8,244
.byte 131,'B
.byte 36,8
.byte 16,0
.byte 0,7
.byte 2,1
.byte 0,7
.byte 4,4
.byte 4,7
.byte 0,0
.byte 8,8
.byte 255,8
.byte 16,18
.byte 146,'r
.byte 18,18
.byte 16,0
.byte 2,2
.byte 1,1
.byte 4,6
.byte 5,4
.byte 4,5
.byte 6,0
.byte 0,56
.byte 252,252
.byte 56,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 6,6
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.dbfile E:\V3U~1\sd\M64-SD卡MP3程序/chinese.h
.dbsym e china_char _china_char A[288:12:24]kc
.area text(rom, con, rel)
.dbfile E:\V3U~1\sd\M64-SD卡MP3程序/chinese.h
.dbfile E:\V3U~1\sd\M64-SD卡MP3程序\lcd.c
.dbfunc e LCD_write_byte _LCD_write_byte fV
; command -> R18
; data -> R16
.even
_LCD_write_byte::
.dbline -1
.dbline 16
; #include <iom64v.h>
; #include <macros.h>
; #include "lcd.h"
; #include "delay.h"
; #include "6x8.h"
; #include "chinese.h"
;
; /*-----------------------------------------------------------------------
; LCD_write_byte: 使用SPI接口写数据到LCD
; 输入参数:data:写入的数据;
; command :写数据/命令选择;
; 编写日期:2004-8-10
; 最后修改日期:2006-10-23
; -----------------------------------------------------------------------*/
; void LCD_write_byte(unsigned char data, unsigned char command)
; {
.dbline 17
; SCE_L ; // 使能LCD
lds R24,98
andi R24,251
sts 98,R24
.dbline 18
; if (command == 0)
tst R18
brne L2
.dbline 19
; DC_L ; // 传送命令
lds R24,98
andi R24,254
sts 98,R24
xjmp L3
L2:
.dbline 21
; else
; DC_H ; // 传送数据
lds R24,98
ori R24,1
sts 98,R24
L3:
.dbline 22
; SPDR = data; // 传送数据到SPI寄存器
out 0xf,R16
L4:
.dbline 24
L5:
.dbline 23
; while ((SPSR & 0x80) == 0)
sbis 0xe,7
rjmp L4
.dbline 25
; ; // 等待数据传送完毕
; SCE_H ; // 关闭LCD
lds R24,98
ori R24,4
sts 98,R24
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r command 18 c
.dbsym r data 16 c
.dbend
.dbfunc e LCD_Init _LCD_Init fV
.even
_LCD_Init::
.dbline -1
.dbline 34
; }
;
; /*---------------------------------------
; LCD_init: 3310LCD初始化
; 编写日期:2004-8-10
; 最后修改日期:2006-10-23
; ----------------------------*/
; void LCD_Init(void)
; {
.dbline 35
; LCD_RES_DDR|=LCD_RES_BIT ;
lds R24,97
ori R24,8
sts 97,R24
.dbline 36
; LCD_SCE_DDR|=LCD_SCE_BIT ;
lds R24,97
ori R24,4
sts 97,R24
.dbline 39
; //LCD_SDIN_DDR|=LCD_SDIN_BIT ;
; //LCD_SCLK_DDR|=LCD_SCLK_BIT ;
; LCD_DC_DDR|=LCD_DC_BIT ;
lds R24,97
ori R24,1
sts 97,R24
.dbline 41
;
; RES_L; // 产生一个让LCD复位的低电平脉冲
lds R24,98
andi R24,247
sts 98,R24
.dbline 42
; delay_nus(100);
ldi R16,100
ldi R17,0
xcall _delay_nus
.dbline 43
; RES_H ;
lds R24,98
ori R24,8
sts 98,R24
.dbline 44
; SCE_L ; // 关闭LCD
lds R24,98
andi R24,251
sts 98,R24
.dbline 45
; delay_nus(100);
ldi R16,100
ldi R17,0
xcall _delay_nus
.dbline 46
; SCE_H; // 使能LCD
lds R24,98
ori R24,4
sts 98,R24
.dbline 47
; delay_us();
xcall _delay_us
.dbline 48
; LCD_write_byte(0x21, 0);// 使用扩展命令设置LCD模式
clr R18
ldi R16,33
xcall _LCD_write_byte
.dbline 49
; LCD_write_byte(0xc8, 0);// 设置偏置电压
clr R18
ldi R16,200
xcall _LCD_write_byte
.dbline 50
; LCD_write_byte(0x06, 0);// 温度校正
clr R18
ldi R16,6
xcall _LCD_write_byte
.dbline 51
; LCD_write_byte(0x13, 0);// 1:48
clr R18
ldi R16,19
xcall _LCD_write_byte
.dbline 52
; LCD_write_byte(0x20, 0);// 使用基本命令
clr R18
ldi R16,32
xcall _LCD_write_byte
.dbline 53
; LCD_clear(); // 清屏
xcall _LCD_clear
.dbline 54
; LCD_write_byte(0x0c, 0);// 设定显示模式,正常显示
clr R18
ldi R16,12
xcall _LCD_write_byte
.dbline 55
; SCE_L ; // 关闭LCD
lds R24,98
andi R24,251
sts 98,R24
.dbline -2
L7:
.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 64
; }
;
; /*-----------------------------------------------------------------------
; LCD_clear: LCD清屏函数
; 编写日期:2004-8-10
; 最后修改日期:2006-10-23
; -----------------------------------------------------------------------*/
; void LCD_clear(void)
; {
.dbline 66
; unsigned int i;
; LCD_write_byte(0x0c, 0);
clr R18
ldi R16,12
xcall _LCD_write_byte
.dbline 67
; LCD_write_byte(0x80, 0);
clr R18
ldi R16,128
xcall _LCD_write_byte
.dbline 68
; for (i=0; i<504; i++)
clr R20
clr R21
xjmp L12
L9:
.dbline 69
ldi R18,1
clr R16
xcall _LCD_write_byte
L10:
.dbline 68
subi R20,255 ; offset = 1
sbci R21,255
L12:
.dbline 68
cpi R20,248
ldi R30,1
cpc R21,R30
brlo L9
.dbline -2
L8:
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 80
; LCD_write_byte(0, 1);
; }
;
; /*-----------------------------------------------------------------------
; LCD_set_XY: 设置LCD坐标函数
; 输入参数:X:0-83
; Y:0-5
; 编写日期:2004-8-10
; 最后修改日期:2006-10-23
; -----------------------------------------------------------------------*/
; void LCD_set_XY(unsigned char X, unsigned char Y)
; {
.dbline 81
; LCD_write_byte(0x40 | Y, 0);// column
clr R18
mov R16,R22
ori R16,64
xcall _LCD_write_byte
.dbline 82
; LCD_write_byte(0x80 | X, 0);// row
clr R18
mov R16,R20
ori R16,128
xcall _LCD_write_byte
.dbline -2
L13:
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -