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

📄 main.lis

📁 meg16 的所有功能实例
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -