📄 lcd.lis
字号:
02B8 2022 .byte 32,34
02BA 22FE .byte 34,254
02BC 2222 .byte 34,34
02BE 22FE .byte 34,254
02C0 2223 .byte 34,35
02C2 2200 .byte 34,0
02C4 0404 .byte 4,4
02C6 0201 .byte 2,1
02C8 0000 .byte 0,0
02CA 0007 .byte 0,7
02CC 0000 .byte 0,0
02CE 0000 .byte 0,0
02D0 080E .byte 8,14
02D2 8878 .byte 136,'x
02D4 2FE8 .byte 47,232
02D6 28A9 .byte 40,169
02D8 6A08 .byte 'j,8
02DA 0800 .byte 8,0
02DC 0402 .byte 4,2
02DE 0504 .byte 5,4
02E0 0202 .byte 2,2
02E2 0102 .byte 1,2
02E4 0204 .byte 2,4
02E6 0400 .byte 4,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 10F1 .byte 16,241
0302 1210 .byte 18,16
0304 08F4 .byte 8,244
0306 8342 .byte 131,'B
0308 2408 .byte 36,8
030A 1000 .byte 16,0
030C 0007 .byte 0,7
030E 0201 .byte 2,1
0310 0007 .byte 0,7
0312 0404 .byte 4,4
0314 0407 .byte 4,7
0316 0000 .byte 0,0
0318 0808 .byte 8,8
031A FF08 .byte 255,8
031C 1012 .byte 16,18
031E 9272 .byte 146,'r
0320 1212 .byte 18,18
0322 1000 .byte 16,0
0324 0202 .byte 2,2
0326 0101 .byte 1,1
0328 0406 .byte 4,6
032A 0504 .byte 5,4
032C 0405 .byte 4,5
032E 0600 .byte 6,0
0330 0038 .byte 0,56
0332 FCFC .byte 252,252
0334 3800 .byte 56,0
0336 0000 .byte 0,0
0338 0000 .byte 0,0
033A 0000 .byte 0,0
033C 0000 .byte 0,0
033E 0606 .byte 6,6
0340 0000 .byte 0,0
0342 0000 .byte 0,0
0344 0000 .byte 0,0
0346 0000 .byte 0,0
0348 .dbfile E:\V3U~1\sd\M64-SD卡MP3程序/chinese.h
0348 .dbsym e china_char _china_char A[288:12:24]kc
.area text(rom, con, rel)
0000 .dbfile E:\V3U~1\sd\M64-SD卡MP3程序/chinese.h
0000 .dbfile E:\V3U~1\sd\M64-SD卡MP3程序\lcd.c
0000 .dbfunc e LCD_write_byte _LCD_write_byte fV
0000 ; command -> R18
0000 ; data -> R16
.even
0000 _LCD_write_byte::
0000 .dbline -1
0000 .dbline 16
0000 ; #include <iom64v.h>
0000 ; #include <macros.h>
0000 ; #include "lcd.h"
0000 ; #include "delay.h"
0000 ; #include "6x8.h"
0000 ; #include "chinese.h"
0000 ;
0000 ; /*-----------------------------------------------------------------------
0000 ; LCD_write_byte: 使用SPI接口写数据到LCD
0000 ; 输入参数:data:写入的数据;
0000 ; command :写数据/命令选择;
0000 ; 编写日期:2004-8-10
0000 ; 最后修改日期:2006-10-23
0000 ; -----------------------------------------------------------------------*/
0000 ; void LCD_write_byte(unsigned char data, unsigned char command)
0000 ; {
0000 .dbline 17
0000 ; SCE_L ; // 使能LCD
0000 80916200 lds R24,98
0004 8B7F andi R24,251
0006 80936200 sts 98,R24
000A .dbline 18
000A ; if (command == 0)
000A 2223 tst R18
000C 31F4 brne L2
000E .dbline 19
000E ; DC_L ; // 传送命令
000E 80916200 lds R24,98
0012 8E7F andi R24,254
0014 80936200 sts 98,R24
0018 05C0 xjmp L3
001A L2:
001A .dbline 21
001A ; else
001A ; DC_H ; // 传送数据
001A 80916200 lds R24,98
001E 8160 ori R24,1
0020 80936200 sts 98,R24
0024 L3:
0024 .dbline 22
0024 ; SPDR = data; // 传送数据到SPI寄存器
0024 0FB9 out 0xf,R16
0026 L4:
0026 .dbline 24
0026 L5:
0026 .dbline 23
0026 ; while ((SPSR & 0x80) == 0)
0026 779B sbis 0xe,7
0028 FECF rjmp L4
002A .dbline 25
002A ; ; // 等待数据传送完毕
002A ; SCE_H ; // 关闭LCD
002A 80916200 lds R24,98
002E 8460 ori R24,4
0030 80936200 sts 98,R24
0034 .dbline -2
0034 L1:
0034 .dbline 0 ; func end
0034 0895 ret
0036 .dbsym r command 18 c
0036 .dbsym r data 16 c
0036 .dbend
0036 .dbfunc e LCD_Init _LCD_Init fV
.even
0036 _LCD_Init::
0036 .dbline -1
0036 .dbline 34
0036 ; }
0036 ;
0036 ; /*---------------------------------------
0036 ; LCD_init: 3310LCD初始化
0036 ; 编写日期:2004-8-10
0036 ; 最后修改日期:2006-10-23
0036 ; ----------------------------*/
0036 ; void LCD_Init(void)
0036 ; {
0036 .dbline 35
0036 ; LCD_RES_DDR|=LCD_RES_BIT ;
0036 80916100 lds R24,97
003A 8860 ori R24,8
003C 80936100 sts 97,R24
0040 .dbline 36
0040 ; LCD_SCE_DDR|=LCD_SCE_BIT ;
0040 80916100 lds R24,97
0044 8460 ori R24,4
0046 80936100 sts 97,R24
004A .dbline 39
004A ; //LCD_SDIN_DDR|=LCD_SDIN_BIT ;
004A ; //LCD_SCLK_DDR|=LCD_SCLK_BIT ;
004A ; LCD_DC_DDR|=LCD_DC_BIT ;
004A 80916100 lds R24,97
004E 8160 ori R24,1
0050 80936100 sts 97,R24
0054 .dbline 41
0054 ;
0054 ; RES_L; // 产生一个让LCD复位的低电平脉冲
0054 80916200 lds R24,98
0058 877F andi R24,247
005A 80936200 sts 98,R24
005E .dbline 42
005E ; delay_nus(100);
005E 04E6 ldi R16,100
0060 10E0 ldi R17,0
0062 0E940000 xcall _delay_nus
0066 .dbline 43
0066 ; RES_H ;
0066 80916200 lds R24,98
006A 8860 ori R24,8
006C 80936200 sts 98,R24
0070 .dbline 44
0070 ; SCE_L ; // 关闭LCD
0070 80916200 lds R24,98
0074 8B7F andi R24,251
0076 80936200 sts 98,R24
007A .dbline 45
007A ; delay_nus(100);
007A 04E6 ldi R16,100
007C 10E0 ldi R17,0
007E 0E940000 xcall _delay_nus
0082 .dbline 46
0082 ; SCE_H; // 使能LCD
0082 80916200 lds R24,98
0086 8460 ori R24,4
0088 80936200 sts 98,R24
008C .dbline 47
008C ; delay_us();
008C 0E940000 xcall _delay_us
0090 .dbline 48
0090 ; LCD_write_byte(0x21, 0);// 使用扩展命令设置LCD模式
0090 2227 clr R18
0092 01E2 ldi R16,33
0094 B5DF xcall _LCD_write_byte
0096 .dbline 49
0096 ; LCD_write_byte(0xc8, 0);// 设置偏置电压
0096 2227 clr R18
0098 08EC ldi R16,200
009A B2DF xcall _LCD_write_byte
009C .dbline 50
009C ; LCD_write_byte(0x06, 0);// 温度校正
009C 2227 clr R18
009E 06E0 ldi R16,6
00A0 AFDF xcall _LCD_write_byte
00A2 .dbline 51
00A2 ; LCD_write_byte(0x13, 0);// 1:48
00A2 2227 clr R18
00A4 03E1 ldi R16,19
00A6 ACDF xcall _LCD_write_byte
00A8 .dbline 52
00A8 ; LCD_write_byte(0x20, 0);// 使用基本命令
00A8 2227 clr R18
00AA 00E2 ldi R16,32
00AC A9DF xcall _LCD_write_byte
00AE .dbline 53
00AE ; LCD_clear(); // 清屏
00AE 09D0 xcall _LCD_clear
00B0 .dbline 54
00B0 ; LCD_write_byte(0x0c, 0);// 设定显示模式,正常显示
00B0 2227 clr R18
00B2 0CE0 ldi R16,12
00B4 A5DF xcall _LCD_write_byte
00B6 .dbline 55
00B6 ; SCE_L ; // 关闭LCD
00B6 80916200 lds R24,98
00BA 8B7F andi R24,251
00BC 80936200 sts 98,R24
00C0 .dbline -2
00C0 L7:
00C0 .dbline 0 ; func end
00C0 0895 ret
00C2 .dbend
00C2 .dbfunc e LCD_clear _LCD_clear fV
00C2 ; i -> R20,R21
.even
00C2 _LCD_clear::
00C2 0E940000 xcall push_gset1
00C6 .dbline -1
00C6 .dbline 64
00C6 ; }
00C6 ;
00C6 ; /*-----------------------------------------------------------------------
00C6 ; LCD_clear: LCD清屏函数
00C6 ; 编写日期:2004-8-10
00C6 ; 最后修改日期:2006-10-23
00C6 ; -----------------------------------------------------------------------*/
00C6 ; void LCD_clear(void)
00C6 ; {
00C6 .dbline 66
00C6 ; unsigned int i;
00C6 ; LCD_write_byte(0x0c, 0);
00C6 2227 clr R18
00C8 0CE0 ldi R16,12
00CA 9ADF xcall _LCD_write_byte
00CC .dbline 67
00CC ; LCD_write_byte(0x80, 0);
00CC 2227 clr R18
00CE 00E8 ldi R16,128
00D0 97DF xcall _LCD_write_byte
00D2 .dbline 68
00D2 ; for (i=0; i<504; i++)
00D2 4427 clr R20
00D4 5527 clr R21
00D6 05C0 xjmp L12
00D8 L9:
00D8 .dbline 69
00D8 21E0 ldi R18,1
00DA 0027 clr R16
00DC 91DF xcall _LCD_write_byte
00DE L10:
00DE .dbline 68
00DE 4F5F subi R20,255 ; offset = 1
00E0 5F4F sbci R21,255
00E2 L12:
00E2 .dbline 68
00E2 483F cpi R20,248
00E4 E1E0 ldi R30,1
00E6 5E07 cpc R21,R30
00E8 B8F3 brlo L9
00EA .dbline -2
00EA L8:
00EA 0E940000 xcall pop_gset1
00EE .dbline 0 ; func end
00EE 0895 ret
00F0 .dbsym r i 20 i
00F0 .dbend
00F0 .dbfunc e LCD_set_XY _LCD_set_XY fV
00F0 ; Y -> R22
00F0 ; X -> R20
.even
00F0 _LCD_set_XY::
00F0 0E940000 xcall push_gset2
00F4 622F mov R22,R18
00F6 402F mov R20,R16
00F8 .dbline -1
00F8 .dbline 80
00F8 ; LCD_write_byte(0, 1);
00F8 ; }
00F8 ;
00F8 ; /*-----------------------------------------------------------------------
00F8 ; LCD_set_XY: 设置LCD坐标函数
00F8 ; 输入参数:X:0-83
00F8 ; Y:0-5
00F8 ; 编写日期:2004-8-10
00F8 ; 最后修改日期:2006-10-23
00F8 ; -----------------------------------------------------------------------*/
00F8 ; void LCD_set_XY(unsigned char X, unsigned char Y)
00F8 ; {
00F8 .dbline 81
00F8 ; LCD_write_byte(0x40 | Y, 0);// column
00F8 2227 clr R18
00FA 062F mov R16,R22
00FC 0064 ori R16,64
00FE 80DF xcall _LCD_write_byte
0100 .dbline 82
0100 ; LCD_write_byte(0x80 | X, 0);// row
0100 2227 clr R18
0102 042F mov R16,R20
0104 0068 ori R16,128
0106 7CDF xcall _LCD_write_byte
0108 .dbline -2
0108 L13:
0108 0E940000 xcall pop_gset2
010C .dbline 0 ; func end
010C 0895 ret
010E .dbsym r Y 22 c
010E .dbsym r X 20 c
010E .dbend
010E .dbfunc e LCD_write_char _LCD_write_char fV
010E ; line -> R20
010E ; c -> R22
.even
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -