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

📄 mb90092.lis

📁 mb90092 osd demo test 字符叠加程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 037C           ;       MB90092_WriteByte(0x88);              //command1-1,定义字符颜色,背景颜色
 037C 08E8              ldi R16,136
 037E CBDF              xcall _MB90092_WriteByte
 0380                   .dbline 431
 0380           ;       MB90092_WriteByte(0x00);
 0380 0027              clr R16
 0382 C9DF              xcall _MB90092_WriteByte
 0384                   .dbline 433
 0384           ;       
 0384           ;       MB90092_WriteByte(0x90+0/128);       //command2-1,写入一个空格字符,地址62为空格符点阵
 0384 00E9              ldi R16,144
 0386 C7DF              xcall _MB90092_WriteByte
 0388                   .dbline 434
 0388           ;       MB90092_WriteByte(0%128);
 0388 0027              clr R16
 038A C5DF              xcall _MB90092_WriteByte
 038C                   .dbline -2
 038C           L87:
 038C 0E940000          xcall pop_gset3
 0390                   .dbline 0 ; func end
 0390 0895              ret
 0392                   .dbsym r byte2 20 c
 0392                   .dbsym r byte1 22 c
 0392                   .dbsym r y 10 c
 0392                   .dbsym r x 20 c
 0392                   .dbend
 0392                   .dbfunc e MB90092_ClearRow _MB90092_ClearRow fV
 0392           ;              x -> R20
 0392           ;              y -> R22
                        .even
 0392           _MB90092_ClearRow::
 0392 0E940000          xcall push_gset2
 0396 602F              mov R22,R16
 0398                   .dbline -1
 0398                   .dbline 443
 0398           ; }
 0398           ; 
 0398           ; /*********************************************************************************************************
 0398           ; ** 函数名称: MB90092_ClearRow
 0398           ; ** 功能描述: 清掉屏幕上面的第y行字符,y=0x00~0x0B for main screen
 0398           ; ** 日 期:   2004年12月29日
 0398           ; ********************************************************************************************************/
 0398           ; void  MB90092_ClearRow (uint8 y)
 0398           ; {
 0398                   .dbline 446
 0398           ;       uint8 x;
 0398           ;       
 0398           ;       if (y>0x0B) return;                   //invlid row number
 0398 8BE0              ldi R24,11
 039A 8617              cp R24,R22
 039C 08F4              brsh L92
 039E                   .dbline 446
 039E 09C0              xjmp L91
 03A0           L92:
 03A0                   .dbline 448
 03A0           ;       
 03A0           ;       for (x=0;x<0x18;x++)
 03A0 4427              clr R20
 03A2 05C0              xjmp L97
 03A4           L94:
 03A4                   .dbline 449
 03A4                   .dbline 450
 03A4 A895              wdr
 03A6                   .dbline 451
 03A6 262F              mov R18,R22
 03A8 042F              mov R16,R20
 03AA CBDF              xcall _MB90092_ClearXY
 03AC                   .dbline 452
 03AC           L95:
 03AC                   .dbline 448
 03AC 4395              inc R20
 03AE           L97:
 03AE                   .dbline 448
 03AE 4831              cpi R20,24
 03B0 C8F3              brlo L94
 03B2                   .dbline -2
 03B2           L91:
 03B2 0E940000          xcall pop_gset2
 03B6                   .dbline 0 ; func end
 03B6 0895              ret
 03B8                   .dbsym r x 20 c
 03B8                   .dbsym r y 22 c
 03B8                   .dbend
 03B8                   .dbfunc e MB90092_ClearScreen _MB90092_ClearScreen fV
 03B8           ;              i -> R20
                        .even
 03B8           _MB90092_ClearScreen::
 03B8 0E940000          xcall push_gset1
 03BC                   .dbline -1
 03BC                   .dbline 461
 03BC           ;       {
 03BC           ;         WDR(); //喂狗
 03BC           ;         MB90092_ClearXY (x,y);
 03BC           ;         }
 03BC           ; }
 03BC           ; 
 03BC           ; /*********************************************************************************************************
 03BC           ; ** 函数名称: MB90092_ClearScreen
 03BC           ; ** 功能描述: 清屏
 03BC           ; ** 日 期:   2004年12月29日
 03BC           ; ********************************************************************************************************/
 03BC           ; void  MB90092_ClearScreen (void)
 03BC           ; {
 03BC                   .dbline 463
 03BC           ;       uint8 i;
 03BC           ;       for (i=0;i<0x0C;i++)
 03BC 4427              clr R20
 03BE 04C0              xjmp L102
 03C0           L99:
 03C0                   .dbline 464
 03C0                   .dbline 464
 03C0 A895              wdr
 03C2                   .dbline 465
 03C2 042F              mov R16,R20
 03C4 E6DF              xcall _MB90092_ClearRow
 03C6                   .dbline 466
 03C6           L100:
 03C6                   .dbline 463
 03C6 4395              inc R20
 03C8           L102:
 03C8                   .dbline 463
 03C8 4C30              cpi R20,12
 03CA D0F3              brlo L99
 03CC                   .dbline -2
 03CC           L98:
 03CC 0E940000          xcall pop_gset1
 03D0                   .dbline 0 ; func end
 03D0 0895              ret
 03D2                   .dbsym r i 20 c
 03D2                   .dbend
 03D2                   .dbfunc e MB90092_DisColor _MB90092_DisColor fV
 03D2           ;          temp2 -> R20
 03D2           ;          temp1 -> R22
 03D2           ;              y -> R20
                        .even
 03D2           _MB90092_DisColor::
 03D2 0E940000          xcall push_gset2
 03D6 402F              mov R20,R16
 03D8                   .dbline -1
 03D8                   .dbline 475
 03D8           ;       {WDR(); //喂狗
 03D8           ;         MB90092_ClearRow (i);
 03D8           ;         }
 03D8           ; }
 03D8           ; 
 03D8           ; /*********************************************************************************************************
 03D8           ; ** 函数名称: MB90092_DisColor
 03D8           ; ** 功能描述: MB90092颜色初始化
 03D8           ; ** 日 期:   2004年12月29日
 03D8           ; ********************************************************************************************************/
 03D8           ; void  MB90092_DisColor (uint8 y)
 03D8           ; {
 03D8                   .dbline 478
 03D8           ;       uint8 temp1,temp2;
 03D8           ;       
 03D8           ;       temp1=((y>>2)&0x3)+0x84;
 03D8 642F              mov R22,R20
 03DA 6695              lsr R22
 03DC 6695              lsr R22
 03DE 6370              andi R22,3
 03E0 6C57              subi R22,124    ; addi 132
 03E2                   .dbline 479
 03E2           ;       temp2=((y<<5)&0x60)+1;
 03E2 440F              lsl R20
 03E4 440F              lsl R20
 03E6 440F              lsl R20
 03E8 440F              lsl R20
 03EA 440F              lsl R20
 03EC 4076              andi R20,96
 03EE 4F5F              subi R20,255    ; addi 1
 03F0                   .dbline 481
 03F0           ; 
 03F0           ;       MB90092_WriteByte(temp1);             //command 0,设置写入地址,行和列
 03F0 062F              mov R16,R22
 03F2 91DF              xcall _MB90092_WriteByte
 03F4                   .dbline 482
 03F4           ;       MB90092_WriteByte(temp2);
 03F4 042F              mov R16,R20
 03F6 8FDF              xcall _MB90092_WriteByte
 03F8                   .dbline 484
 03F8           ; 
 03F8           ;       MB90092_WriteByte(0x88);              //ff控制是否特显
 03F8 08E8              ldi R16,136
 03FA 8DDF              xcall _MB90092_WriteByte
 03FC                   .dbline 485
 03FC           ;       MB90092_WriteByte(0x00);              //command1-1,设置字符颜色,背景颜色
 03FC 0027              clr R16
 03FE 8BDF              xcall _MB90092_WriteByte
 0400                   .dbline 487
 0400           ;       
 0400           ;       MB90092_WriteByte(0x90);              //command2-1,设置字符点阵在外rom的地址
 0400 00E9              ldi R16,144
 0402 89DF              xcall _MB90092_WriteByte
 0404                   .dbline 488
 0404           ;       MB90092_WriteByte(0x00);
 0404 0027              clr R16
 0406 87DF              xcall _MB90092_WriteByte
 0408                   .dbline -2
 0408           L103:
 0408 0E940000          xcall pop_gset2
 040C                   .dbline 0 ; func end
 040C 0895              ret
 040E                   .dbsym r temp2 20 c
 040E                   .dbsym r temp1 22 c
 040E                   .dbsym r y 20 c
 040E                   .dbend
 040E                   .dbfunc e MB90092_DisChar _MB90092_DisChar fV
 040E           ;             mc -> R22
 040E           ;             mb -> R12
 040E           ;             ma -> R14
 040E           ;          color -> R10
 040E           ;          temp2 -> R10
 040E           ;          temp1 -> R12
 040E           ;             ff -> y+18
 040E           ;             cc -> y+16
 040E           ;             bc -> y+14
 040E           ;            mul -> y+12
 040E           ;           addr -> R20,R21
 040E           ;              y -> R22
 040E           ;              x -> R10
                        .even
 040E           _MB90092_DisChar::
 040E 0E940000          xcall push_gset5
 0412 622F              mov R22,R18
 0414 A02E              mov R10,R16
 0416 4A85              ldd R20,y+10
 0418 5B85              ldd R21,y+11
 041A                   .dbline -1
 041A                   .dbline 499
 041A           ; }
 041A           ; 
 041A           ; /*********************************************************************************************************
 041A           ; ** 函数名称: MB90092_DisChar
 041A           ; ** 功能描述: 在屏幕坐标(x,y)处显示一个字符,该字符的点阵存储地址为addr,为一24x32的矩形区域
 041A           ; ** 参  数:   x,y为屏幕坐标,addr为字符点阵在外rom的存储地址,mul为字符尺寸,bc为字符背景颜色,
 041A           ;              cc为字符颜色,ff控制是否特显.
 041A           ; ** 日 期:   2004年12月29日
 041A           ; ********************************************************************************************************/
 041A           ; void  MB90092_DisChar (uint8 x,uint8 y,uint16 addr,uint8 mul,uint8 bc,uint8 cc,uint8 ff)
 041A           ; {
 041A                   .dbline 501
 041A 87E1              ldi R24,23
 041C 8A15              cp R24,R10
 041E 18F0              brlo L107
 0420 8BE0              ldi R24,11
 0422 8617              cp R24,R22
 0424 08F4              brsh L105
 0426           L107:
 0426                   .dbline 501
 0426           ;       uint8 temp1,temp2,color,ma,mb,mc;
 0426           ;       if (x>0x17||y>0x0B) return;           //invalid col number or row number
 0426 68C0              xjmp L104
 0428           L105:
 0428                   .dbline 503
 0428           ;       
 0428           ;       MB90092_ClearXY (x,y);
 0428 262F              mov R18,R22
 042A 0A2D              mov R16,R10
 042C 8ADF              xcall _MB90092_ClearXY
 042E                   .dbline 505
 042E           ;       
 042E           ;       temp1=((y>>2)&0x3)+0x80;
 042E 862F              mov R24,R22
 0430 8695              lsr R24
 0432 8695              lsr R24
 0434 8370              andi R24,3
 0436 8058              subi R24,128    ; addi 128
 0438 C82E              mov R12,R24
 043A                   .dbline 506
 043A           ;       temp2=((y<<5)&0x60)+x;
 043A 862F              mov R24,R22
 043C 880F              lsl R24
 043E 880F              lsl R24
 0440 880F              lsl R24
 0442 880F              lsl R24
 0444 880F              lsl R24
 0446 8076              andi R24,96
 0448 8A0D              add R24,R10
 044A A82E              mov R10,R24
 044C                   .dbline 508
 044C           ; 
 044C           ;       MB90092_WriteByte(temp1);             //command 0,设置写入地址,行和列
 044C 0C2D              mov R16,R12
 044E 63DF              xcall _MB90092_WriteByte
 0450                   .dbline 509
 0450           ;       MB90092_WriteByte(temp2);
 0450 0A2D              mov R16,R10
 0452 61DF              xcall _MB90092_WriteByte
 0454                   .dbline 511
 0454           ; 
 0454           ;       MB90092_WriteByte(0xB0|mul);          //command 6,mul->字符尺寸控制(datasheel82),设置一整行
 0454 0C85              ldd R16,y+12
 0456 006B              ori R16,176
 0458 5EDF              xcall _MB90092_WriteByte
 045A                   .dbline 512
 045A           ;       MB90092_WriteByte(0x20|y);
 045A 062F              mov R16,R22
 045C 0062              ori R16,32
 045E 5BDF              xcall _MB90092_WriteByte
 0460                   .dbline 514
 0460           ; 
 0460           ;       if (synchronization==SYN_EXTERNAL){
 0460 80910000          lds R24,_synchronization
 0464 8430              cpi R24,4
 0466 21F4              brne L108
 0468                   .dbline 514
 0468                   .dbline 515
 0468           ;         cc=7;
 0468 87E0              ldi R24,7
 046A 888B              std y+16,R24
 046C                   .dbline 516
 046C           ;         bc=0;
 046C 0024              clr R0
 046E 0E86              std y+14,R0
 0470                   .dbline 517
 0470           ;       }
 0470           L108:

⌨️ 快捷键说明

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