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

📄 mb90092.s

📁 mb90092 osd demo test 字符叠加程序
💻 S
📖 第 1 页 / 共 3 页
字号:
; 	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
; }
; 
; /*********************************************************************************************************
; ** 函数名称: 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);
; 	  }
; }
; 
; /*********************************************************************************************************
; ** 函数名称: 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);
; 	  }
; }
; 
; /*********************************************************************************************************
; ** 函数名称: 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,设置写入地址,行和列
	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,设置字符颜色,背景颜色
	clr R16
	xcall _MB90092_WriteByte
	.dbline 487
; 	
; 	MB90092_WriteByte(0x90);              //command2-1,设置字符点阵在外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
; }
; 
; /*********************************************************************************************************
; ** 函数名称: MB90092_DisChar
; ** 功能描述: 在屏幕坐标(x,y)处显示一个字符,该字符的点阵存储地址为addr,为一24x32的矩形区域
; ** 参  数:   x,y为屏幕坐标,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,设置写入地址,行和列
	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),设置一整行
	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,设置字符颜色,背景颜色
	mov R16,R10
	or R16,R22
	xcall _MB90092_WriteByte
	.dbline 525
; 	MB90092_WriteByte(0x90+(addr%1024)/128);     //command2-1,设置字符点阵在外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
; }
; /*********************************************************************************************************
; ** 函数名称: 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四次去清除上电复位,然后所作的设置才是有效的。
	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,首先选择内同步
	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与颜色有关;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);              //垂直开始位置设定
	ldi R16,47
	xcall _MB90092_WriteByte
	.dbline 570
; 
; 	MB90092_WriteByte(0xC0);              //command 8
	ldi R16,192
	xcall _MB90092_WriteByte
	.dbline 571
; 	MB90092_WriteByte(0x10);              //水平开始位置设定
	ldi R16,16
	xcall _MB90092_WriteByte
	.dbline 573
;         
; 	MB90092_WriteByte(0xC8);              //command 9,GRM位设置普通模式或者扩展图形模式
	ldi R16,200
	xcall _MB90092_WriteByte
	.dbline 574
; 	MB90092_WriteByte(0x20);
	ldi R16,32
	xcall _MB90092_WriteByte
	.dbline 576
;               	
; 	MB90092_WriteByte(0xD1);              //command 10,设置普通模式/扩展图形模式,闪烁,字符背景,字符单色/彩色,背景单色/彩色
	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,内/外同步选择
	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

⌨️ 快捷键说明

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