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

📄 lcd_driver.lis

📁 AVR控制12864液晶画圆弧,在AVR单片机的控制下完成圆弧的绘制。
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00F6                   .dbend
 00F6                   .dbfunc e choose_no_screen _choose_no_screen fV
                        .even
 00F6           _choose_no_screen::
 00F6                   .dbline -1
 00F6                   .dbline 106
 00F6           ; }
 00F6           ; void   choose_no_screen(void)     
 00F6           ; {
 00F6                   .dbline 107
 00F6           ;    LCD_LEFT_STOP();
 00F6 C09A              sbi 0x18,0
 00F8                   .dbline 108
 00F8           ;    LCD_RIGHT_STOP();
 00F8 C19A              sbi 0x18,1
 00FA                   .dbline -2
 00FA           L22:
 00FA                   .dbline 0 ; func end
 00FA 0895              ret
 00FC                   .dbend
 00FC                   .dbfunc e lcd_read_byte _lcd_read_byte fc
 00FC           ;              y -> R18
 00FC           ;              x -> R16
                        .even
 00FC           _lcd_read_byte::
 00FC                   .dbline -1
 00FC                   .dbline 112
 00FC           ; }
 00FC           ; 
 00FC           ; unsigned char lcd_read_byte( unsigned char x,unsigned char y )
 00FC           ; {
 00FC                   .dbline 149
 00FC           ;     /*if(which & 1== 1)
 00FC           ;       {
 00FC           ;         choose_left_screen();
 00FC           ;         LCD_CMD_MODE();//D_I=0;
 00FC           ;         LCD_READ_MODE();//R_W=READ_MODE;
 00FC           ;         do
 00FC           ;        {DATA_PORT=0xff;//??????????????????????????????
 00FC           ;         LCD_E_HIGH():E=1;
 00FC           ;         tmp=DATA_PORT;
 00FC           ;         LCD_E_LOW();//E=0;
 00FC           ;        }while( !(tmp&0x80) );
 00FC           ;        LCD_DATA_MODE();//D_I=DATA_MODE;
 00FC           ;        DATA_PORT=0x0ff;
 00FC           ;        LCD_E_HIGH();//E=1
 00FC           ;        tmp=DATA_PORT;
 00FC           ;        LCD_E_LOW()://E=0;
 00FC           ;        return tmp;
 00FC           ;       }
 00FC           ;       if(which &2== 2)
 00FC           ;       {
 00FC           ;         choose_right_screen();
 00FC           ;         LCD_CMD_MODE();//D_I=0;
 00FC           ;         LCD_READ_MODE();//R_W=READ_MODE;
 00FC           ;         do
 00FC           ;        {DATA_PORT=0xff;//????????????????????????????????
 00FC           ;         LCD_E_HIGH();//E=1;
 00FC           ;         tmp=DATA_PORT;
 00FC           ;         LCD_E_LOW();//E=0;
 00FC           ;        }while( !(tmp&0x80) );
 00FC           ;        LCD_DATA_MODE();//D_I=DATA_MODE;
 00FC           ;        DATA_PORT=0x0ff;
 00FC           ;        LCD_E_HIGH();//E=1
 00FC           ;        tmp=DATA_PORT;
 00FC           ;      LCD_E_LOW();//E=0;
 00FC           ;        return tmp;
 00FC           ;       }*/
 00FC           ;       return 1;
 00FC 01E0              ldi R16,1
 00FE                   .dbline -2
 00FE           L23:
 00FE                   .dbline 0 ; func end
 00FE 0895              ret
 0100                   .dbsym r y 18 c
 0100                   .dbsym r x 16 c
 0100                   .dbend
 0100                   .dbfunc e lcd_is_busy _lcd_is_busy fc
 0100           ;            tmp -> R16
                        .even
 0100           _lcd_is_busy::
 0100                   .dbline -1
 0100                   .dbline 152
 0100           ; }
 0100           ; unsigned char lcd_is_busy( void )
 0100           ; {  
 0100                   .dbline 154
 0100           ;    unsigned char tmp;
 0100           ;    LCD_CMD_MODE();//D_I=CMD_MODE;
 0100 C298              cbi 0x18,2
 0102                   .dbline 155
 0102           ;    LCD_READ_MODE();//R_W=READ_MODE;
 0102 C39A              sbi 0x18,3
 0104                   .dbline 156
 0104           ;    DATA_PORT=0x0ff;//?????????????????????????
 0104 8FEF              ldi R24,255
 0106 8BBB              out 0x1b,R24
 0108                   .dbline 157
 0108           ;    LCD_E_HIGH();//E=1;
 0108 C49A              sbi 0x18,4
 010A                   .dbline 158
 010A           ;    tmp=DATA_PORT;
 010A 0BB3              in R16,0x1b
 010C                   .dbline 159
 010C           ;    LCD_E_LOW();//E=0;
 010C C498              cbi 0x18,4
 010E                   .dbline 160
 010E           ;    return tmp&0x80;
 010E 0078              andi R16,128
 0110                   .dbline -2
 0110           L24:
 0110                   .dbline 0 ; func end
 0110 0895              ret
 0112                   .dbsym r tmp 16 c
 0112                   .dbend
 0112                   .dbfunc e lcd_init _lcd_init fV
                        .even
 0112           _lcd_init::
 0112                   .dbline -1
 0112                   .dbline 163
 0112           ; }
 0112           ; void lcd_init(void)
 0112           ; {
 0112                   .dbline 164
 0112           ;   _delay_us(3000);
 0112 08EB              ldi R16,184
 0114 0E940000          xcall __delay_us
 0118                   .dbline 169
 0118           ;   //choose_full_screen();
 0118           ;   //write_cmd(DISPLAY_FIRST_ROW);//first row display 0x0c0
 0118           ;   //write_cmd(DISPLAY_ON);//open display 0x03f
 0118           ;   //choose_no_screen(); 
 0118           ;   lcd_out_ctl(DISPLAY_FIRST_ROW,3);
 0118 23E0              ldi R18,3
 011A 00EC              ldi R16,192
 011C B9DF              xcall _lcd_out_ctl
 011E                   .dbline 170
 011E           ;   lcd_out_ctl(DISPLAY_ON,3);
 011E 23E0              ldi R18,3
 0120 0FE3              ldi R16,63
 0122 B6DF              xcall _lcd_out_ctl
 0124                   .dbline -2
 0124           L25:
 0124                   .dbline 0 ; func end
 0124 0895              ret
 0126                   .dbend
 0126                   .dbfunc e write_rect _write_rect fV
 0126           ;            dat -> R2,R3
 0126           ;             y0 -> R1
 0126           ;          page0 -> R0
                        .even
 0126           _write_rect::
 0126                   .dbline -1
 0126                   .dbline 176
 0126           ;  
 0126           ;   
 0126           ; }
 0126           ; void write_rect(unsigned char page0,unsigned char y0,
 0126           ;                 unsigned char *dat)
 0126           ; {
 0126                   .dbline -2
 0126           L26:
 0126                   .dbline 0 ; func end
 0126 0895              ret
 0128                   .dbsym l dat 4 pc
 0128                   .dbsym l y0 2 c
 0128                   .dbsym l page0 0 c
 0128                   .dbend
 0128                   .dbfunc e read_rect _read_rect fV
 0128           ;             y1 -> R3
 0128           ;             x1 -> R2
 0128           ;             y0 -> R1
 0128           ;             x0 -> R0
                        .even
 0128           _read_rect::
 0128                   .dbline -1
 0128                   .dbline 181
 0128           ; 
 0128           ; }
 0128           ; void read_rect(unsigned char x0,unsigned char y0,
 0128           ;                unsigned char x1,unsigned char y1)
 0128           ; {
 0128                   .dbline -2
 0128           L27:
 0128                   .dbline 0 ; func end
 0128 0895              ret
 012A                   .dbsym l y1 6 c
 012A                   .dbsym l x1 4 c
 012A                   .dbsym l y0 2 c
 012A                   .dbsym l x0 0 c
 012A                   .dbend
 012A                   .dbfunc e write_to_xy _write_to_xy fV
 012A           ;           page -> R22
 012A           ;            dat -> y+4
 012A           ;              y -> R22
 012A           ;              x -> R20
                        .even
 012A           _write_to_xy::
 012A 0E940000          xcall push_gset2
 012E 622F              mov R22,R18
 0130 402F              mov R20,R16
 0132                   .dbline -1
 0132                   .dbline 186
 0132           ; 
 0132           ; }                        
 0132           ; 
 0132           ; void write_to_xy(unsigned char x,unsigned char y,unsigned char dat)
 0132           ; {
 0132                   .dbline 188
 0132           ;   unsigned char page;
 0132           ;   page=y>>3;
 0132 6695              lsr R22
 0134 6695              lsr R22
 0136 6695              lsr R22
 0138                   .dbline 189
 0138           ;   if(x>63)
 0138 8FE3              ldi R24,63
 013A 8417              cp R24,R20
 013C 50F4              brsh L29
 013E                   .dbline 190
 013E           ;   { x=x-64;
 013E                   .dbline 190
 013E 4054              subi R20,64
 0140                   .dbline 192
 0140           ;     //choose_right_screen();
 0140           ;     lcd_out_ctl_r(LCD_SET_PAGE+page);
 0140 062F              mov R16,R22
 0142 0854              subi R16,72    ; addi 184
 0144 93DF              xcall _lcd_out_ctl_r
 0146                   .dbline 193
 0146           ;       lcd_out_ctl_r(LCD_SET_COL+x);
 0146 042F              mov R16,R20
 0148 005C              subi R16,192    ; addi 64
 014A 90DF              xcall _lcd_out_ctl_r
 014C                   .dbline 194
 014C           ;       lcd_out_ctl_r(dat);
 014C 0C81              ldd R16,y+4
 014E 8EDF              xcall _lcd_out_ctl_r
 0150                   .dbline 195
 0150           ;   }
 0150 08C0              xjmp L30
 0152           L29:
 0152                   .dbline 197
 0152                   .dbline 198
 0152 062F              mov R16,R22
 0154 0854              subi R16,72    ; addi 184
 0156 78DF              xcall _lcd_out_ctl_l
 0158                   .dbline 199
 0158 042F              mov R16,R20
 015A 005C              subi R16,192    ; addi 64
 015C 75DF              xcall _lcd_out_ctl_l
 015E                   .dbline 200
 015E 0C81              ldd R16,y+4
 0160 73DF              xcall _lcd_out_ctl_l
 0162                   .dbline 201
 0162           L30:
 0162                   .dbline -2
 0162           L28:
 0162 0E940000          xcall pop_gset2
 0166                   .dbline 0 ; func end
 0166 0895              ret
 0168                   .dbsym r page 22 c
 0168                   .dbsym l dat 4 c
 0168                   .dbsym r y 22 c
 0168                   .dbsym r x 20 c
 0168                   .dbend
 0168                   .dbfunc e set_xy _set_xy fV
 0168           ;           page -> R22
 0168           ;              y -> R22
 0168           ;              x -> R20
                        .even
 0168           _set_xy::
 0168 0E940000          xcall push_gset2
 016C 622F              mov R22,R18
 016E 402F              mov R20,R16
 0170                   .dbline -1
 0170                   .dbline 205
 0170           ;   else    
 0170           ;   { //choose_left_screen();
 0170           ;     lcd_out_ctl_l(LCD_SET_PAGE+page);
 0170           ;       lcd_out_ctl_l(LCD_SET_COL+x);
 0170           ;       lcd_out_ctl_l(dat);
 0170           ;   }
 0170           ; }
 0170           ; 
 0170           ; void set_xy(unsigned char x,unsigned char y)
 0170           ; {
 0170                   .dbline 207
 0170           ;  unsigned char page;
 0170           ;   page=y>>3;
 0170 6695              lsr R22
 0172 6695              lsr R22
 0174 6695              lsr R22
 0176                   .dbline 208
 0176           ;   if(x>63)
 0176 8FE3              ldi R24,63
 0178 8417              cp R24,R20
 017A 40F4              brsh L32
 017C                   .dbline 209
 017C           ;   { x=x-64;
 017C                   .dbline 209
 017C 4054              subi R20,64
 017E                   .dbline 211
 017E           ;     //choose_right_screen();
 017E           ;     lcd_out_ctl_r(LCD_SET_PAGE+page);//write_cmd(PAGE_CO+page);
 017E 062F              mov R16,R22
 0180 0854              subi R16,72    ; addi 184
 0182 74DF              xcall _lcd_out_ctl_r
 0184                   .dbline 212
 0184           ;       lcd_out_ctl_r(LCD_SET_COL+x);//write_cmd(ROW_CO+x);
 0184 042F              mov R16,R20
 0186 005C              subi R16,192    ; addi 64
 0188 71DF              xcall _lcd_out_ctl_r
 018A                   .dbline 213
 018A           ;   }
 018A 06C0              xjmp L33
 018C           L32:
 018C                   .dbline 215
 018C                   .dbline 216
 018C 062F              mov R16,R22
 018E 0854              subi R16,72    ; addi 184
 0190 5BDF              xcall _lcd_out_ctl_l
 0192                   .dbline 217
 0192 042F              mov R16,R20
 0194 005C              subi R16,192    ; addi 64
 0196 58DF              xcall _lcd_out_ctl_l
 0198                   .dbline 218
 0198           L33:
 0198                   .dbline -2
 0198           L31:
 0198 0E940000          xcall pop_gset2
 019C                   .dbline 0 ; func end
 019C 0895              ret
 019E                   .dbsym r page 22 c
 019E                   .dbsym r y 22 c
 019E                   .dbsym r x 20 c
 019E                   .dbend
 019E                   .dbfunc e write_to_lcd _write_to_lcd fV
 019E           ;            dat -> R20
                        .even
 019E           _write_to_lcd::
 019E 0E940000          xcall push_gset1
 01A2 402F              mov R20,R16
 01A4                   .dbline -1
 01A4                   .dbline 222
 01A4           ;   else    
 01A4           ;   { //choose_left_screen();
 01A4           ;     lcd_out_ctl_l(LCD_SET_PAGE+page);
 01A4           ;       lcd_out_ctl_l(LCD_SET_COL+x);
 01A4           ;   }
 01A4           ; }
 01A4           ; 
 01A4           ; void write_to_lcd(unsigned char dat)
 01A4           ; {
 01A4                   .dbline 223
 01A4           ;   lcd_out_dat_l(dat);
 01A4 042F              mov R16,R20
 01A6 2CDF              xcall _lcd_out_dat_l
 01A8                   .dbline -2
 01A8           L34:
 01A8 0E940000          xcall pop_gset1
 01AC                   .dbline 0 ; func end
 01AC 0895              ret
 01AE                   .dbsym r dat 20 c
 01AE                   .dbend

⌨️ 快捷键说明

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