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

📄 ks0108.lis

📁 用avr控制的ks0108型128×64显示程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 026A 3082              std z+0,R3
 026C                   .dbline 155
 026C           ;     SET_LCD_E;
 026C 20901300          lds R2,_LCD_EN_BIT
 0270 E0910800          lds R30,_LCD_EN_PORT
 0274 F0910900          lds R31,_LCD_EN_PORT+1
 0278 3080              ldd R3,z+0
 027A 3228              or R3,R2
 027C 3082              std z+0,R3
 027E                   .dbline 156
 027E           ;     asm("nop");
 027E 0000              nop
 0280                   .dbline 157
 0280           ;     asm("nop");
 0280 0000              nop
 0282                   .dbline 158
 0282           ;     asm("nop");
 0282 0000              nop
 0284                   .dbline 159
 0284           ;     asm("nop");
 0284 0000              nop
 0286                   .dbline 160
 0286           ;     data=*LCD_IP_PORT;
 0286 E0910200          lds R30,_LCD_IP_PORT
 028A F0910300          lds R31,_LCD_IP_PORT+1
 028E 4081              ldd R20,z+0
 0290                   .dbline 161
 0290           ;     CLEAR_LCD_E;
 0290 20901300          lds R2,_LCD_EN_BIT
 0294 2094              com R2
 0296 E0910800          lds R30,_LCD_EN_PORT
 029A F0910900          lds R31,_LCD_EN_PORT+1
 029E 3080              ldd R3,z+0
 02A0 3220              and R3,R2
 02A2 3082              std z+0,R3
 02A4                   .dbline 162
 02A4           ;     SET_LCD_WRITE;
 02A4 20901600          lds R2,_LCD_RW_BIT
 02A8 2094              com R2
 02AA E0910E00          lds R30,_LCD_RW_PORT
 02AE F0910F00          lds R31,_LCD_RW_PORT+1
 02B2 3080              ldd R3,z+0
 02B4 3220              and R3,R2
 02B6 3082              std z+0,R3
 02B8                   .dbline 163
 02B8           ;     LCD_BUSY(lr);
 02B8 062F              mov R16,R22
 02BA CCDE              xcall _LCD_BUSY
 02BC                   .dbline 164
 02BC           ;     SET_LCD_DATA; 
 02BC 20901700          lds R2,_LCD_DI_BIT
 02C0 E0911000          lds R30,_LCD_DI_PORT
 02C4 F0911100          lds R31,_LCD_DI_PORT+1
 02C8 3080              ldd R3,z+0
 02CA 3228              or R3,R2
 02CC 3082              std z+0,R3
 02CE                   .dbline 165
 02CE           ;     *LCD_DIR_PORT = 0x00;
 02CE 2224              clr R2
 02D0 E0910000          lds R30,_LCD_DIR_PORT
 02D4 F0910100          lds R31,_LCD_DIR_PORT+1
 02D8 2082              std z+0,R2
 02DA                   .dbline 166
 02DA           ;     *LCD_OP_PORT = 0xff;
 02DA 8FEF              ldi R24,255
 02DC E0910400          lds R30,_LCD_OP_PORT
 02E0 F0910500          lds R31,_LCD_OP_PORT+1
 02E4 8083              std z+0,R24
 02E6                   .dbline 167
 02E6           ;     SET_LCD_READ; 
 02E6 20901600          lds R2,_LCD_RW_BIT
 02EA E0910E00          lds R30,_LCD_RW_PORT
 02EE F0910F00          lds R31,_LCD_RW_PORT+1
 02F2 3080              ldd R3,z+0
 02F4 3228              or R3,R2
 02F6 3082              std z+0,R3
 02F8                   .dbline 168
 02F8           ;     SET_LCD_E;
 02F8 20901300          lds R2,_LCD_EN_BIT
 02FC E0910800          lds R30,_LCD_EN_PORT
 0300 F0910900          lds R31,_LCD_EN_PORT+1
 0304 3080              ldd R3,z+0
 0306 3228              or R3,R2
 0308 3082              std z+0,R3
 030A                   .dbline 169
 030A           ;     asm("nop");       
 030A 0000              nop
 030C                   .dbline 170
 030C           ;     asm("nop");
 030C 0000              nop
 030E                   .dbline 171
 030E           ;     asm("nop");
 030E 0000              nop
 0310                   .dbline 172
 0310           ;     asm("nop");
 0310 0000              nop
 0312                   .dbline 173
 0312           ;     data=*LCD_IP_PORT;
 0312 E0910200          lds R30,_LCD_IP_PORT
 0316 F0910300          lds R31,_LCD_IP_PORT+1
 031A 4081              ldd R20,z+0
 031C                   .dbline 174
 031C           ;     CLEAR_LCD_E;
 031C 20901300          lds R2,_LCD_EN_BIT
 0320 2094              com R2
 0322 E0910800          lds R30,_LCD_EN_PORT
 0326 F0910900          lds R31,_LCD_EN_PORT+1
 032A 3080              ldd R3,z+0
 032C 3220              and R3,R2
 032E 3082              std z+0,R3
 0330                   .dbline 175
 0330           ;     SET_LCD_WRITE;
 0330 20901600          lds R2,_LCD_RW_BIT
 0334 2094              com R2
 0336 E0910E00          lds R30,_LCD_RW_PORT
 033A F0910F00          lds R31,_LCD_RW_PORT+1
 033E 3080              ldd R3,z+0
 0340 3220              and R3,R2
 0342 3082              std z+0,R3
 0344                   .dbline 177
 0344           ; 
 0344           ;     asm("sei");
 0344 7894              sei
 0346                   .dbline 178
 0346           ;     return data;
 0346 042F              mov R16,R20
 0348                   .dbline -2
 0348           L26:
 0348 0E940000          xcall pop_gset2
 034C                   .dbline 0 ; func end
 034C 0895              ret
 034E                   .dbsym r data 20 c
 034E                   .dbsym r lr 22 c
 034E                   .dbend
 034E                   .dbfunc e set_start_line_L _set_start_line_L fV
 034E           ;           line -> R20
                        .even
 034E           _set_start_line_L::
 034E 0E940000          xcall push_gset1
 0352 402F              mov R20,R16
 0354 2197              sbiw R28,1
 0356                   .dbline -1
 0356                   .dbline 182
 0356           ; }
 0356           ; 
 0356           ; void set_start_line_L(unsigned char line) /*设置显示起始行*/ //0-63
 0356           ; {
 0356                   .dbline 183
 0356           ;     write_LCD(LEFT,CMD,0xc0|line); 
 0356 842F              mov R24,R20
 0358 806C              ori R24,192
 035A 8883              std y+0,R24
 035C 2227              clr R18
 035E 0027              clr R16
 0360 0EDF              xcall _write_LCD
 0362                   .dbline -2
 0362           L27:
 0362 2196              adiw R28,1
 0364 0E940000          xcall pop_gset1
 0368                   .dbline 0 ; func end
 0368 0895              ret
 036A                   .dbsym r line 20 c
 036A                   .dbend
 036A                   .dbfunc e set_start_line_R _set_start_line_R fV
 036A           ;           line -> R20
                        .even
 036A           _set_start_line_R::
 036A 0E940000          xcall push_gset1
 036E 402F              mov R20,R16
 0370 2197              sbiw R28,1
 0372                   .dbline -1
 0372                   .dbline 187
 0372           ; }
 0372           ; 
 0372           ; void set_start_line_R(unsigned char line) /*设置显示起始行*/ //0-63
 0372           ; {
 0372                   .dbline 188
 0372           ;     write_LCD(RIGHT,CMD,0xc0|line); 
 0372 842F              mov R24,R20
 0374 806C              ori R24,192
 0376 8883              std y+0,R24
 0378 2227              clr R18
 037A 01E0              ldi R16,1
 037C 00DF              xcall _write_LCD
 037E                   .dbline -2
 037E           L28:
 037E 2196              adiw R28,1
 0380 0E940000          xcall pop_gset1
 0384                   .dbline 0 ; func end
 0384 0895              ret
 0386                   .dbsym r line 20 c
 0386                   .dbend
 0386                   .dbfunc e set_page_L _set_page_L fV
 0386           ;           page -> R20
                        .even
 0386           _set_page_L::
 0386 0E940000          xcall push_gset1
 038A 402F              mov R20,R16
 038C 2197              sbiw R28,1
 038E                   .dbline -1
 038E                   .dbline 192
 038E           ; }
 038E           ; 
 038E           ; void set_page_L(unsigned char page)   /*设置X地址 设置页*/  //0-7
 038E           ; {
 038E                   .dbline 193
 038E           ;     write_LCD(LEFT,CMD,0xb8|page);                     
 038E 842F              mov R24,R20
 0390 886B              ori R24,184
 0392 8883              std y+0,R24
 0394 2227              clr R18
 0396 0027              clr R16
 0398 F2DE              xcall _write_LCD
 039A                   .dbline -2
 039A           L29:
 039A 2196              adiw R28,1
 039C 0E940000          xcall pop_gset1
 03A0                   .dbline 0 ; func end
 03A0 0895              ret
 03A2                   .dbsym r page 20 c
 03A2                   .dbend
 03A2                   .dbfunc e set_page_R _set_page_R fV
 03A2           ;           page -> R20
                        .even
 03A2           _set_page_R::
 03A2 0E940000          xcall push_gset1
 03A6 402F              mov R20,R16
 03A8 2197              sbiw R28,1
 03AA                   .dbline -1
 03AA                   .dbline 196
 03AA           ; }
 03AA           ; void set_page_R(unsigned char page)   /*设置X地址 设置页*/ //0-7
 03AA           ; {
 03AA                   .dbline 197
 03AA           ;     write_LCD(RIGHT,CMD,0xb8|page);                     
 03AA 842F              mov R24,R20
 03AC 886B              ori R24,184
 03AE 8883              std y+0,R24
 03B0 2227              clr R18
 03B2 01E0              ldi R16,1
 03B4 E4DE              xcall _write_LCD
 03B6                   .dbline -2
 03B6           L30:
 03B6 2196              adiw R28,1
 03B8 0E940000          xcall pop_gset1
 03BC                   .dbline 0 ; func end
 03BC 0895              ret
 03BE                   .dbsym r page 20 c
 03BE                   .dbend
 03BE                   .dbfunc e set_col_addr_L _set_col_addr_L fV
 03BE           ;            col -> R20
                        .even
 03BE           _set_col_addr_L::
 03BE 0E940000          xcall push_gset1
 03C2 402F              mov R20,R16
 03C4 2197              sbiw R28,1
 03C6                   .dbline -1
 03C6                   .dbline 201
 03C6           ; }
 03C6           ; 
 03C6           ; void set_col_addr_L(unsigned char col) /*设置Y地址*/ //0-63
 03C6           ; {
 03C6                   .dbline 202
 03C6           ;     write_LCD(LEFT,CMD,0x40|col);                     
 03C6 842F              mov R24,R20
 03C8 8064              ori R24,64
 03CA 8883              std y+0,R24
 03CC 2227              clr R18
 03CE 0027              clr R16
 03D0 D6DE              xcall _write_LCD
 03D2                   .dbline -2
 03D2           L31:
 03D2 2196              adiw R28,1
 03D4 0E940000          xcall pop_gset1
 03D8                   .dbline 0 ; func end
 03D8 0895              ret
 03DA                   .dbsym r col 20 c
 03DA                   .dbend
 03DA                   .dbfunc e set_col_addr_R _set_col_addr_R fV
 03DA           ;            col -> R20
                        .even
 03DA           _set_col_addr_R::
 03DA 0E940000          xcall push_gset1
 03DE 402F              mov R20,R16
 03E0 2197              sbiw R28,1
 03E2                   .dbline -1
 03E2                   .dbline 206
 03E2           ; }
 03E2           ; 
 03E2           ; void set_col_addr_R(unsigned char col) /*设置Y地址*/ //0-63
 03E2           ; {
 03E2                   .dbline 207
 03E2           ;     write_LCD(RIGHT,CMD,0x40|col);                     
 03E2 842F              mov R24,R20
 03E4 8064              ori R24,64
 03E6 8883              std y+0,R24
 03E8 2227              clr R18
 03EA 01E0              ldi R16,1
 03EC C8DE              xcall _write_LCD
 03EE                   .dbline -2
 03EE           L32:
 03EE 2196              adiw R28,1
 03F0 0E940000          xcall pop_gset1
 03F4                   .dbline 0 ; func end
 03F4 0895              ret
 03F6                   .dbsym r col 20 c
 03F6                   .dbend
 03F6                   .dbfunc e init_lcd _init_lcd fV
                        .even
 03F6           _init_lcd::
 03F6 2197              sbiw R28,1
 03F8                   .dbline -1
 03F8                   .dbline 211
 03F8           ; }
 03F8           ; 
 03F8           ; void init_lcd(void) /*初始化函数*/
 03F8           ; {    delay_nms(1000);
 03F8                   .dbline 211
 03F8 08EE              ldi R16,1000
 03FA 13E0              ldi R17,3
 03FC 1CDE              xcall _delay_nms
 03FE                   .dbline 212
 03FE           ;     REST_LCD;  
 03FE 20901200          lds R2,_LCD_RES_BIT
 0402 E0910600          lds R30,_LCD_RES_PORT
 0406 F0910700          lds R31,_LCD_RES_PORT+1
 040A 3080              ldd R3,z+0
 040C 3228              or R3,R2
 040E 3082              std z+0,R3
 0410                   .dbline 213
 0410           ;       delay_nms(1000);
 0410 08EE              ldi R16,1000
 0412 13E0              ldi R17,3
 0414 10DE              xcall _delay_nms
 0416                   .dbline 214

⌨️ 快捷键说明

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