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

📄 ac16-1.lis

📁 AVR单片机ATmega16(L)应用实例-驱动128×64点阵图形液晶模块
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0304 08F4              brsh L35
 0306                   .dbline 126
 0306 03C0              xjmp L34
 0308           L35:
 0308                   .dbline 127
 0308 C298              cbi 0x18,2
 030A                   .dbline 127
 030A 0000              nop
 030C                   .dbline 128
 030C           L33:
 030C                   .dbline 121
 030C F5CF              xjmp L32
 030E           L34:
 030E                   .dbline 129
 030E           ;       EN_0;_NOP();                            
 030E           ;       }
 030E           ; DDRA=0xff;                                    
 030E 8FEF              ldi R24,255
 0310 8ABB              out 0x1a,R24
 0312                   .dbline 130
 0312           ; EN_0;_NOP();                                  
 0312 C298              cbi 0x18,2
 0314                   .dbline 130
 0314 0000              nop
 0316                   .dbline -2
 0316           L31:
 0316                   .dbline 0 ; func end
 0316 0895              ret
 0318                   .dbsym r val 16 c
 0318                   .dbend
 0318                   .dbfunc e wcode _wcode fV
 0318           ;          sel_r -> y+4
 0318           ;          sel_l -> R22
 0318           ;              c -> R20
                        .even
 0318           _wcode::
 0318 0E940000          xcall push_gset2
 031C 622F              mov R22,R18
 031E 402F              mov R20,R16
 0320                   .dbline -1
 0320                   .dbline 134
 0320           ; }                                     
 0320           ; /*--------------写指令到LCM子函数---------------*/
 0320           ; void wcode(uchar c,uchar sel_l,uchar sel_r) 
 0320           ; {     
 0320                   .dbline 135
 0320           ; if(sel_l==1)CS1_1;
 0320 6130              cpi R22,1
 0322 11F4              brne L38
 0324                   .dbline 135
 0324 C39A              sbi 0x18,3
 0326 01C0              xjmp L39
 0328           L38:
 0328                   .dbline 136
 0328           ; else CS1_0;                                           
 0328 C398              cbi 0x18,3
 032A           L39:
 032A                   .dbline 137
 032A           ; _NOP();                               
 032A 0000              nop
 032C                   .dbline 138
 032C           ; if(sel_r==1)CS2_1;
 032C 8C81              ldd R24,y+4
 032E 8130              cpi R24,1
 0330 11F4              brne L40
 0332                   .dbline 138
 0332 C49A              sbi 0x18,4
 0334 01C0              xjmp L41
 0336           L40:
 0336                   .dbline 139
 0336           ; else CS2_0;
 0336 C498              cbi 0x18,4
 0338           L41:
 0338                   .dbline 140
 0338           ; _NOP();                                                       
 0338 0000              nop
 033A                   .dbline 141
 033A           ; lcd_busy();                                           
 033A D7DF              xcall _lcd_busy
 033C                   .dbline 142
 033C           ; RS_0;_NOP();                                  
 033C C098              cbi 0x18,0
 033E                   .dbline 142
 033E 0000              nop
 0340                   .dbline 143
 0340           ; RW_0;_NOP();                                  
 0340 C198              cbi 0x18,1
 0342                   .dbline 143
 0342 0000              nop
 0344                   .dbline 144
 0344           ; DataPort=c;                                           
 0344 4BBB              out 0x1b,R20
 0346                   .dbline 145
 0346           ; EN_1;_NOP();                                  
 0346 C29A              sbi 0x18,2
 0348                   .dbline 145
 0348 0000              nop
 034A                   .dbline 146
 034A           ; EN_0;_NOP();                                  
 034A C298              cbi 0x18,2
 034C                   .dbline 146
 034C 0000              nop
 034E                   .dbline -2
 034E           L37:
 034E 0E940000          xcall pop_gset2
 0352                   .dbline 0 ; func end
 0352 0895              ret
 0354                   .dbsym l sel_r 4 c
 0354                   .dbsym r sel_l 22 c
 0354                   .dbsym r c 20 c
 0354                   .dbend
 0354                   .dbfunc e wdata _wdata fV
 0354           ;          sel_r -> y+4
 0354           ;          sel_l -> R22
 0354           ;              c -> R20
                        .even
 0354           _wdata::
 0354 0E940000          xcall push_gset2
 0358 622F              mov R22,R18
 035A 402F              mov R20,R16
 035C                   .dbline -1
 035C                   .dbline 150
 035C           ; }                                                             
 035C           ; /*---------------写数据到LCM子函数-------------*/
 035C           ; void wdata(uchar c,uchar sel_l,uchar sel_r) 
 035C           ; {                                                             
 035C                   .dbline 151
 035C           ; if(sel_l==1)CS1_1;
 035C 6130              cpi R22,1
 035E 11F4              brne L43
 0360                   .dbline 151
 0360 C39A              sbi 0x18,3
 0362 01C0              xjmp L44
 0364           L43:
 0364                   .dbline 152
 0364           ; else CS1_0;           
 0364 C398              cbi 0x18,3
 0366           L44:
 0366                   .dbline 153
 0366           ; _NOP();             
 0366 0000              nop
 0368                   .dbline 154
 0368           ; if(sel_r==1)CS2_1;
 0368 8C81              ldd R24,y+4
 036A 8130              cpi R24,1
 036C 11F4              brne L45
 036E                   .dbline 154
 036E C49A              sbi 0x18,4
 0370 01C0              xjmp L46
 0372           L45:
 0372                   .dbline 155
 0372           ; else CS2_0;                 
 0372 C498              cbi 0x18,4
 0374           L46:
 0374                   .dbline 156
 0374           ; _NOP();                                       
 0374 0000              nop
 0376                   .dbline 157
 0376           ; lcd_busy();                                           
 0376 B9DF              xcall _lcd_busy
 0378                   .dbline 158
 0378           ; RS_1;_NOP();                                  
 0378 C09A              sbi 0x18,0
 037A                   .dbline 158
 037A 0000              nop
 037C                   .dbline 159
 037C           ; RW_0;_NOP();                                  
 037C C198              cbi 0x18,1
 037E                   .dbline 159
 037E 0000              nop
 0380                   .dbline 160
 0380           ; DataPort=c;                   
 0380 4BBB              out 0x1b,R20
 0382                   .dbline 161
 0382           ; EN_1;_NOP();                  
 0382 C29A              sbi 0x18,2
 0384                   .dbline 161
 0384 0000              nop
 0386                   .dbline 162
 0386           ; EN_0;_NOP();                  
 0386 C298              cbi 0x18,2
 0388                   .dbline 162
 0388 0000              nop
 038A                   .dbline -2
 038A           L42:
 038A 0E940000          xcall pop_gset2
 038E                   .dbline 0 ; func end
 038E 0895              ret
 0390                   .dbsym l sel_r 4 c
 0390                   .dbsym r sel_l 22 c
 0390                   .dbsym r c 20 c
 0390                   .dbend
 0390                   .dbfunc e lw _lw fV
 0390           ;             dd -> y+5
 0390           ;              y -> R22
 0390           ;              x -> R20
                        .even
 0390           _lw::
 0390 0E940000          xcall push_gset2
 0394 622F              mov R22,R18
 0396 402F              mov R20,R16
 0398 2197              sbiw R28,1
 039A                   .dbline -1
 039A                   .dbline 166
 039A           ; }                                             
 039A           ; /*根据x、y地址定位,将数据写入LCM左半屏或右半屏的子函数*/
 039A           ; void lw(uchar x, uchar y, uchar dd)   
 039A           ; {                                                             
 039A                   .dbline 167
 039A           ; if(x>=64)                                             
 039A 4034              cpi R20,64
 039C 50F0              brlo L48
 039E                   .dbline 168
 039E           ; {set_xy(x-64,y);                              
 039E                   .dbline 168
 039E 262F              mov R18,R22
 03A0 042F              mov R16,R20
 03A2 0054              subi R16,64
 03A4 20D0              xcall _set_xy
 03A6                   .dbline 169
 03A6           ; wdata(dd,0,1);}               
 03A6 81E0              ldi R24,1
 03A8 8883              std y+0,R24
 03AA 2227              clr R18
 03AC 0D81              ldd R16,y+5
 03AE D2DF              xcall _wdata
 03B0                   .dbline 169
 03B0 08C0              xjmp L49
 03B2           L48:
 03B2                   .dbline 171
 03B2                   .dbline 171
 03B2 262F              mov R18,R22
 03B4 042F              mov R16,R20
 03B6 17D0              xcall _set_xy
 03B8                   .dbline 172
 03B8 2224              clr R2
 03BA 2882              std y+0,R2
 03BC 21E0              ldi R18,1
 03BE 0D81              ldd R16,y+5
 03C0 C9DF              xcall _wdata
 03C2                   .dbline 172
 03C2           L49:
 03C2                   .dbline -2
 03C2           L47:
 03C2 2196              adiw R28,1
 03C4 0E940000          xcall pop_gset2
 03C8                   .dbline 0 ; func end
 03C8 0895              ret
 03CA                   .dbsym l dd 5 c
 03CA                   .dbsym r y 22 c
 03CA                   .dbsym r x 20 c
 03CA                   .dbend
 03CA                   .dbfunc e set_startline _set_startline fV
 03CA           ;              i -> R20
                        .even
 03CA           _set_startline::
 03CA 0E940000          xcall push_gset1
 03CE 402F              mov R20,R16
 03D0 2197              sbiw R28,1
 03D2                   .dbline -1
 03D2                   .dbline 176
 03D2           ; else                                          
 03D2           ; {set_xy(x,y);                         
 03D2           ; wdata(dd,1,0);}                       
 03D2           ; }                                             
 03D2           ; /*---------------设定起始行子函数--------------*/
 03D2           ; void set_startline(uchar i)   
 03D2           ; {                                                             
 03D2                   .dbline 177
 03D2           ; i=0xc0+i;                                     
 03D2 4054              subi R20,64    ; addi 192
 03D4                   .dbline 178
 03D4           ; wcode(i,1,1);                         
 03D4 81E0              ldi R24,1
 03D6 8883              std y+0,R24
 03D8 21E0              ldi R18,1
 03DA 042F              mov R16,R20
 03DC 9DDF              xcall _wcode
 03DE                   .dbline -2
 03DE           L50:
 03DE 2196              adiw R28,1
 03E0 0E940000          xcall pop_gset1
 03E4                   .dbline 0 ; func end
 03E4 0895              ret
 03E6                   .dbsym r i 20 c
 03E6                   .dbend
 03E6                   .dbfunc e set_xy _set_xy fV
 03E6           ;              y -> R20
 03E6           ;              x -> R22
                        .even
 03E6           _set_xy::
 03E6 0E940000          xcall push_gset2
 03EA 422F              mov R20,R18
 03EC 602F              mov R22,R16
 03EE 2197              sbiw R28,1
 03F0                   .dbline -1
 03F0                   .dbline 182
 03F0           ; }                                             
 03F0           ; /*---------------定位x方向、y方向的子函数--------------*/
 03F0           ; void set_xy(uchar x,uchar y)  
 03F0           ; {                                                             
 03F0                   .dbline 183
 03F0           ; x=x+0x40;                             
 03F0 605C              subi R22,192    ; addi 64
 03F2                   .dbline 184
 03F2           ; y=y+0xb8;                     
 03F2 4854              subi R20,72    ; addi 184
 03F4                   .dbline 185
 03F4           ; wcode(x,1,1);                  
 03F4 81E0              ldi R24,1
 03F6 8883              std y+0,R24
 03F8 21E0              ldi R18,1
 03FA 062F              mov R16,R22
 03FC 8DDF              xcall _wcode
 03FE                   .dbline 186
 03FE           ; wcode(y,1,1);                  
 03FE 81E0              ldi R24,1
 0400 8883              std y+0,R24
 0402 21E0              ldi R18,1
 0404 042F              mov R16,R20
 0406 88DF              xcall _wcode
 0408                   .dbline -2
 0408           L51:
 0408 2196              adiw R28,1
 040A 0E940000          xcall pop_gset2
 040E                   .dbline 0 ; func end
 040E 0895              ret
 0410                   .dbsym r y 20 c
 0410                   .dbsym r x 22 c
 0410                   .dbend
 0410                   .dbfunc e dison_off _dison_off fV
 0410           ;              o -> R20
                        .even
 0410           _dison_off::
 0410 0E940000          xcall push_gset1
 0414 402F              mov R20,R16

⌨️ 快捷键说明

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