⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3310_5110lcd.lis

📁 5110综合演示 变成结构 流程 头文件
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0008 C498              cbi 0x18,4
 000A                   .dbline 29
 000A           ;     delay_1us();
 000A 0E940000          xcall _delay_1us
 000E                   .dbline 30
 000E           ;     PORTB |= LCD_CE;              // 使能LCD
 000E C49A              sbi 0x18,4
 0010                   .dbline 31
 0010           ;     delay_1us();
 0010 0E940000          xcall _delay_1us
 0014                   .dbline 33
 0014           ; 
 0014           ;     LCD_write_byte(0x21, 0);  // 使用扩展命令设置LCD模式
 0014 2227              clr R18
 0016 01E2              ldi R16,33
 0018 ACD1              xcall _LCD_write_byte
 001A                   .dbline 34
 001A           ;     LCD_write_byte(0xc8, 0);  // 设置偏置电压
 001A 2227              clr R18
 001C 08EC              ldi R16,200
 001E A9D1              xcall _LCD_write_byte
 0020                   .dbline 35
 0020           ;     LCD_write_byte(0x06, 0);  // 温度校正
 0020 2227              clr R18
 0022 06E0              ldi R16,6
 0024 A6D1              xcall _LCD_write_byte
 0026                   .dbline 36
 0026           ;     LCD_write_byte(0x13, 0);  // 1:48
 0026 2227              clr R18
 0028 03E1              ldi R16,19
 002A A3D1              xcall _LCD_write_byte
 002C                   .dbline 37
 002C           ;     LCD_write_byte(0x20, 0);  // 使用基本命令
 002C 2227              clr R18
 002E 00E2              ldi R16,32
 0030 A0D1              xcall _LCD_write_byte
 0032                   .dbline 38
 0032           ;     LCD_clear();                  // 清屏
 0032 05D0              xcall _LCD_clear
 0034                   .dbline 39
 0034           ;     LCD_write_byte(0x0c, 0);  // 设定显示模式,正常显示
 0034 2227              clr R18
 0036 0CE0              ldi R16,12
 0038 9CD1              xcall _LCD_write_byte
 003A                   .dbline 41
 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 54
 0042           ;   }
 0042           ; /*************************************************************************
 0042           ; ** 函数名称: LCD_clear(void)
 0042           ; ** 功能描述: LCD清屏函数
 0042           ; ** 输 入: 
 0042           ; ** 输出        : 
 0042           ; ** 全局变量: 无
 0042           ; ** 调用模块: 
 0042           ; ** 说明:
 0042           ; ** 注意:
 0042           ; **************************************************************************/
 0042           ; void LCD_clear(void)
 0042           ;   {
 0042                   .dbline 57
 0042           ;     unsigned int i;
 0042           ; 
 0042           ;     LCD_write_byte(0x0c, 0);                  
 0042 2227              clr R18
 0044 0CE0              ldi R16,12
 0046 95D1              xcall _LCD_write_byte
 0048                   .dbline 58
 0048           ;     LCD_write_byte(0x80, 0);                  
 0048 2227              clr R18
 004A 00E8              ldi R16,128
 004C 92D1              xcall _LCD_write_byte
 004E                   .dbline 60
 004E           ; 
 004E           ;     for (i=0; i<504; i++)
 004E 4427              clr R20
 0050 5527              clr R21
 0052 05C0              xjmp L6
 0054           L3:
 0054                   .dbline 61
 0054 21E0              ldi R18,1
 0056 0027              clr R16
 0058 8CD1              xcall _LCD_write_byte
 005A           L4:
 005A                   .dbline 60
 005A 4F5F              subi R20,255  ; offset = 1
 005C 5F4F              sbci R21,255
 005E           L6:
 005E                   .dbline 60
 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 75
 0074           ;       LCD_write_byte(0, 1);                   
 0074           ;   }
 0074           ; /*************************************************************************
 0074           ; ** 函数名称: LCD_set_XY(unsigned char X, unsigned char Y)
 0074           ; ** 功能描述: 设置LCD坐标函数
 0074           ; ** 输 入: X :0-83 X 坐标
 0074           ;            Y :0-5  Y 坐标
 0074           ; ** 输出        : 
 0074           ; ** 全局变量: 无
 0074           ; ** 调用模块: 
 0074           ; ** 说明:
 0074           ; ** 注意:
 0074           ; **************************************************************************/
 0074           ; void LCD_set_XY(unsigned char X, unsigned char Y)
 0074           ;   {
 0074                   .dbline 76
 0074           ;     LCD_write_byte(0x40 | Y, 0);              // column
 0074 2227              clr R18
 0076 062F              mov R16,R22
 0078 0064              ori R16,64
 007A 7BD1              xcall _LCD_write_byte
 007C                   .dbline 77
 007C           ;     LCD_write_byte(0x80 | X, 0);              // row
 007C 2227              clr R18
 007E 042F              mov R16,R20
 0080 0068              ori R16,128
 0082 77D1              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 90
 0090           ;   }
 0090           ; /*************************************************************************
 0090           ; ** 函数名称: LCD_write_char(unsigned char c)
 0090           ; ** 功能描述: 显示英文字符
 0090           ; ** 输 入: c :显示的字符
 0090           ; ** 输出        : 
 0090           ; ** 全局变量: 无
 0090           ; ** 调用模块: 
 0090           ; ** 说明:
 0090           ; ** 注意:
 0090           ; **************************************************************************/
 0090           ; void LCD_write_char(unsigned char c)
 0090           ;   {
 0090                   .dbline 93
 0090           ;     unsigned char line;
 0090           ; 
 0090           ;     c -= 32;
 0090 6052              subi R22,32
 0092                   .dbline 95
 0092           ; 
 0092           ;     for (line=0; line<6; line++)
 0092 4427              clr R20
 0094 0FC0              xjmp L12
 0096           L9:
 0096                   .dbline 96
 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 60D1              xcall _LCD_write_byte
 00B2           L10:
 00B2                   .dbline 95
 00B2 4395              inc R20
 00B4           L12:
 00B4                   .dbline 95
 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 110
 00CA           ;       LCD_write_byte(font6x8[c][line], 1);
 00CA           ;   }
 00CA           ; /*************************************************************************
 00CA           ; ** 函数名称: LCD_write_english_string(unsigned char X,unsigned char Y,char *s)
 00CA           ; ** 功能描述: 英文字符串显示函数
 00CA           ; ** 输 入: *s    :英文字符串指针;
 00CA           ;            X、Y  : 显示字符串的位置,x 0-83 ,y 0-5
 00CA           ; ** 输出        : 
 00CA           ; ** 全局变量: 无
 00CA           ; ** 调用模块: 
 00CA           ; ** 说明:
 00CA           ; ** 注意:
 00CA           ; **************************************************************************/
 00CA           ; void LCD_write_english_string(unsigned char X,unsigned char Y,char *s)
 00CA           ;   {
 00CA                   .dbline 111
 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:
 00D2                   .dbline 113
 00D2                   .dbline 114
 00D2 FA01              movw R30,R20
 00D4 0081              ldd R16,z+0
 00D6 D9DF              xcall _LCD_write_char
 00D8                   .dbline 115
 00D8 4F5F              subi R20,255  ; offset = 1
 00DA 5F4F              sbci R21,255
 00DC                   .dbline 116
 00DC           L15:
 00DC                   .dbline 112
 00DC           ;     while (*s)
 00DC FA01              movw R30,R20
 00DE 2080              ldd R2,z+0
 00E0 2220              tst R2
 00E2 B9F7              brne L14
 00E4                   .dbline -2
 00E4           L13:
 00E4 0E940000          xcall pop_gset3
 00E8                   .dbline 0 ; func end
 00E8 0895              ret
 00EA                   .dbsym r s 20 pc
 00EA                   .dbsym r Y 10 c
 00EA                   .dbsym r X 22 c
 00EA                   .dbend
 00EA                   .dbfunc e LCD_write_chinese_string _LCD_write_chinese_string fV
 00EA           ;              p -> R20,R21
 00EA           ;              i -> R22
 00EA           ;              n -> R10
 00EA           ;              s -> y+22
 00EA           ;            row -> R12
 00EA           ;           line -> R14
 00EA           ;            num -> y+16
 00EA           ;        ch_with -> y+14
 00EA           ;              Y -> y+12
 00EA           ;              X -> y+10
                        .even
 00EA           _LCD_write_chinese_string::
 00EA 0E940000          xcall push_arg4
 00EE 0E940000          xcall push_gset5
 00F2 EA88              ldd R14,y+18
 00F4 CC88              ldd R12,y+20
 00F6                   .dbline -1
 00F6                   .dbline 134
 00F6           ;       {
 00F6           ;        LCD_write_char(*s);
 00F6           ;        s++;
 00F6           ;       }
 00F6           ;   }
 00F6           ; /*************************************************************************
 00F6           ; ** 函数名称: LCD_write_chinese_string(unsigned char X, unsigned char Y,unsigned char ch_with,unsigned char num,unsigned char line,unsigned char row,unsigned char (*s)[24])
 00F6           ; ** 功能描述: 英文字符串显示函数
 00F6           ; ** 输 入: X、Y    :显示汉字的起始X、Y坐标;
 00F6           ;            ch_with :汉字点阵的宽度
 00F6           ;            num     :显示汉字的个数;  
 00F6           ;            line    :汉字点阵数组中的起始行数
 00F6           ;            row     :汉字显示的行间距
 00F6           ;                  s       : 要显示的汉字
 00F6           ; ** 输出        : 
 00F6           ; ** 全局变量: 无
 00F6           ; ** 调用模块: 
 00F6           ; ** 说明:LCD_write_chinese_string(0,0,12,7,0,0,write_chinese_string);
 00F6           ; ** 注意:
 00F6           ; **************************************************************************/                      
 00F6           ; void LCD_write_chinese_string(unsigned char X, unsigned char Y,unsigned char ch_with,unsigned char num,unsigned char line,unsigned char row,unsigned char (*s)[24])
 00F6           ;   {
 00F6                   .dbline 136
 00F6           ;     unsigned char i,n,(*p)[24];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -