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

📄 mb90092.lis

📁 mb90092 osd demo test 字符叠加程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0270 F801              movw R30,R16
 0272 2080              ldd R2,z+0
 0274 3324              clr R3
 0276 822D              mov R24,R2
 0278 813A              cpi R24,161
 027A 50F0              brlo L63
 027C 8A3A              cpi R24,170
 027E 40F4              brsh L63
 0280                   .dbline 358
 0280           ;           {
 0280                   .dbline 359
 0280           ;       tmp1=*CChar-0xa1;
 0280 6081              ldd R22,z+0
 0282 615A              subi R22,161
 0284                   .dbline 360
 0284           ;               CChar++;
 0284 0F5F              subi R16,255  ; offset = 1
 0286 1F4F              sbci R17,255
 0288                   .dbline 361
 0288           ;       tmp0=*CChar-0xa1;
 0288 F801              movw R30,R16
 028A 4081              ldd R20,z+0
 028C 415A              subi R20,161
 028E                   .dbline 362
 028E           ;               }
 028E 18C0              xjmp L64
 0290           L63:
 0290                   .dbline 364
 0290           ;         else  
 0290           ;             if(*CChar <127 && *CChar >0x20) {
 0290 F801              movw R30,R16
 0292 2080              ldd R2,z+0
 0294 3324              clr R3
 0296 822D              mov R24,R2
 0298 8F37              cpi R24,127
 029A 80F4              brsh L65
 029C 80E2              ldi R24,32
 029E 8215              cp R24,R2
 02A0 68F4              brsh L65
 02A2                   .dbline 364
 02A2                   .dbline 365
 02A2           ;               tmp=(*CChar-0x20)+0xa3a0;
 02A2 8081              ldd R24,z+0
 02A4 9927              clr R25
 02A6 8097              sbiw R24,32
 02A8 8056              subi R24,96  ; offset = 41888
 02AA 9C45              sbci R25,92
 02AC 5C01              movw R10,R24
 02AE                   .dbline 366
 02AE           ;                         tmp1=(uint8)(tmp>>8)-0xa1;
 02AE BC01              movw R22,R24
 02B0 672F              mov R22,R23
 02B2 7727              clr R23
 02B4 615A              subi R22,161
 02B6                   .dbline 367
 02B6           ;                         tmp0=(uint8)tmp-0xa1;
 02B6 482F              mov R20,R24
 02B8 415A              subi R20,161
 02BA                   .dbline 368
 02BA           ;                         }
 02BA 02C0              xjmp L66
 02BC           L65:
 02BC                   .dbline 370
 02BC           ;                 else
 02BC           ;                         {
 02BC                   .dbline 371
 02BC           ;                         tmp0=0;
 02BC 4427              clr R20
 02BE                   .dbline 372
 02BE           ;                         tmp1=0;
 02BE 6627              clr R22
 02C0                   .dbline 373
 02C0           ;                         }
 02C0           L66:
 02C0           L64:
 02C0           L62:
 02C0                   .dbline 374
 02C0           ; return (tmp1*94+tmp0);
 02C0 8EE5              ldi R24,94
 02C2 869F              mul R24,R22
 02C4 8001              movw R16,R0
 02C6 242E              mov R2,R20
 02C8 3324              clr R3
 02CA 020D              add R16,R2
 02CC 131D              adc R17,R3
 02CE                   .dbline -2
 02CE           L60:
 02CE 0E940000          xcall pop_gset3
 02D2                   .dbline 0 ; func end
 02D2 0895              ret
 02D4                   .dbsym r tmp 10 i
 02D4                   .dbsym r tmp0 20 c
 02D4                   .dbsym r tmp1 22 c
 02D4                   .dbsym r CChar 16 pc
 02D4                   .dbend
 02D4                   .dbfunc e Delay_ms _Delay_ms fV
 02D4           ;              k -> R20,R21
 02D4           ;              i -> R22,R23
 02D4           ;              j -> R10,R11
 02D4           ;             ms -> R16,R17
                        .even
 02D4           _Delay_ms::
 02D4 0E940000          xcall push_gset3
 02D8                   .dbline -1
 02D8                   .dbline 383
 02D8           ; }
 02D8           ; 
 02D8           ; /*********************************************************************************************************
 02D8           ; ** 函数名称: Delay_ms
 02D8           ; ** 功能描述: 延时ms毫秒 (不精确)
 02D8           ; ** 日 期:   2004年12月29日
 02D8           ; ********************************************************************************************************/
 02D8           ; void Delay_ms (uint16 ms)
 02D8           ; {
 02D8                   .dbline 385
 02D8           ;       uint16 i,j,k;
 02D8           ;       for(k=0; k<ms; k++)
 02D8 4427              clr R20
 02DA 5527              clr R21
 02DC 16C0              xjmp L71
 02DE           L68:
 02DE                   .dbline 386
 02DE           ;       for(i=48; i>0; i--)
 02DE 60E3              ldi R22,48
 02E0 70E0              ldi R23,0
 02E2 0EC0              xjmp L75
 02E4           L72:
 02E4                   .dbline 387
 02E4 8AE0              ldi R24,10
 02E6 90E0              ldi R25,0
 02E8 5C01              movw R10,R24
 02EA 04C0              xjmp L79
 02EC           L76:
 02EC                   .dbline 387
 02EC A895              wdr
 02EE           L77:
 02EE                   .dbline 387
 02EE C501              movw R24,R10
 02F0 0197              sbiw R24,1
 02F2 5C01              movw R10,R24
 02F4           L79:
 02F4                   .dbline 387
 02F4 AA20              tst R10
 02F6 D1F7              brne L76
 02F8 BB20              tst R11
 02FA C1F7              brne L76
 02FC           X2:
 02FC           L73:
 02FC                   .dbline 386
 02FC 6150              subi R22,1
 02FE 7040              sbci R23,0
 0300           L75:
 0300                   .dbline 386
 0300 6030              cpi R22,0
 0302 6707              cpc R22,R23
 0304 79F7              brne L72
 0306           X3:
 0306           L69:
 0306                   .dbline 385
 0306 4F5F              subi R20,255  ; offset = 1
 0308 5F4F              sbci R21,255
 030A           L71:
 030A                   .dbline 385
 030A 4017              cp R20,R16
 030C 5107              cpc R21,R17
 030E 38F3              brlo L68
 0310                   .dbline -2
 0310           L67:
 0310 0E940000          xcall pop_gset3
 0314                   .dbline 0 ; func end
 0314 0895              ret
 0316                   .dbsym r k 20 i
 0316                   .dbsym r i 22 i
 0316                   .dbsym r j 10 i
 0316                   .dbsym r ms 16 i
 0316                   .dbend
 0316                   .dbfunc e MB90092_WriteByte _MB90092_WriteByte fV
 0316           ;              i -> R20
 0316           ;          _data -> R16
                        .even
 0316           _MB90092_WriteByte::
 0316 0E940000          xcall push_gset1
 031A                   .dbline -1
 031A                   .dbline 396
 031A           ;         for(j=10; j>0; j--)WDR(); //喂狗;
 031A           ; }
 031A           ; 
 031A           ; /*********************************************************************************************************
 031A           ; ** 函数名称: MB90092_WriteByte
 031A           ; ** 功能描述: 向MB90092 写一个字节数据
 031A           ; ** 日 期:   2004年12月29日
 031A           ; ********************************************************************************************************/
 031A           ; void MB90092_WriteByte (uint8 _data)
 031A           ; {
 031A                   .dbline 398
 031A           ;       uint8 i;
 031A           ;     Lcd_CS_Dis;
 031A C798              cbi 0x18,7
 031C                   .dbline 399
 031C 48E0              ldi R20,8
 031E 0AC0              xjmp L84
 0320           L81:
 0320                   .dbline 399
 0320           ;       for (i=8;i>0;i--){
 0320                   .dbline 400
 0320           ;       WDR(); //喂狗
 0320 A895              wdr
 0322                   .dbline 401
 0322           ;         Lcd_CLK_Dis;
 0322 C698              cbi 0x18,6
 0324                   .dbline 402
 0324           ;         if (_data & 0x01) 
 0324 00FF              sbrs R16,0
 0326 02C0              rjmp L85
 0328                   .dbline 403
 0328           ;            Lcd_SIN_En;
 0328 C59A              sbi 0x18,5
 032A 01C0              xjmp L86
 032C           L85:
 032C                   .dbline 405
 032C           ;         else
 032C           ;            Lcd_SIN_Dis;
 032C C598              cbi 0x18,5
 032E           L86:
 032E                   .dbline 406
 032E C69A              sbi 0x18,6
 0330                   .dbline 407
 0330 0695              lsr R16
 0332                   .dbline 408
 0332           L82:
 0332                   .dbline 399
 0332 4A95              dec R20
 0334           L84:
 0334                   .dbline 399
 0334 2224              clr R2
 0336 2416              cp R2,R20
 0338 98F3              brlo L81
 033A                   .dbline 409
 033A           ;         Lcd_CLK_En;
 033A           ;         _data=_data>>1;       
 033A           ;     }
 033A           ;       Lcd_CS_En;
 033A C79A              sbi 0x18,7
 033C                   .dbline -2
 033C           L80:
 033C 0E940000          xcall pop_gset1
 0340                   .dbline 0 ; func end
 0340 0895              ret
 0342                   .dbsym r i 20 c
 0342                   .dbsym r _data 16 c
 0342                   .dbend
 0342                   .dbfunc e MB90092_ClearXY _MB90092_ClearXY fV
 0342           ;          byte2 -> R20
 0342           ;          byte1 -> R22
 0342           ;              y -> R10
 0342           ;              x -> R20
                        .even
 0342           _MB90092_ClearXY::
 0342 0E940000          xcall push_gset3
 0346 A22E              mov R10,R18
 0348 402F              mov R20,R16
 034A                   .dbline -1
 034A                   .dbline 418
 034A           ; }
 034A           ; 
 034A           ; /*********************************************************************************************************
 034A           ; ** 函数名称: MB90092_ClearXY
 034A           ; ** 功能描述: 清掉屏幕上面坐标(x,y)处的字符,y=0x00~0x0B and x=0x00~0x17 for main screen
 034A           ; ** 日 期:   2004年12月29日
 034A           ; ********************************************************************************************************/
 034A           ; void  MB90092_ClearXY (uint8 x,uint8 y)
 034A           ; {
 034A                   .dbline 421
 034A 87E1              ldi R24,23
 034C 8417              cp R24,R20
 034E 18F0              brlo L90
 0350 8BE0              ldi R24,11
 0352 8A15              cp R24,R10
 0354 08F4              brsh L88
 0356           L90:
 0356                   .dbline 421
 0356           ;       uint8 byte1,byte2;
 0356           ;       
 0356           ;       if (x>0x17||y>0x0B) return;           //invalid col number or row number
 0356 1AC0              xjmp L87
 0358           L88:
 0358                   .dbline 423
 0358           ; 
 0358           ;       byte1=((y>>2)&0x3)+0x80;
 0358 6A2D              mov R22,R10
 035A 6695              lsr R22
 035C 6695              lsr R22
 035E 6370              andi R22,3
 0360 6058              subi R22,128    ; addi 128
 0362                   .dbline 424
 0362           ;       byte2=((y<<5)&0x60)+x;
 0362 8A2D              mov R24,R10
 0364 880F              lsl R24
 0366 880F              lsl R24
 0368 880F              lsl R24
 036A 880F              lsl R24
 036C 880F              lsl R24
 036E 8076              andi R24,96
 0370 840F              add R24,R20
 0372 482F              mov R20,R24
 0374                   .dbline 427
 0374           ; 
 0374           ; 
 0374           ;       MB90092_WriteByte(byte1);             //command 0,设置写入地址,行和列
 0374 062F              mov R16,R22
 0376 CFDF              xcall _MB90092_WriteByte
 0378                   .dbline 428
 0378           ;       MB90092_WriteByte(byte2);
 0378 042F              mov R16,R20
 037A CDDF              xcall _MB90092_WriteByte
 037C                   .dbline 430
 037C           ; 

⌨️ 快捷键说明

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