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

📄 mb90092.lis

📁 mb90092 osd demo test 字符叠加程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0196                   .dbline 235
 0196           ;    {
 0196                   .dbline 236
 0196           ;    WDR(); //喂狗
 0196 A895              wdr
 0198                   .dbline 237
 0198           ;        for (j=0;j<Lcd_Characters;j++)
 0198 AA24              clr R10
 019A 14C0              xjmp L49
 019C           L46:
 019C                   .dbline 238
 019C                   .dbline 239
 019C A895              wdr
 019E                   .dbline 245
 019E 2224              clr R2
 01A0 2886              std y+8,R2
 01A2 87E0              ldi R24,7
 01A4 8E83              std y+6,R24
 01A6 81E0              ldi R24,1
 01A8 8C83              std y+4,R24
 01AA 82E0              ldi R24,2
 01AC 8A83              std y+2,R24
 01AE FA01              movw R30,R20
 01B0 2190              ld R2,Z+
 01B2 3190              ld R3,Z+
 01B4 AF01              movw R20,R30
 01B6 3982              std y+1,R3
 01B8 2882              std y+0,R2
 01BA 869F              mul R24,R22
 01BC 202D              mov R18,R0
 01BE 0A2D              mov R16,R10
 01C0 26D1              xcall _MB90092_DisChar
 01C2                   .dbline 246
 01C2           L47:
 01C2                   .dbline 237
 01C2 A394              inc R10
 01C4           L49:
 01C4                   .dbline 237
 01C4 8A2D              mov R24,R10
 01C6 8731              cpi R24,23
 01C8 48F3              brlo L46
 01CA                   .dbline 247
 01CA           L43:
 01CA                   .dbline 234
 01CA 6395              inc R22
 01CC           L45:
 01CC                   .dbline 234
 01CC 6630              cpi R22,6
 01CE 18F3              brlo L42
 01D0                   .dbline 248
 01D0           L40:
 01D0                   .dbline -2
 01D0           L39:
 01D0 2996              adiw R28,9
 01D2 0E940000          xcall pop_gset3
 01D6                   .dbline 0 ; func end
 01D6 0895              ret
 01D8                   .dbsym r Buf 20 pi
 01D8                   .dbsym r i 22 c
 01D8                   .dbsym r j 10 c
 01D8                   .dbend
 01D8                   .dbfunc e M90092_DisRow _M90092_DisRow fV
 01D8           ;       charaddr -> R20,R21
 01D8           ;              i -> R22
 01D8           ;        c_color -> R10
 01D8           ;        b_color -> R12
 01D8           ;       charsize -> R14
 01D8           ;            len -> y+23
 01D8           ;            Row -> y+21
 01D8           ;          CChar -> y+19
                        .even
 01D8           _M90092_DisRow::
 01D8 0E940000          xcall push_arg4
 01DC 0E940000          xcall push_gset5
 01E0 2997              sbiw R28,9
 01E2 E98C              ldd R14,y+25
 01E4 CB8C              ldd R12,y+27
 01E6 AD8C              ldd R10,y+29
 01E8                   .dbline -1
 01E8                   .dbline 322
 01E8           ;          {
 01E8           ;          WDR(); //喂狗
 01E8           ; //       charaddr=CharToAddr(Buf);
 01E8           ; //       if (*Buf > 127) 
 01E8           ; //           Buf+=2;
 01E8           ; //        else
 01E8           ; //               Buf++;
 01E8           ;          MB90092_DisChar (j,i*2,*Buf++,2,B_COLOR_BLUE,C_COLOR_WHITE,0);
 01E8           ;          }
 01E8           ;       }
 01E8           ;   }
 01E8           ; }
 01E8           ; /*
 01E8           ; void Tft_Show_Update(void){
 01E8           ; uint8 i,j=0;
 01E8           ; uint8 *Buf=(uint8 *)Lcd_Show_Buf;
 01E8           ; uint16 charaddr;
 01E8           ; if(Tft_Enable_Show_Flag)
 01E8           ;   {
 01E8           ;   Tft_Enable_Show_Flag=FALSE;
 01E8           ;   for(i=0;i<Lcd_Lines;i++)
 01E8           ;    {
 01E8           ;        for (j=0;j<Lcd_Characters/2;j++)
 01E8           ;          {
 01E8           ;          charaddr=CharToAddr(Buf);
 01E8           ;          if (*Buf > 127) 
 01E8           ;              Buf+=2;
 01E8           ;           else
 01E8           ;                  Buf++;
 01E8           ;          MB90092_DisChar (j,i*2,charaddr,2,B_COLOR_BLUE,C_COLOR_WHITE,0);
 01E8           ;          }
 01E8           ;       }
 01E8           ;   }
 01E8           ; }
 01E8           ; */
 01E8           ; /*
 01E8           ; void Tft_Show_Update(void){
 01E8           ; uint8 i,j=0;
 01E8           ; uint8 *Buf;
 01E8           ; uint16 charaddr;
 01E8           ;   for(i=0;i<0x06;i++)
 01E8           ;    {
 01E8           ;       if(len!=0){ 
 01E8           ;        for (j=0;j<23 && len!=0;j++)
 01E8           ;          {
 01E8           ;          charaddr=CharToAddr(Buf);
 01E8           ;          if (*Buf > 127) 
 01E8           ;              Buf+=2;
 01E8           ;           else
 01E8           ;                  Buf++;
 01E8           ;          MB90092_DisChar (j,i*2,charaddr,2,B_COLOR_BLUE,C_COLOR_WHITE,0);
 01E8           ;          len--;
 01E8           ;          }
 01E8           ;         for (;j<23 && len==0;j++) 
 01E8           ;                  MB90092_DisChar (j,i*2,0,2,B_COLOR_BLUE,C_COLOR_WHITE,0);  
 01E8           ;         }
 01E8           ;        else
 01E8           ;                {
 01E8           ;                for(j=0;j<23;j++)
 01E8           ;                      MB90092_DisChar (j,i*2,0,2,B_COLOR_BLUE,C_COLOR_WHITE,0);
 01E8           ;                } 
 01E8           ;       }
 01E8           ; }
 01E8           ; 
 01E8           ; 
 01E8           ; */
 01E8           ; 
 01E8           ; /*********************************************************************************************************
 01E8           ; ** 函数名称:M90092_DisRow
 01E8           ; ** 功能描述: 显示一行字符
 01E8           ; ** 输 入:   CChar:要新显示的数据,计算机内码非90092内码
 01E8           ; **           Row:指定显示行
 01E8           ; **           len:显示数据长度,全角半角都算一个
 01E8           ; **           charsize:显示字体大小 00:standard 01:double width   02:double width double hight   03:quadruple width double hight     
 01E8           ; **           b_color:指定显示行背景色
 01E8           ; **           c_color:指定显示行前景色
 01E8           ; ** 全局变量: 
 01E8           ; ** 调用模块: CharToAddr():显示数据内码转换
 01E8           ; ** 说明:    
 01E8           ; ** 注意:   
 01E8           ; ** 日 期:   2005年11月21日
 01E8           ; ********************************************************************************************************/
 01E8           ; 
 01E8           ; void M90092_DisRow(uint8 *CChar,uint8 Row,uint8 len,uint8 charsize, uint8 b_color,uint8 c_color)
 01E8           ; {
 01E8                   .dbline 325
 01E8           ; uint8 i;
 01E8           ; uint16 charaddr;
 01E8           ;       if (Row>0x0B) return;                   //invlid row number
 01E8 8BE0              ldi R24,11
 01EA 0D88              ldd R0,y+21
 01EC 8015              cp R24,R0
 01EE 08F4              brsh L51
 01F0                   .dbline 325
 01F0 2AC0              xjmp L50
 01F2           L51:
 01F2                   .dbline 326
 01F2           ;       charaddr=CharToAddr(CChar);
 01F2 0B89              ldd R16,y+19
 01F4 1C89              ldd R17,y+20
 01F6 2CD0              xcall _CharToAddr
 01F8 A801              movw R20,R16
 01FA                   .dbline 327
 01FA 6627              clr R22
 01FC 1FC0              xjmp L56
 01FE           L53:
 01FE                   .dbline 327
 01FE           ;       for (i=0;i<0x17 && i<len;i++){
 01FE                   .dbline 328
 01FE           ;       WDR(); //喂狗
 01FE A895              wdr
 0200                   .dbline 329
 0200           ;         MB90092_ClearXY (i,Row);
 0200 2D89              ldd R18,y+21
 0202 062F              mov R16,R22
 0204 9ED0              xcall _MB90092_ClearXY
 0206                   .dbline 330
 0206           ;         MB90092_DisChar(i,Row,charaddr,charsize,b_color,c_color,0);
 0206 2224              clr R2
 0208 2886              std y+8,R2
 020A AE82              std y+6,R10
 020C CC82              std y+4,R12
 020E EA82              std y+2,R14
 0210 5983              std y+1,R21
 0212 4883              std y+0,R20
 0214 2D89              ldd R18,y+21
 0216 062F              mov R16,R22
 0218 FAD0              xcall _MB90092_DisChar
 021A                   .dbline 331
 021A           ;       if(*CChar >128) CChar+=2;
 021A 80E8              ldi R24,128
 021C EB89              ldd R30,y+19
 021E FC89              ldd R31,y+20
 0220 2080              ldd R2,z+0
 0222 8215              cp R24,R2
 0224 28F4              brsh L57
 0226                   .dbline 331
 0226 CF01              movw R24,R30
 0228 0296              adiw R24,2
 022A 9C8B              std y+20,R25
 022C 8B8B              std y+19,R24
 022E 05C0              xjmp L58
 0230           L57:
 0230                   .dbline 332
 0230           ;         else CChar++;
 0230 8B89              ldd R24,y+19
 0232 9C89              ldd R25,y+20
 0234 0196              adiw R24,1
 0236 9C8B              std y+20,R25
 0238 8B8B              std y+19,R24
 023A           L58:
 023A                   .dbline 333
 023A           L54:
 023A                   .dbline 327
 023A 6395              inc R22
 023C           L56:
 023C                   .dbline 327
 023C 6731              cpi R22,23
 023E 18F4              brsh L59
 0240 0F88              ldd R0,y+23
 0242 6015              cp R22,R0
 0244 E0F2              brlo L53
 0246           L59:
 0246                   .dbline -2
 0246           L50:
 0246 2996              adiw R28,9
 0248 0E940000          xcall pop_gset5
 024C 2496              adiw R28,4
 024E                   .dbline 0 ; func end
 024E 0895              ret
 0250                   .dbsym r charaddr 20 i
 0250                   .dbsym r i 22 c
 0250                   .dbsym r c_color 10 c
 0250                   .dbsym r b_color 12 c
 0250                   .dbsym r charsize 14 c
 0250                   .dbsym l len 23 c
 0250                   .dbsym l Row 21 c
 0250                   .dbsym l CChar 19 pc
 0250                   .dbend
 0250                   .dbfunc e CharToAddr _CharToAddr fi
 0250           ;            tmp -> R10,R11
 0250           ;           tmp0 -> R20
 0250           ;           tmp1 -> R22
 0250           ;          CChar -> R16,R17
                        .even
 0250           _CharToAddr::
 0250 0E940000          xcall push_gset3
 0254                   .dbline -1
 0254                   .dbline 347
 0254           ;       }
 0254           ; }
 0254           ; /*********************************************************************************************************
 0254           ; ** 函数名称: CharToAddr
 0254           ; ** 功能描述: 汉字内码转换ROM地址函数
 0254           ; ** 输 入:   cchar:要转换的内码(全角半角自动转换)
 0254           ; ** 输 出:   对应的uint16型的ROM内码          
 0254           ; ** 全局变量:
 0254           ; ** 调用模块: 
 0254           ; ** 说明:    
 0254           ; ** 注意:    
 0254           ; ** 日 期:   2005年11月12日
 0254           ; ********************************************************************************************************/
 0254           ; 
 0254           ; uint16 CharToAddr(uint8 *CChar){
 0254                   .dbline 350
 0254           ; uint8 tmp1,tmp0;
 0254           ; uint16 tmp;
 0254           ; WDR(); //喂狗
 0254 A895              wdr
 0256                   .dbline 351
 0256           ;  if (*CChar >= 0xb0) {
 0256 F801              movw R30,R16
 0258 8081              ldd R24,z+0
 025A 803B              cpi R24,176
 025C 48F0              brlo L61
 025E                   .dbline 351
 025E                   .dbline 352
 025E           ;      tmp1=*CChar-0xa1-6;
 025E 6081              ldd R22,z+0
 0260 615A              subi R22,161
 0262 6650              subi R22,6
 0264                   .dbline 353
 0264           ;        CChar++;
 0264 0F5F              subi R16,255  ; offset = 1
 0266 1F4F              sbci R17,255
 0268                   .dbline 354
 0268           ;      tmp0=*CChar-0xa1;
 0268 F801              movw R30,R16
 026A 4081              ldd R20,z+0
 026C 415A              subi R20,161
 026E                   .dbline 355
 026E           ;      }
 026E 28C0              xjmp L62
 0270           L61:
 0270                   .dbline 357
 0270           ;  else 
 0270           ;       if(*CChar>=0xa1 && *CChar<0xaa)

⌨️ 快捷键说明

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