?? mb90092.s
字號:
; MB90092_WriteByte(0x88); //command1-1,定義字符顏色,背景顏色
ldi R16,136
xcall _MB90092_WriteByte
.dbline 431
; MB90092_WriteByte(0x00);
clr R16
xcall _MB90092_WriteByte
.dbline 433
;
; MB90092_WriteByte(0x90+0/128); //command2-1,寫入一個空格字符,地址62為空格符點陣
ldi R16,144
xcall _MB90092_WriteByte
.dbline 434
; MB90092_WriteByte(0%128);
clr R16
xcall _MB90092_WriteByte
.dbline -2
L87:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r byte2 20 c
.dbsym r byte1 22 c
.dbsym r y 10 c
.dbsym r x 20 c
.dbend
.dbfunc e MB90092_ClearRow _MB90092_ClearRow fV
; x -> R20
; y -> R22
.even
_MB90092_ClearRow::
xcall push_gset2
mov R22,R16
.dbline -1
.dbline 443
; }
;
; /*********************************************************************************************************
; ** 函數(shù)名稱: MB90092_ClearRow
; ** 功能描述: 清掉屏幕上面的第y行字符,y=0x00~0x0B for main screen
; ** 日 期: 2004年12月29日
; ********************************************************************************************************/
; void MB90092_ClearRow (uint8 y)
; {
.dbline 446
; uint8 x;
;
; if (y>0x0B) return; //invlid row number
ldi R24,11
cp R24,R22
brsh L92
.dbline 446
xjmp L91
L92:
.dbline 448
;
; for (x=0;x<0x18;x++)
clr R20
xjmp L97
L94:
.dbline 449
.dbline 450
wdr
.dbline 451
mov R18,R22
mov R16,R20
xcall _MB90092_ClearXY
.dbline 452
L95:
.dbline 448
inc R20
L97:
.dbline 448
cpi R20,24
brlo L94
.dbline -2
L91:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r x 20 c
.dbsym r y 22 c
.dbend
.dbfunc e MB90092_ClearScreen _MB90092_ClearScreen fV
; i -> R20
.even
_MB90092_ClearScreen::
xcall push_gset1
.dbline -1
.dbline 461
; {
; WDR(); //喂狗
; MB90092_ClearXY (x,y);
; }
; }
;
; /*********************************************************************************************************
; ** 函數(shù)名稱: MB90092_ClearScreen
; ** 功能描述: 清屏
; ** 日 期: 2004年12月29日
; ********************************************************************************************************/
; void MB90092_ClearScreen (void)
; {
.dbline 463
; uint8 i;
; for (i=0;i<0x0C;i++)
clr R20
xjmp L102
L99:
.dbline 464
.dbline 464
wdr
.dbline 465
mov R16,R20
xcall _MB90092_ClearRow
.dbline 466
L100:
.dbline 463
inc R20
L102:
.dbline 463
cpi R20,12
brlo L99
.dbline -2
L98:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
.dbfunc e MB90092_DisColor _MB90092_DisColor fV
; temp2 -> R20
; temp1 -> R22
; y -> R20
.even
_MB90092_DisColor::
xcall push_gset2
mov R20,R16
.dbline -1
.dbline 475
; {WDR(); //喂狗
; MB90092_ClearRow (i);
; }
; }
;
; /*********************************************************************************************************
; ** 函數(shù)名稱: MB90092_DisColor
; ** 功能描述: MB90092顏色初始化
; ** 日 期: 2004年12月29日
; ********************************************************************************************************/
; void MB90092_DisColor (uint8 y)
; {
.dbline 478
; uint8 temp1,temp2;
;
; temp1=((y>>2)&0x3)+0x84;
mov R22,R20
lsr R22
lsr R22
andi R22,3
subi R22,124 ; addi 132
.dbline 479
; temp2=((y<<5)&0x60)+1;
lsl R20
lsl R20
lsl R20
lsl R20
lsl R20
andi R20,96
subi R20,255 ; addi 1
.dbline 481
;
; MB90092_WriteByte(temp1); //command 0,設(shè)置寫入地址,行和列
mov R16,R22
xcall _MB90092_WriteByte
.dbline 482
; MB90092_WriteByte(temp2);
mov R16,R20
xcall _MB90092_WriteByte
.dbline 484
;
; MB90092_WriteByte(0x88); //ff控制是否特顯
ldi R16,136
xcall _MB90092_WriteByte
.dbline 485
; MB90092_WriteByte(0x00); //command1-1,設(shè)置字符顏色,背景顏色
clr R16
xcall _MB90092_WriteByte
.dbline 487
;
; MB90092_WriteByte(0x90); //command2-1,設(shè)置字符點陣在外rom的地址
ldi R16,144
xcall _MB90092_WriteByte
.dbline 488
; MB90092_WriteByte(0x00);
clr R16
xcall _MB90092_WriteByte
.dbline -2
L103:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r temp2 20 c
.dbsym r temp1 22 c
.dbsym r y 20 c
.dbend
.dbfunc e MB90092_DisChar _MB90092_DisChar fV
; mc -> R22
; mb -> R12
; ma -> R14
; color -> R10
; temp2 -> R10
; temp1 -> R12
; ff -> y+18
; cc -> y+16
; bc -> y+14
; mul -> y+12
; addr -> R20,R21
; y -> R22
; x -> R10
.even
_MB90092_DisChar::
xcall push_gset5
mov R22,R18
mov R10,R16
ldd R20,y+10
ldd R21,y+11
.dbline -1
.dbline 499
; }
;
; /*********************************************************************************************************
; ** 函數(shù)名稱: MB90092_DisChar
; ** 功能描述: 在屏幕坐標(biāo)(x,y)處顯示一個字符,該字符的點陣存儲地址為addr,為一24x32的矩形區(qū)域
; ** 參 數(shù): x,y為屏幕坐標(biāo),addr為字符點陣在外rom的存儲地址,mul為字符尺寸,bc為字符背景顏色,
; cc為字符顏色,ff控制是否特顯.
; ** 日 期: 2004年12月29日
; ********************************************************************************************************/
; void MB90092_DisChar (uint8 x,uint8 y,uint16 addr,uint8 mul,uint8 bc,uint8 cc,uint8 ff)
; {
.dbline 501
ldi R24,23
cp R24,R10
brlo L107
ldi R24,11
cp R24,R22
brsh L105
L107:
.dbline 501
; uint8 temp1,temp2,color,ma,mb,mc;
; if (x>0x17||y>0x0B) return; //invalid col number or row number
xjmp L104
L105:
.dbline 503
;
; MB90092_ClearXY (x,y);
mov R18,R22
mov R16,R10
xcall _MB90092_ClearXY
.dbline 505
;
; temp1=((y>>2)&0x3)+0x80;
mov R24,R22
lsr R24
lsr R24
andi R24,3
subi R24,128 ; addi 128
mov R12,R24
.dbline 506
; temp2=((y<<5)&0x60)+x;
mov R24,R22
lsl R24
lsl R24
lsl R24
lsl R24
lsl R24
andi R24,96
add R24,R10
mov R10,R24
.dbline 508
;
; MB90092_WriteByte(temp1); //command 0,設(shè)置寫入地址,行和列
mov R16,R12
xcall _MB90092_WriteByte
.dbline 509
; MB90092_WriteByte(temp2);
mov R16,R10
xcall _MB90092_WriteByte
.dbline 511
;
; MB90092_WriteByte(0xB0|mul); //command 6,mul->字符尺寸控制(datasheel82),設(shè)置一整行
ldd R16,y+12
ori R16,176
xcall _MB90092_WriteByte
.dbline 512
; MB90092_WriteByte(0x20|y);
mov R16,R22
ori R16,32
xcall _MB90092_WriteByte
.dbline 514
;
; if (synchronization==SYN_EXTERNAL){
lds R24,_synchronization
cpi R24,4
brne L108
.dbline 514
.dbline 515
; cc=7;
ldi R24,7
std y+16,R24
.dbline 516
; bc=0;
clr R0
std y+14,R0
.dbline 517
; }
L108:
.dbline 518
; color=((cc<<4)&0x70)|bc;
ldd R24,y+16
andi R24,#0x0F
swap R24
andi R24,112
mov R10,R24
ldd R0,y+14
or R10,R0
.dbline 519
; mc=((addr/4096)<<3)&0x08;
ldi R18,12
ldi R19,0
movw R16,R20
xcall lsr16
mov R22,R16
lsl R22
rol R23
lsl R22
rol R23
lsl R22
rol R23
andi R22,8
andi R23,0
.dbline 520
; mb=(((addr%4096)/2048)<<1)&0x02;
ldi R18,11
ldi R19,0
movw R16,R20
andi R17,15
xcall lsr16
movw R24,R16
lsl R24
rol R25
andi R24,2
andi R25,0
mov R12,R24
.dbline 521
; ma=(((addr%2048)/1024)<<2)&0x04;
ldi R18,10
ldi R19,0
movw R16,R20
andi R17,7
xcall lsr16
movw R24,R16
lsl R24
rol R25
lsl R24
rol R25
andi R24,4
andi R25,0
mov R14,R24
.dbline 523
;
; MB90092_WriteByte(0x88|ff|ma|mb); //ff控制是否特顯 MA MB在此顯示控制
ldd R16,y+18
ori R16,136
or R16,R24
or R16,R12
xcall _MB90092_WriteByte
.dbline 524
; MB90092_WriteByte(color|mc); //command1-1,設(shè)置字符顏色,背景顏色
mov R16,R10
or R16,R22
xcall _MB90092_WriteByte
.dbline 525
; MB90092_WriteByte(0x90+(addr%1024)/128); //command2-1,設(shè)置字符點陣在外rom的地址
ldi R18,7
ldi R19,0
movw R16,R20
andi R17,3
xcall lsr16
subi R16,112 ; offset = 144
sbci R17,255
xcall _MB90092_WriteByte
.dbline 526
; MB90092_WriteByte(addr%128);
mov R16,R20
andi R16,127
andi R17,0
xcall _MB90092_WriteByte
.dbline -2
L104:
xcall pop_gset5
.dbline 0 ; func end
ret
.dbsym r mc 22 c
.dbsym r mb 12 c
.dbsym r ma 14 c
.dbsym r color 10 c
.dbsym r temp2 10 c
.dbsym r temp1 12 c
.dbsym l ff 18 c
.dbsym l cc 16 c
.dbsym l bc 14 c
.dbsym l mul 12 c
.dbsym r addr 20 i
.dbsym r y 22 c
.dbsym r x 10 c
.dbend
.dbfunc e MainScreen_Init _MainScreen_Init fV
; i -> R20
; bc -> R20
.even
_MainScreen_Init::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 534
; }
; /*********************************************************************************************************
; ** 函數(shù)名稱: MainScreen_Init
; ** 功能描述: MB90092主屏初始化
; ** 日 期: 2004年12月29日
; ********************************************************************************************************/
; void MainScreen_Init (uint8 bc)
; {
.dbline 536
; uint8 i;
; Lcd_Control_DDR|=BIT(Lcd_Cs);
sbi 0x17,7
.dbline 537
; Lcd_Control_DDR|=BIT(Lcd_Sin);
sbi 0x17,5
.dbline 538
; Lcd_Control_DDR|=BIT(Lcd_Clk);
sbi 0x17,6
.dbline 539
; Lcd_Control_Port|=BIT(Lcd_Cs);
sbi 0x18,7
.dbline 540
; Lcd_Control_Port|=BIT(Lcd_Sin);
sbi 0x18,5
.dbline 541
; Lcd_Control_Port|=BIT(Lcd_Clk);
sbi 0x18,6
.dbline 542
; Lcd_CLK_En; //先將CLK腳置高
sbi 0x18,6
.dbline 543
; Delay_ms(10);
ldi R16,10
ldi R17,0
xcall _Delay_ms
.dbline 544
; Lcd_CS_Dis;
cbi 0x18,7
.dbline 545
; Delay_ms(10); //程序開始時,要輸入CS四次去清除上電復(fù)位,然后所作的設(shè)置才是有效的。
ldi R16,10
ldi R17,0
xcall _Delay_ms
.dbline 546
; Lcd_CS_En;
sbi 0x18,7
.dbline 547
; Delay_ms(10);
ldi R16,10
ldi R17,0
xcall _Delay_ms
.dbline 548
; Lcd_CS_Dis;
cbi 0x18,7
.dbline 549
; Delay_ms(10);
ldi R16,10
ldi R17,0
xcall _Delay_ms
.dbline 550
; Lcd_CS_En;
sbi 0x18,7
.dbline 551
; Delay_ms(10);
ldi R16,10
ldi R17,0
xcall _Delay_ms
.dbline 552
; Lcd_CS_Dis;
cbi 0x18,7
.dbline 553
; Delay_ms(10);
ldi R16,10
ldi R17,0
xcall _Delay_ms
.dbline 554
; Lcd_CS_En;
sbi 0x18,7
.dbline 555
; Delay_ms(10);
ldi R16,10
ldi R17,0
xcall _Delay_ms
.dbline 556
; Lcd_CS_Dis;
cbi 0x18,7
.dbline 557
; Delay_ms(10);
ldi R16,10
ldi R17,0
xcall _Delay_ms
.dbline 558
; Lcd_CS_En;
sbi 0x18,7
.dbline 559
; Delay_ms(10);
ldi R16,10
ldi R17,0
xcall _Delay_ms
.dbline 561
;
; MB90092_WriteByte(0xA0); //command 4,首先選擇內(nèi)同步
ldi R16,160
xcall _MB90092_WriteByte
.dbline 562
; MB90092_WriteByte(0x00);
clr R16
xcall _MB90092_WriteByte
.dbline 564
;
; MB90092_WriteByte(0xAD); //command 5
ldi R16,173
xcall _MB90092_WriteByte
.dbline 565
; MB90092_WriteByte(0x10); //KID=0;APC與顏色有關(guān);GYZ=0;W3--W0為行間距;10101 KID APC GYZ0 BH2 BH1 BH0 W3 W2 W1 W0
ldi R16,16
xcall _MB90092_WriteByte
.dbline 567
;
; MB90092_WriteByte(0xBC); //command 7
ldi R16,188
xcall _MB90092_WriteByte
.dbline 568
; MB90092_WriteByte(0x2f); //垂直開始位置設(shè)定
ldi R16,47
xcall _MB90092_WriteByte
.dbline 570
;
; MB90092_WriteByte(0xC0); //command 8
ldi R16,192
xcall _MB90092_WriteByte
.dbline 571
; MB90092_WriteByte(0x10); //水平開始位置設(shè)定
ldi R16,16
xcall _MB90092_WriteByte
.dbline 573
;
; MB90092_WriteByte(0xC8); //command 9,GRM位設(shè)置普通模式或者擴(kuò)展圖形模式
ldi R16,200
xcall _MB90092_WriteByte
.dbline 574
; MB90092_WriteByte(0x20);
ldi R16,32
xcall _MB90092_WriteByte
.dbline 576
;
; MB90092_WriteByte(0xD1); //command 10,設(shè)置普通模式/擴(kuò)展圖形模式,閃爍,字符背景,字符單色/彩色,背景單色/彩色
ldi R16,209
xcall _MB90092_WriteByte
.dbline 577
; MB90092_WriteByte(0x38|bc);
mov R16,R20
ori R16,56
xcall _MB90092_WriteByte
.dbline 579
;
; MB90092_WriteByte(0xA2|synchronization);//command 4,內(nèi)/外同步選擇
lds R16,_synchronization
ori R16,162
xcall _MB90092_WriteByte
.dbline 580
; MB90092_WriteByte(0x2B);
ldi R16,43
xcall _MB90092_WriteByte
.dbline 582
;
; for (i=0;i<=0x0B;i++)
clr R20
xjmp L114
L111:
.dbline 583
.dbline 584
wdr
.dbline 585
mov R16,R20
xcall _MB90092_DisColor
.dbline 586
L112:
.dbline 582
inc R20
L114:
.dbline 582
ldi R24,11
cp R24,R20
brsh L111
.dbline 587
; {
; WDR(); //喂狗
; MB90092_DisColor (i);
; }
; MB90092_ClearScreen ();
xcall _MB90092_ClearScreen
.dbline -2
L110:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r bc 20 c
.dbend
.area bss(ram, con, rel)
.dbfile E:\公司文件\OSDDEM~1\MB90092\MB90092.C
_Lcd_Show_Buf::
.blkb 276
.dbsym e Lcd_Show_Buf _Lcd_Show_Buf A[276:6:23]i
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -