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

📄 lcd.lis

📁 ICCAVR编写128*64液晶程序测试已经通过
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 00B0                   .dbline 59
 00B0           ;    if(cd==CMD)
 00B0 4423              tst R20
 00B2 11F4              brne L20
 00B4                   .dbline 60
 00B4           ;       SET_LCD_CMD;
 00B4 C098              cbi 0x18,0
 00B6 01C0              xjmp L21
 00B8           L20:
 00B8                   .dbline 62
 00B8           ;    else
 00B8           ;       SET_LCD_DATA;
 00B8 C09A              sbi 0x18,0
 00BA           L21:
 00BA                   .dbline 63
 00BA           ;    SET_LCD_WRITE;
 00BA C198              cbi 0x18,1
 00BC                   .dbline 64
 00BC           ;    SET_LCD_E;
 00BC C29A              sbi 0x18,2
 00BE                   .dbline 65
 00BE           ;    LCD_DIR_PORT = 0xff;
 00BE 8FEF              ldi R24,255
 00C0 8ABB              out 0x1a,R24
 00C2                   .dbline 66
 00C2           ;    LCD_OP_PORT = data;
 00C2 0C80              ldd R0,y+4
 00C4 0BBA              out 0x1b,R0
 00C6                   .dbline 67
 00C6           ;    delay_nus(250);
 00C6 0AEF              ldi R16,250
 00C8 9BDF              xcall _delay_nus
 00CA                   .dbline 68
 00CA           ;    delay_nus(250);
 00CA 0AEF              ldi R16,250
 00CC 99DF              xcall _delay_nus
 00CE                   .dbline 69
 00CE           ;    CLEAR_LCD_E;
 00CE C298              cbi 0x18,2
 00D0                   .dbline 70
 00D0           ;    LCD_OP_PORT = 0xff;
 00D0 8FEF              ldi R24,255
 00D2 8BBB              out 0x1b,R24
 00D4                   .dbline 71
 00D4           ;    asm("sei");
 00D4 7894              sei
 00D6                   .dbline -2
 00D6           L19:
 00D6 0E940000          xcall pop_gset2
 00DA                   .dbline 0 ; func end
 00DA 0895              ret
 00DC                   .dbsym l data 4 c
 00DC                   .dbsym r cd 20 c
 00DC                   .dbsym r lr 22 c
 00DC                   .dbend
 00DC                   .dbfunc e read_LCD _read_LCD fc
 00DC           ;           data -> R20
 00DC           ;             lr -> R22
                        .even
 00DC           _read_LCD::
 00DC 0E940000          xcall push_gset2
 00E0 602F              mov R22,R16
 00E2                   .dbline -1
 00E2                   .dbline 77
 00E2           ;   
 00E2           ; }
 00E2           ; 
 00E2           ; //--------------读数据函数-------------------
 00E2           ; unsigned char read_LCD(unsigned char lr)        
 00E2           ; {
 00E2                   .dbline 80
 00E2           ;    unsigned char data;
 00E2           ;    
 00E2           ;    asm("cli");
 00E2 F894              cli
 00E4                   .dbline 81
 00E4           ;    LCD_BUSY(lr);
 00E4 062F              mov R16,R22
 00E6 B2DF              xcall _LCD_BUSY
 00E8                   .dbline 82
 00E8           ;    SET_LCD_DATA;
 00E8 C09A              sbi 0x18,0
 00EA                   .dbline 83
 00EA           ;    LCD_DIR_PORT = 0x00;
 00EA 2224              clr R2
 00EC 2ABA              out 0x1a,R2
 00EE                   .dbline 84
 00EE           ;    LCD_OP_PORT = 0xff;
 00EE 8FEF              ldi R24,255
 00F0 8BBB              out 0x1b,R24
 00F2                   .dbline 85
 00F2           ;    SET_LCD_READ;
 00F2 C19A              sbi 0x18,1
 00F4                   .dbline 86
 00F4           ;    SET_LCD_E;
 00F4 C29A              sbi 0x18,2
 00F6                   .dbline 87
 00F6           ;    delay_nms(1);
 00F6 01E0              ldi R16,1
 00F8 10E0              ldi R17,0
 00FA 92DF              xcall _delay_nms
 00FC                   .dbline 88
 00FC           ;    data=LCD_IP_PORT;
 00FC 49B3              in R20,0x19
 00FE                   .dbline 89
 00FE           ;    CLEAR_LCD_E;
 00FE C298              cbi 0x18,2
 0100                   .dbline 90
 0100           ;    SET_LCD_WRITE;
 0100 C198              cbi 0x18,1
 0102                   .dbline 92
 0102           ;    
 0102           ;    LCD_BUSY(lr);
 0102 062F              mov R16,R22
 0104 A3DF              xcall _LCD_BUSY
 0106                   .dbline 93
 0106           ;    SET_LCD_DATA;
 0106 C09A              sbi 0x18,0
 0108                   .dbline 94
 0108           ;    LCD_DIR_PORT = 0x00;
 0108 2224              clr R2
 010A 2ABA              out 0x1a,R2
 010C                   .dbline 95
 010C           ;    LCD_OP_PORT = 0xff;
 010C 8FEF              ldi R24,255
 010E 8BBB              out 0x1b,R24
 0110                   .dbline 96
 0110           ;    SET_LCD_READ;
 0110 C19A              sbi 0x18,1
 0112                   .dbline 97
 0112           ;    SET_LCD_E;
 0112 C29A              sbi 0x18,2
 0114                   .dbline 98
 0114           ;    delay_nus(250);
 0114 0AEF              ldi R16,250
 0116 74DF              xcall _delay_nus
 0118                   .dbline 99
 0118           ;    delay_nus(250);
 0118 0AEF              ldi R16,250
 011A 72DF              xcall _delay_nus
 011C                   .dbline 100
 011C           ;    data=LCD_IP_PORT;
 011C 49B3              in R20,0x19
 011E                   .dbline 101
 011E           ;    CLEAR_LCD_E;
 011E C298              cbi 0x18,2
 0120                   .dbline 102
 0120           ;    SET_LCD_WRITE;
 0120 C198              cbi 0x18,1
 0122                   .dbline 103
 0122           ;    delay_nus(250);
 0122 0AEF              ldi R16,250
 0124 6DDF              xcall _delay_nus
 0126                   .dbline 104
 0126           ;    delay_nus(250);
 0126 0AEF              ldi R16,250
 0128 6BDF              xcall _delay_nus
 012A                   .dbline 105
 012A           ;    asm("sei");
 012A 7894              sei
 012C                   .dbline 106
 012C           ;    return data;
 012C 042F              mov R16,R20
 012E                   .dbline -2
 012E           L22:
 012E 0E940000          xcall pop_gset2
 0132                   .dbline 0 ; func end
 0132 0895              ret
 0134                   .dbsym r data 20 c
 0134                   .dbsym r lr 22 c
 0134                   .dbend
 0134                   .dbfunc e set_start_line_L _set_start_line_L fV
 0134           ;           line -> R20
                        .even
 0134           _set_start_line_L::
 0134 0E940000          xcall push_gset1
 0138 402F              mov R20,R16
 013A 2197              sbiw R28,1
 013C                   .dbline -1
 013C                   .dbline 111
 013C           ; }
 013C           ; 
 013C           ; //-----------------行列页选择函数------------------ 
 013C           ; void set_start_line_L(unsigned char line) /*设置显示起始行*/ //0-63
 013C           ; {
 013C                   .dbline 112
 013C           ;    write_LCD(LEFT,CMD,0xc0|line);
 013C 842F              mov R24,R20
 013E 806C              ori R24,192
 0140 8883              std y+0,R24
 0142 2227              clr R18
 0144 0027              clr R16
 0146 ADDF              xcall _write_LCD
 0148                   .dbline -2
 0148           L23:
 0148 2196              adiw R28,1
 014A 0E940000          xcall pop_gset1
 014E                   .dbline 0 ; func end
 014E 0895              ret
 0150                   .dbsym r line 20 c
 0150                   .dbend
 0150                   .dbfunc e set_start_line_R _set_start_line_R fV
 0150           ;           line -> R20
                        .even
 0150           _set_start_line_R::
 0150 0E940000          xcall push_gset1
 0154 402F              mov R20,R16
 0156 2197              sbiw R28,1
 0158                   .dbline -1
 0158                   .dbline 116
 0158           ; }
 0158           ; 
 0158           ; void set_start_line_R(unsigned char line) /*设置显示起始行*/ //0-63
 0158           ; {
 0158                   .dbline 117
 0158           ;    write_LCD(RIGHT,CMD,0xc0|line);
 0158 842F              mov R24,R20
 015A 806C              ori R24,192
 015C 8883              std y+0,R24
 015E 2227              clr R18
 0160 01E0              ldi R16,1
 0162 9FDF              xcall _write_LCD
 0164                   .dbline -2
 0164           L24:
 0164 2196              adiw R28,1
 0166 0E940000          xcall pop_gset1
 016A                   .dbline 0 ; func end
 016A 0895              ret
 016C                   .dbsym r line 20 c
 016C                   .dbend
 016C                   .dbfunc e set_page_L _set_page_L fV
 016C           ;           page -> R20
                        .even
 016C           _set_page_L::
 016C 0E940000          xcall push_gset1
 0170 402F              mov R20,R16
 0172 2197              sbiw R28,1
 0174                   .dbline -1
 0174                   .dbline 121
 0174           ; }
 0174           ; 
 0174           ; void set_page_L(unsigned char page)   /*设置X地址 设置页*/  //0-7
 0174           ; {
 0174                   .dbline 122
 0174           ;    write_LCD(LEFT,CMD,0xb8|page);
 0174 842F              mov R24,R20
 0176 886B              ori R24,184
 0178 8883              std y+0,R24
 017A 2227              clr R18
 017C 0027              clr R16
 017E 91DF              xcall _write_LCD
 0180                   .dbline -2
 0180           L25:
 0180 2196              adiw R28,1
 0182 0E940000          xcall pop_gset1
 0186                   .dbline 0 ; func end
 0186 0895              ret
 0188                   .dbsym r page 20 c
 0188                   .dbend
 0188                   .dbfunc e set_page_R _set_page_R fV
 0188           ;           page -> R20
                        .even
 0188           _set_page_R::
 0188 0E940000          xcall push_gset1
 018C 402F              mov R20,R16
 018E 2197              sbiw R28,1
 0190                   .dbline -1
 0190                   .dbline 125
 0190           ; }
 0190           ; void set_page_R(unsigned char page)   /*设置X地址 设置页*/ //0-7
 0190           ; {
 0190                   .dbline 126
 0190           ;    write_LCD(RIGHT,CMD,0xb8|page);
 0190 842F              mov R24,R20
 0192 886B              ori R24,184
 0194 8883              std y+0,R24
 0196 2227              clr R18
 0198 01E0              ldi R16,1
 019A 83DF              xcall _write_LCD
 019C                   .dbline -2
 019C           L26:
 019C 2196              adiw R28,1
 019E 0E940000          xcall pop_gset1
 01A2                   .dbline 0 ; func end
 01A2 0895              ret
 01A4                   .dbsym r page 20 c
 01A4                   .dbend
 01A4                   .dbfunc e set_col_addr_L _set_col_addr_L fV
 01A4           ;            col -> R20
                        .even
 01A4           _set_col_addr_L::
 01A4 0E940000          xcall push_gset1
 01A8 402F              mov R20,R16
 01AA 2197              sbiw R28,1
 01AC                   .dbline -1
 01AC                   .dbline 130
 01AC           ; }
 01AC           ; 
 01AC           ; void set_col_addr_L(unsigned char col) /*设置Y地址*/ //0-63
 01AC           ; {
 01AC                   .dbline 131
 01AC           ;    write_LCD(LEFT,CMD,0x40|col);
 01AC 842F              mov R24,R20
 01AE 8064              ori R24,64
 01B0 8883              std y+0,R24
 01B2 2227              clr R18
 01B4 0027              clr R16
 01B6 75DF              xcall _write_LCD
 01B8                   .dbline -2
 01B8           L27:
 01B8 2196              adiw R28,1
 01BA 0E940000          xcall pop_gset1
 01BE                   .dbline 0 ; func end
 01BE 0895              ret
 01C0                   .dbsym r col 20 c
 01C0                   .dbend
 01C0                   .dbfunc e set_col_addr_R _set_col_addr_R fV
 01C0           ;            col -> R20
                        .even
 01C0           _set_col_addr_R::
 01C0 0E940000          xcall push_gset1
 01C4 402F              mov R20,R16
 01C6 2197              sbiw R28,1
 01C8                   .dbline -1
 01C8                   .dbline 135
 01C8           ; }
 01C8           ; 
 01C8           ; void set_col_addr_R(unsigned char col) /*设置Y地址*/ //0-63
 01C8           ; {
 01C8                   .dbline 136
 01C8           ;    write_LCD(RIGHT,CMD,0x40|col);
 01C8 842F              mov R24,R20
 01CA 8064              ori R24,64
 01CC 8883              std y+0,R24
 01CE 2227              clr R18
 01D0 01E0              ldi R16,1
 01D2 67DF              xcall _write_LCD
 01D4                   .dbline -2
 01D4           L28:
 01D4 2196              adiw R28,1
 01D6 0E940000          xcall pop_gset1
 01DA                   .dbline 0 ; func end
 01DA 0895              ret
 01DC                   .dbsym r col 20 c
 01DC                   .dbend
 01DC                   .dbfunc e LCD_Init _LCD_Init fV
                        .even
 01DC           _LCD_Init::
 01DC 2197              sbiw R28,1
 01DE                   .dbline -1
 01DE                   .dbline 142
 01DE           ; }
 01DE           ; 
 01DE           ; 

⌨️ 快捷键说明

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