📄 main.lis
字号:
00B8 BD9A sbi 0x17,5
00BA .dbline 52
00BA ; SETBIT(LCD_DIR,LCD_DC);
00BA BE9A sbi 0x17,6
00BC .dbline 53
00BC ; SETBIT(LCD_DIR,LCD_CE);
00BC BC9A sbi 0x17,4
00BE .dbline 63
00BE ; //SETBIT(LCD_DIR,LCD_RST);
00BE ;
00BE ; // 产生一个让LCD复位的低电平脉冲
00BE ;
00BE ; //CLEARBIT(LCD_PORT,LCD_RST);//LCD_RST = 0;
00BE ; //delay_1us();
00BE ; //SETBIT(LCD_PORT,LCD_RST);//LCD_RST = 1;
00BE ;
00BE ; // 关闭LCD
00BE ; CLEARBIT(LCD_PORT,LCD_CE);//LCD_CE = 0;
00BE C498 cbi 0x18,4
00C0 .dbline 64
00C0 ; delay_1us();
00C0 2ED0 xcall _delay_1us
00C2 .dbline 67
00C2 ;
00C2 ; // 使能LCD
00C2 ; SETBIT(LCD_PORT,LCD_CE);//LCD_CE = 1;
00C2 C49A sbi 0x18,4
00C4 .dbline 68
00C4 ; delay_1us();
00C4 2CD0 xcall _delay_1us
00C6 .dbline 70
00C6 ;
00C6 ; LCD_write_byte(0x21, 0); // 使用扩展命令设置LCD模式
00C6 2227 clr R18
00C8 01E2 ldi R16,33
00CA FFD0 xcall _LCD_write_byte
00CC .dbline 71
00CC ; LCD_write_byte(0xc8, 0); // 设置偏置电压
00CC 2227 clr R18
00CE 08EC ldi R16,200
00D0 FCD0 xcall _LCD_write_byte
00D2 .dbline 72
00D2 ; LCD_write_byte(0x06, 0); // 温度校正
00D2 2227 clr R18
00D4 06E0 ldi R16,6
00D6 F9D0 xcall _LCD_write_byte
00D8 .dbline 73
00D8 ; LCD_write_byte(0x13, 0); // 1:48
00D8 2227 clr R18
00DA 03E1 ldi R16,19
00DC F6D0 xcall _LCD_write_byte
00DE .dbline 74
00DE ; LCD_write_byte(0x20, 0); // 使用基本命令
00DE 2227 clr R18
00E0 00E2 ldi R16,32
00E2 F3D0 xcall _LCD_write_byte
00E4 .dbline 75
00E4 ; LCD_clear(); // 清屏
00E4 05D0 xcall _LCD_clear
00E6 .dbline 76
00E6 ; LCD_write_byte(0x0c, 0); // 设定显示模式,正常显示
00E6 2227 clr R18
00E8 0CE0 ldi R16,12
00EA EFD0 xcall _LCD_write_byte
00EC .dbline 79
00EC ;
00EC ; // 关闭LCD
00EC ; CLEARBIT(LCD_PORT,LCD_CE);//LCD_CE = 0;
00EC C498 cbi 0x18,4
00EE .dbline -2
00EE L17:
00EE .dbline 0 ; func end
00EE 0895 ret
00F0 .dbend
00F0 .dbfunc e LCD_clear _LCD_clear fV
00F0 ; i -> R20,R21
.even
00F0 _LCD_clear::
00F0 0E940000 xcall push_gset1
00F4 .dbline -1
00F4 .dbline 83
00F4 ; }
00F4 ; /********************************************************************************************************************/
00F4 ; void LCD_clear(void)
00F4 ; {
00F4 .dbline 86
00F4 ; unsigned int i;
00F4 ;
00F4 ; LCD_write_byte(0x0c, 0);
00F4 2227 clr R18
00F6 0CE0 ldi R16,12
00F8 E8D0 xcall _LCD_write_byte
00FA .dbline 87
00FA ; LCD_write_byte(0x80, 0);
00FA 2227 clr R18
00FC 00E8 ldi R16,128
00FE E5D0 xcall _LCD_write_byte
0100 .dbline 89
0100 ;
0100 ; for (i=0; i<504; i++)
0100 4427 clr R20
0102 5527 clr R21
0104 05C0 xjmp L22
0106 L19:
0106 .dbline 90
0106 .dbline 91
0106 21E0 ldi R18,1
0108 0027 clr R16
010A DFD0 xcall _LCD_write_byte
010C .dbline 92
010C L20:
010C .dbline 89
010C 4F5F subi R20,255 ; offset = 1
010E 5F4F sbci R21,255
0110 L22:
0110 .dbline 89
0110 483F cpi R20,248
0112 E1E0 ldi R30,1
0114 5E07 cpc R21,R30
0116 B8F3 brlo L19
0118 .dbline -2
0118 L18:
0118 0E940000 xcall pop_gset1
011C .dbline 0 ; func end
011C 0895 ret
011E .dbsym r i 20 i
011E .dbend
011E .dbfunc e delay_1us _delay_1us fV
011E ; i -> R16,R17
.even
011E _delay_1us::
011E .dbline -1
011E .dbline 96
011E ; {
011E ; LCD_write_byte(0, 1);
011E ; }
011E ; }
011E ; /********************************************************************************************************************/
011E ; void delay_1us(void) //1us延时函数
011E ; {
011E .dbline 98
011E 0027 clr R16
0120 1127 clr R17
0122 02C0 xjmp L27
0124 L24:
0124 .dbline 98
0124 L25:
0124 .dbline 98
0124 0F5F subi R16,255 ; offset = 1
0126 1F4F sbci R17,255
0128 L27:
0128 .dbline 98
0128 ; unsigned int i;
0128 ; for(i=0;i<12000;i++);
0128 003E cpi R16,224
012A EEE2 ldi R30,46
012C 1E07 cpc R17,R30
012E D0F3 brlo L24
0130 .dbline -2
0130 L23:
0130 .dbline 0 ; func end
0130 0895 ret
0132 .dbsym r i 16 i
0132 .dbend
0132 .dbfunc e LCD_set_XY _LCD_set_XY fV
0132 ; Y -> R22
0132 ; X -> R20
.even
0132 _LCD_set_XY::
0132 0E940000 xcall push_gset2
0136 622F mov R22,R18
0138 402F mov R20,R16
013A .dbline -1
013A .dbline 102
013A ; }
013A ; /********************************************************************************************************************/
013A ; void LCD_set_XY(unsigned char X, unsigned char Y)
013A ; {
013A .dbline 103
013A ; LCD_write_byte(0x40 | Y, 0);// column
013A 2227 clr R18
013C 062F mov R16,R22
013E 0064 ori R16,64
0140 C4D0 xcall _LCD_write_byte
0142 .dbline 104
0142 ; LCD_write_byte(0x80 | X, 0);// row
0142 2227 clr R18
0144 042F mov R16,R20
0146 0068 ori R16,128
0148 C0D0 xcall _LCD_write_byte
014A .dbline -2
014A L28:
014A 0E940000 xcall pop_gset2
014E .dbline 0 ; func end
014E 0895 ret
0150 .dbsym r Y 22 c
0150 .dbsym r X 20 c
0150 .dbend
0150 .dbfunc e LCD_write_char _LCD_write_char fV
0150 ; line -> R20
0150 ; c -> R22
.even
0150 _LCD_write_char::
0150 0E940000 xcall push_gset2
0154 602F mov R22,R16
0156 .dbline -1
0156 .dbline 108
0156 ; }
0156 ; /********************************************************************************************************************/
0156 ; void LCD_write_char(unsigned char c)
0156 ; {
0156 .dbline 111
0156 ; unsigned char line;
0156 ;
0156 ; c -= 32;
0156 6052 subi R22,32
0158 .dbline 112
0158 ; for (line=0; line<6; line++)
0158 4427 clr R20
015A 0FC0 xjmp L33
015C L30:
015C .dbline 113
015C .dbline 114
015C 21E0 ldi R18,1
015E 86E0 ldi R24,6
0160 869F mul R24,R22
0162 1001 movw R2,R0
0164 80E0 ldi R24,<_font6x8
0166 90E0 ldi R25,>_font6x8
0168 280E add R2,R24
016A 391E adc R3,R25
016C E42F mov R30,R20
016E FF27 clr R31
0170 E20D add R30,R2
0172 F31D adc R31,R3
0174 0491 lpm R16,Z
0176 A9D0 xcall _LCD_write_byte
0178 .dbline 115
0178 L31:
0178 .dbline 112
0178 4395 inc R20
017A L33:
017A .dbline 112
017A 4630 cpi R20,6
017C 78F3 brlo L30
017E .dbline -2
017E L29:
017E 0E940000 xcall pop_gset2
0182 .dbline 0 ; func end
0182 0895 ret
0184 .dbsym r line 20 c
0184 .dbsym r c 22 c
0184 .dbend
0184 .dbfunc e LCD_write_english_string _LCD_write_english_string fV
0184 ; s -> R20,R21
0184 ; Y -> R10
0184 ; X -> R22
.even
0184 _LCD_write_english_string::
0184 0E940000 xcall push_gset3
0188 A22E mov R10,R18
018A 602F mov R22,R16
018C 4E81 ldd R20,y+6
018E 5F81 ldd R21,y+7
0190 .dbline -1
0190 .dbline 125
0190 ; {
0190 ; LCD_write_byte(font6x8[c][line], 1);
0190 ; }
0190 ; }
0190 ; /********************************************************************************************************************/
0190 ; /*-----------------------------------------------------------------------
0190 ; LCD_write_english_String : 英文字符串显示函数
0190 ;
0190 ; 输入参数:*s :英文字符串指针;
0190 ; X、Y : 显示字符串的位置,x 0-83 ,y 0-5
0190 ; -----------------------------------------------------------------------*/
0190 ; void LCD_write_english_string(unsigned char X,unsigned char Y,char *s)
0190 ; {
0190 .dbline 126
0190 ; LCD_set_XY(X,Y);
0190 2A2D mov R18,R10
0192 062F mov R16,R22
0194 CEDF xcall _LCD_set_XY
0196 05C0 xjmp L36
0198 L35:
0198 .dbline 128
0198 .dbline 129
0198 FA01 movw R30,R20
019A 0081 ldd R16,z+0
019C D9DF xcall _LCD_write_char
019E .dbline 130
019E 4F5F subi R20,255 ; offset = 1
01A0 5F4F sbci R21,255
01A2 .dbline 131
01A2 L36:
01A2 .dbline 127
01A2 ; while (*s)
01A2 FA01 movw R30,R20
01A4 2080 ldd R2,z+0
01A6 2220 tst R2
01A8 B9F7 brne L35
01AA .dbline -2
01AA L34:
01AA 0E940000 xcall pop_gset3
01AE .dbline 0 ; func end
01AE 0895 ret
01B0 .dbsym r s 20 pc
01B0 .dbsym r Y 10 c
01B0 .dbsym r X 22 c
01B0 .dbend
01B0 .dbfunc e LCD_write_chinese_string _LCD_write_chinese_string fV
01B0 ; i -> R20
01B0 ; n -> R14
01B0 ; row -> R10
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -