?? mb90092.lis
字號:
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 + -