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

📄 lcd.lis

📁 12C887 的驱动程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 01AE 8830              cpi R24,8
 01B0 A0F0              brlo L38
 01B2 8FE0              ldi R24,15
 01B4 8A15              cp R24,R10
 01B6 88F0              brlo L38
 01B8                   .dbline 139
 01B8                   .dbline 139
 01B8 88E0              ldi R24,8
 01BA 8A9D              mul R24,R10
 01BC 802D              mov R24,R0
 01BE 8054              subi R24,64
 01C0 8883              std y+0,R24
 01C2 262F              mov R18,R22
 01C4 8601              movw R16,R12
 01C6 BDDF              xcall _displaychar_right
 01C8                   .dbline 139
 01C8 88E0              ldi R24,8
 01CA 8A9D              mul R24,R10
 01CC 802D              mov R24,R0
 01CE 8054              subi R24,64
 01D0 8883              std y+0,R24
 01D2 262F              mov R18,R22
 01D4 2F5F              subi R18,255    ; addi 1
 01D6 8A01              movw R16,R20
 01D8 B4DF              xcall _displaychar_right
 01DA                   .dbline 139
 01DA           L38:
 01DA                   .dbline -2
 01DA           L35:
 01DA 2196              adiw R28,1
 01DC 0E940000          xcall pop_gset4
 01E0                   .dbline 0 ; func end
 01E0 0895              ret
 01E2                   .dbsym r heng 10 c
 01E2                   .dbsym r zong 22 c
 01E2                   .dbsym r array2 20 pc
 01E2                   .dbsym r array1 12 pc
 01E2                   .dbend
 01E2                   .dbfunc e displayL _displayL fV
 01E2           ;              i -> R20
 01E2           ;              y -> y+4
 01E2           ;              x -> R20
 01E2           ;          array -> R22,R23
                        .even
 01E2           _displayL::
 01E2 0E940000          xcall push_gset2
 01E6 422F              mov R20,R18
 01E8 B801              movw R22,R16
 01EA                   .dbline -1
 01EA                   .dbline 145
 01EA           ;                                
 01EA           ;   if((heng>=8)&&(heng<=15))        
 01EA           ;     {displaychar_right(array1,zong,(heng-8)*8);       displaychar_right(array2,zong+1,(heng-8)*8);}
 01EA           ; }
 01EA           ; 
 01EA           ; /****************************** LCD汉字显示函数(8*16)****************************************/
 01EA           ; 
 01EA           ; void displayL(uchar*array,uchar x,uchar y)            //array是点阵字模指针,x是指屏竖方向的坐标,y是指屏横方向上的坐标
 01EA           ; {     
 01EA                   .dbline 147
 01EA           ;    uchar i;
 01EA           ;    lcdcommand(0,0xb8+x);                              //设置显示本字符的初始地址                    
 01EA 242F              mov R18,R20
 01EC 2854              subi R18,72    ; addi 184
 01EE 0027              clr R16
 01F0 1FDF              xcall _lcdcommand
 01F2                   .dbline 148
 01F2           ;    lcdcommand(0,0x40+y);
 01F2 2C81              ldd R18,y+4
 01F4 205C              subi R18,192    ; addi 64
 01F6 0027              clr R16
 01F8 1BDF              xcall _lcdcommand
 01FA                   .dbline 149
 01FA           ;    for(i=0;i<16;i++)                                  //每半个字代码为16元素的数组
 01FA 4427              clr R20
 01FC 08C0              xjmp L44
 01FE           L41:
 01FE                   .dbline 150
 01FE                   .dbline 151
 01FE E42F              mov R30,R20
 0200 FF27              clr R31
 0202 E60F              add R30,R22
 0204 F71F              adc R31,R23
 0206 2081              ldd R18,z+0
 0208 0027              clr R16
 020A 24DF              xcall _lcddatas
 020C                   .dbline 153
 020C           L42:
 020C                   .dbline 149
 020C 4395              inc R20
 020E           L44:
 020E                   .dbline 149
 020E 4031              cpi R20,16
 0210 B0F3              brlo L41
 0212                   .dbline -2
 0212           L40:
 0212 0E940000          xcall pop_gset2
 0216                   .dbline 0 ; func end
 0216 0895              ret
 0218                   .dbsym r i 20 c
 0218                   .dbsym l y 4 c
 0218                   .dbsym r x 20 c
 0218                   .dbsym r array 22 pc
 0218                   .dbend
 0218                   .dbfunc e displayR _displayR fV
 0218           ;              i -> R20
 0218           ;              y -> y+4
 0218           ;              x -> R20
 0218           ;          array -> R22,R23
                        .even
 0218           _displayR::
 0218 0E940000          xcall push_gset2
 021C 422F              mov R20,R18
 021E B801              movw R22,R16
 0220                   .dbline -1
 0220                   .dbline 159
 0220           ;      {        
 0220           ;       lcddatas(0,*(array+i));
 0220           ;                                                       
 0220           ;      }
 0220           ; 
 0220           ; }
 0220           ; 
 0220           ; 
 0220           ; void displayR(uchar*array,uchar x,uchar y)            //array是点阵字模指针,x是指屏竖方向的坐标,y是指屏横方向上的坐标
 0220           ; {     
 0220                   .dbline 162
 0220           ;    uchar i;
 0220           ; 
 0220           ;    lcdcommand(1,0xb8+x);                             
 0220 242F              mov R18,R20
 0222 2854              subi R18,72    ; addi 184
 0224 01E0              ldi R16,1
 0226 04DF              xcall _lcdcommand
 0228                   .dbline 163
 0228           ;    lcdcommand(1,0x40+y);
 0228 2C81              ldd R18,y+4
 022A 205C              subi R18,192    ; addi 64
 022C 01E0              ldi R16,1
 022E 00DF              xcall _lcdcommand
 0230                   .dbline 165
 0230           ; 
 0230           ;    for(i=0;i<16;i++)                                  //每半个字代码为16元素的数组
 0230 4427              clr R20
 0232 08C0              xjmp L49
 0234           L46:
 0234                   .dbline 166
 0234                   .dbline 167
 0234 E42F              mov R30,R20
 0236 FF27              clr R31
 0238 E60F              add R30,R22
 023A F71F              adc R31,R23
 023C 2081              ldd R18,z+0
 023E 01E0              ldi R16,1
 0240 09DF              xcall _lcddatas
 0242                   .dbline 168
 0242           L47:
 0242                   .dbline 165
 0242 4395              inc R20
 0244           L49:
 0244                   .dbline 165
 0244 4031              cpi R20,16
 0246 B0F3              brlo L46
 0248                   .dbline -2
 0248           L45:
 0248 0E940000          xcall pop_gset2
 024C                   .dbline 0 ; func end
 024C 0895              ret
 024E                   .dbsym r i 20 c
 024E                   .dbsym l y 4 c
 024E                   .dbsym r x 20 c
 024E                   .dbsym r array 22 pc
 024E                   .dbend
 024E                   .dbfunc e display_chinese _display_chinese fV
 024E           ;           heng -> R10
 024E           ;           zong -> R22
 024E           ;         array2 -> R20,R21
 024E           ;         array1 -> R12,R13
                        .even
 024E           _display_chinese::
 024E 0E940000          xcall push_gset4
 0252 A901              movw R20,R18
 0254 6801              movw R12,R16
 0256 2197              sbiw R28,1
 0258 6985              ldd R22,y+9
 025A AB84              ldd R10,y+11
 025C                   .dbline -1
 025C                   .dbline 173
 025C           ;      {        
 025C           ;       lcddatas(1,*(array+i));                                                         
 025C           ;      }
 025C           ; 
 025C           ; }     
 025C           ; 
 025C           ; void display_chinese(uchar*array1,uchar*array2,uchar zong,uchar heng)
 025C           ; {
 025C                   .dbline 174
 025C           ;   if((heng>=0)&&(heng<=3))         //左半屏显示
 025C 8A2D              mov R24,R10
 025E 8030              cpi R24,0
 0260 A0F0              brlo L51
 0262 83E0              ldi R24,3
 0264 8A15              cp R24,R10
 0266 88F0              brlo L51
 0268                   .dbline 175
 0268           ;    {
 0268                   .dbline 176
 0268           ;     displayL(array1,zong*2,heng*16);  displayL(array2,zong*2+1,heng*16);
 0268 80E1              ldi R24,16
 026A 8A9D              mul R24,R10
 026C 0882              std y+0,R0
 026E 82E0              ldi R24,2
 0270 869F              mul R24,R22
 0272 202D              mov R18,R0
 0274 8601              movw R16,R12
 0276 B5DF              xcall _displayL
 0278                   .dbline 176
 0278 80E1              ldi R24,16
 027A 8A9D              mul R24,R10
 027C 0882              std y+0,R0
 027E 82E0              ldi R24,2
 0280 869F              mul R24,R22
 0282 202D              mov R18,R0
 0284 2F5F              subi R18,255    ; addi 1
 0286 8A01              movw R16,R20
 0288 ACDF              xcall _displayL
 028A                   .dbline 177
 028A           ;    }
 028A           L51:
 028A                   .dbline 178
 028A 8A2D              mov R24,R10
 028C 8430              cpi R24,4
 028E C0F0              brlo L53
 0290 87E0              ldi R24,7
 0292 8A15              cp R24,R10
 0294 A8F0              brlo L53
 0296                   .dbline 179
 0296                   .dbline 180
 0296 80E1              ldi R24,16
 0298 8A9D              mul R24,R10
 029A 802D              mov R24,R0
 029C 8054              subi R24,64
 029E 8883              std y+0,R24
 02A0 82E0              ldi R24,2
 02A2 869F              mul R24,R22
 02A4 202D              mov R18,R0
 02A6 8601              movw R16,R12
 02A8 B7DF              xcall _displayR
 02AA                   .dbline 180
 02AA 80E1              ldi R24,16
 02AC 8A9D              mul R24,R10
 02AE 802D              mov R24,R0
 02B0 8054              subi R24,64
 02B2 8883              std y+0,R24
 02B4 82E0              ldi R24,2
 02B6 869F              mul R24,R22
 02B8 202D              mov R18,R0
 02BA 2F5F              subi R18,255    ; addi 1
 02BC 8A01              movw R16,R20
 02BE ACDF              xcall _displayR
 02C0                   .dbline 181
 02C0           L53:
 02C0                   .dbline -2
 02C0           L50:
 02C0 2196              adiw R28,1
 02C2 0E940000          xcall pop_gset4
 02C6                   .dbline 0 ; func end
 02C6 0895              ret
 02C8                   .dbsym r heng 10 c
 02C8                   .dbsym r zong 22 c
 02C8                   .dbsym r array2 20 pc
 02C8                   .dbsym r array1 12 pc
 02C8                   .dbend

⌨️ 快捷键说明

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