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

📄 tft.lst

📁 mb90092 osd demo test 字符叠加程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
  temp2                --> R10
  temp1                --> R12
  ff                   --> Y+18
  cc                   --> Y+16
  bc                   --> Y+14
  mul                  --> Y+12
  addr                 --> R20
  y                    --> R22
  x                    --> R10
    0291 940E0373  CALL	push_gset5
    0293 2F62      MOV	R22,R18
    0294 2EA0      MOV	R10,R16
    0295 854A      LDD	R20,Y+10
    0296 855B      LDD	R21,Y+11
(0489) }
(0490) 
(0491) /*********************************************************************************************************
(0492) ** 函数名称: MB90092_DisChar
(0493) ** 功能描述: 在屏幕坐标(x,y)处显示一个字符,该字符的点阵存储地址为addr,为一24x32的矩形区域
(0494) ** 参  数:   x,y为屏幕坐标,addr为字符点阵在外rom的存储地址,mul为字符尺寸,bc为字符背景颜色,
(0495)              cc为字符颜色,ff控制是否特显.
(0496) ** 日 期:   2004年12月29日
(0497) ********************************************************************************************************/
(0498) void  MB90092_DisChar (uint8 x,uint8 y,uint16 addr,uint8 mul,uint8 bc,uint8 cc,uint8 ff)
(0499) {
(0500) 	uint8 temp1,temp2,color,ma,mb,mc;
(0501) 	if (x>0x17||y>0x0B) return;           //invalid col number or row number
    0297 E187      LDI	R24,0x17
    0298 158A      CP	R24,R10
    0299 F018      BCS	0x029D
    029A E08B      LDI	R24,0xB
    029B 1786      CP	R24,R22
    029C F408      BCC	0x029E
    029D C068      RJMP	0x0306
(0502) 	
(0503) 	MB90092_ClearXY (x,y);
    029E 2F26      MOV	R18,R22
    029F 2D0A      MOV	R16,R10
    02A0 DF8A      RCALL	_MB90092_ClearXY
(0504) 	
(0505) 	temp1=((y>>2)&0x3)+0x80;
    02A1 2F86      MOV	R24,R22
    02A2 9586      LSR	R24
    02A3 9586      LSR	R24
    02A4 7083      ANDI	R24,3
    02A5 5880      SUBI	R24,0x80
    02A6 2EC8      MOV	R12,R24
(0506) 	temp2=((y<<5)&0x60)+x;
    02A7 2F86      MOV	R24,R22
    02A8 0F88      LSL	R24
    02A9 0F88      LSL	R24
    02AA 0F88      LSL	R24
    02AB 0F88      LSL	R24
    02AC 0F88      LSL	R24
    02AD 7680      ANDI	R24,0x60
    02AE 0D8A      ADD	R24,R10
    02AF 2EA8      MOV	R10,R24
(0507) 
(0508) 	MB90092_WriteByte(temp1);             //command 0,设置写入地址,行和列
    02B0 2D0C      MOV	R16,R12
    02B1 DF63      RCALL	_MB90092_WriteByte
(0509) 	MB90092_WriteByte(temp2);
    02B2 2D0A      MOV	R16,R10
    02B3 DF61      RCALL	_MB90092_WriteByte
(0510) 
(0511) 	MB90092_WriteByte(0xB0|mul);          //command 6,mul->字符尺寸控制(datasheel82),设置一整行
    02B4 850C      LDD	R16,Y+12
    02B5 6B00      ORI	R16,0xB0
    02B6 DF5E      RCALL	_MB90092_WriteByte
(0512) 	MB90092_WriteByte(0x20|y);
    02B7 2F06      MOV	R16,R22
    02B8 6200      ORI	R16,0x20
    02B9 DF5B      RCALL	_MB90092_WriteByte
(0513) 
(0514) 	if (synchronization==SYN_EXTERNAL){
    02BA 9180008A  LDS	R24,synchronization
    02BC 3084      CPI	R24,4
    02BD F421      BNE	0x02C2
(0515) 	  cc=7;
    02BE E087      LDI	R24,7
    02BF 8B88      STD	Y+16,R24
(0516) 	  bc=0;
    02C0 2400      CLR	R0
    02C1 860E      STD	Y+14,R0
(0517) 	}
(0518) 	color=((cc<<4)&0x70)|bc;
    02C2 8988      LDD	R24,Y+16
    02C3 708F      ANDI	R24,0xF
    02C4 9582      SWAP	R24
    02C5 7780      ANDI	R24,0x70
    02C6 2EA8      MOV	R10,R24
    02C7 840E      LDD	R0,Y+14
    02C8 28A0      OR	R10,R0
(0519) 	mc=((addr/4096)<<3)&0x08;
    02C9 E02C      LDI	R18,0xC
    02CA E030      LDI	R19,0
    02CB 018A      MOVW	R16,R20
    02CC 940E0392  CALL	lsr16
    02CE 2F60      MOV	R22,R16
    02CF 0F66      LSL	R22
    02D0 1F77      ROL	R23
    02D1 0F66      LSL	R22
    02D2 1F77      ROL	R23
    02D3 0F66      LSL	R22
    02D4 1F77      ROL	R23
    02D5 7068      ANDI	R22,0x8
    02D6 7070      ANDI	R23,0
(0520) 	mb=(((addr%4096)/2048)<<1)&0x02;
    02D7 E02B      LDI	R18,0xB
    02D8 E030      LDI	R19,0
    02D9 018A      MOVW	R16,R20
    02DA 701F      ANDI	R17,0xF
    02DB 940E0392  CALL	lsr16
    02DD 01C8      MOVW	R24,R16
    02DE 0F88      LSL	R24
    02DF 1F99      ROL	R25
    02E0 7082      ANDI	R24,2
    02E1 7090      ANDI	R25,0
    02E2 2EC8      MOV	R12,R24
(0521) 	ma=(((addr%2048)/1024)<<2)&0x04;
    02E3 E02A      LDI	R18,0xA
    02E4 E030      LDI	R19,0
    02E5 018A      MOVW	R16,R20
    02E6 7017      ANDI	R17,7
    02E7 940E0392  CALL	lsr16
    02E9 01C8      MOVW	R24,R16
    02EA 0F88      LSL	R24
    02EB 1F99      ROL	R25
    02EC 0F88      LSL	R24
    02ED 1F99      ROL	R25
    02EE 7084      ANDI	R24,4
    02EF 7090      ANDI	R25,0
    02F0 2EE8      MOV	R14,R24
(0522) 
(0523) 	MB90092_WriteByte(0x88|ff|ma|mb);           //ff控制是否特显  MA MB在此显示控制
    02F1 890A      LDD	R16,Y+18
    02F2 6808      ORI	R16,0x88
    02F3 2B08      OR	R16,R24
    02F4 290C      OR	R16,R12
    02F5 DF1F      RCALL	_MB90092_WriteByte
(0524) 	MB90092_WriteByte(color|mc);             //command1-1,设置字符颜色,背景颜色
    02F6 2D0A      MOV	R16,R10
    02F7 2B06      OR	R16,R22
    02F8 DF1C      RCALL	_MB90092_WriteByte
(0525) 	MB90092_WriteByte(0x90+(addr%1024)/128);     //command2-1,设置字符点阵在外rom的地址
    02F9 E027      LDI	R18,7
    02FA E030      LDI	R19,0
    02FB 018A      MOVW	R16,R20
    02FC 7013      ANDI	R17,3
    02FD 940E0392  CALL	lsr16
    02FF 5700      SUBI	R16,0x70
    0300 4F1F      SBCI	R17,0xFF
    0301 DF13      RCALL	_MB90092_WriteByte
(0526) 	MB90092_WriteByte(addr%128);
    0302 2F04      MOV	R16,R20
    0303 770F      ANDI	R16,0x7F
    0304 7010      ANDI	R17,0
    0305 DF0F      RCALL	_MB90092_WriteByte
    0306 940E0370  CALL	pop_gset5
    0308 9508      RET
_MainScreen_Init:
  i                    --> R20
  bc                   --> R20
    0309 940E037B  CALL	push_gset1
    030B 2F40      MOV	R20,R16
(0527) }
(0528) /*********************************************************************************************************
(0529) ** 函数名称: MainScreen_Init
(0530) ** 功能描述: MB90092主屏初始化
(0531) ** 日 期:   2004年12月29日
(0532) ********************************************************************************************************/
(0533) void  MainScreen_Init (uint8 bc)
(0534) {
(0535) 	uint8 i;
(0536) 	Lcd_Control_DDR|=BIT(Lcd_Cs);
    030C 9ABF      SBI	0x17,7
(0537) 	Lcd_Control_DDR|=BIT(Lcd_Sin);
    030D 9ABD      SBI	0x17,5
(0538) 	Lcd_Control_DDR|=BIT(Lcd_Clk);
    030E 9ABE      SBI	0x17,6
(0539) 	Lcd_Control_Port|=BIT(Lcd_Cs);
    030F 9AC7      SBI	0x18,7
(0540) 	Lcd_Control_Port|=BIT(Lcd_Sin);
    0310 9AC5      SBI	0x18,5
(0541) 	Lcd_Control_Port|=BIT(Lcd_Clk);
    0311 9AC6      SBI	0x18,6
(0542) 	Lcd_CLK_En;                                //先将CLK脚置高
    0312 9AC6      SBI	0x18,6
(0543) 	Delay_ms(10);
    0313 E00A      LDI	R16,0xA
    0314 E010      LDI	R17,0
    0315 DEDE      RCALL	_Delay_ms
(0544) 	Lcd_CS_Dis;
    0316 98C7      CBI	0x18,7
(0545) 	Delay_ms(10);                         //程序开始时,要输入CS四次去清除上电复位,然后所作的设置才是有效的。
    0317 E00A      LDI	R16,0xA
    0318 E010      LDI	R17,0
    0319 DEDA      RCALL	_Delay_ms
(0546) 	Lcd_CS_En;
    031A 9AC7      SBI	0x18,7
(0547) 	Delay_ms(10);
    031B E00A      LDI	R16,0xA
    031C E010      LDI	R17,0
    031D DED6      RCALL	_Delay_ms
(0548) 	Lcd_CS_Dis;
    031E 98C7      CBI	0x18,7
(0549) 	Delay_ms(10);
    031F E00A      LDI	R16,0xA
    0320 E010      LDI	R17,0
    0321 DED2      RCALL	_Delay_ms
(0550) 	Lcd_CS_En;
    0322 9AC7      SBI	0x18,7
(0551) 	Delay_ms(10);
    0323 E00A      LDI	R16,0xA
    0324 E010      LDI	R17,0
    0325 DECE      RCALL	_Delay_ms
(0552) 	Lcd_CS_Dis;
    0326 98C7      CBI	0x18,7
(0553) 	Delay_ms(10);
    0327 E00A      LDI	R16,0xA
    0328 E010      LDI	R17,0
    0329 DECA      RCALL	_Delay_ms
(0554) 	Lcd_CS_En;
    032A 9AC7      SBI	0x18,7
(0555) 	Delay_ms(10);
    032B E00A      LDI	R16,0xA
    032C E010      LDI	R17,0
    032D DEC6      RCALL	_Delay_ms
(0556) 	Lcd_CS_Dis;
    032E 98C7      CBI	0x18,7
(0557) 	Delay_ms(10);
    032F E00A      LDI	R16,0xA
    0330 E010      LDI	R17,0
    0331 DEC2      RCALL	_Delay_ms
(0558) 	Lcd_CS_En;
    0332 9AC7      SBI	0x18,7
(0559) 	Delay_ms(10);
    0333 E00A      LDI	R16,0xA
    0334 E010      LDI	R17,0
    0335 DEBE      RCALL	_Delay_ms
(0560) 
(0561) 	MB90092_WriteByte(0xA0);              //command 4,首先选择内同步
    0336 EA00      LDI	R16,0xA0
    0337 DEDD      RCALL	_MB90092_WriteByte
(0562) 	MB90092_WriteByte(0x00);
    0338 2700      CLR	R16
    0339 DEDB      RCALL	_MB90092_WriteByte
(0563)       	
(0564) 	MB90092_WriteByte(0xAD);              //command 5
    033A EA0D      LDI	R16,0xAD
    033B DED9      RCALL	_MB90092_WriteByte
(0565) 	MB90092_WriteByte(0x10);              //KID=0;APC与颜色有关;GYZ=0;W3--W0为行间距;10101 KID APC GYZ0 BH2 BH1 BH0 W3 W2 W1 W0
    033C E100      LDI	R16,0x10
    033D DED7      RCALL	_MB90092_WriteByte
(0566)               	
(0567) 	MB90092_WriteByte(0xBC);              //command 7
    033E EB0C      LDI	R16,0xBC
    033F DED5      RCALL	_MB90092_WriteByte
(0568) 	MB90092_WriteByte(0x2f);              //垂直开始位置设定
    0340 E20F      LDI	R16,0x2F
    0341 DED3      RCALL	_MB90092_WriteByte
(0569) 
(0570) 	MB90092_WriteByte(0xC0);              //command 8
    0342 EC00      LDI	R16,0xC0
    0343 DED1      RCALL	_MB90092_WriteByte
(0571) 	MB90092_WriteByte(0x10);              //水平开始位置设定
    0344 E100      LDI	R16,0x10
    0345 DECF      RCALL	_MB90092_WriteByte
(0572)         
(0573) 	MB90092_WriteByte(0xC8);              //command 9,GRM位设置普通模式或者扩展图形模式
    0346 EC08      LDI	R16,0xC8
    0347 DECD      RCALL	_MB90092_WriteByte
(0574) 	MB90092_WriteByte(0x20);
    0348 E200      LDI	R16,0x20
    0349 DECB      RCALL	_MB90092_WriteByte
(0575)               	
(0576) 	MB90092_WriteByte(0xD1);              //command 10,设置普通模式/扩展图形模式,闪烁,字符背景,字符单色/彩色,背景单色/彩色
    034A ED01      LDI	R16,0xD1
    034B DEC9      RCALL	_MB90092_WriteByte
(0577) 	MB90092_WriteByte(0x38|bc);
    034C 2F04      MOV	R16,R20
    034D 6308      ORI	R16,0x38
    034E DEC6      RCALL	_MB90092_WriteByte
(0578)        
(0579) 	MB90092_WriteByte(0xA2|synchronization);//command 4,内/外同步选择
    034F 9100008A  LDS	R16,synchronization
    0351 6A02      ORI	R16,0xA2
    0352 DEC2      RCALL	_MB90092_WriteByte
(0580) 	MB90092_WriteByte(0x2B);
    0353 E20B      LDI	R16,0x2B
    0354 DEC0      RCALL	_MB90092_WriteByte
(0581) 
(0582) 	for (i=0;i<=0x0B;i++)
    0355 2744      CLR	R20
    0356 C004      RJMP	0x035B
(0583) 	{
(0584) 	WDR(); //喂狗
    0357 95A8      WDR
(0585) 	  MB90092_DisColor (i);
    0358 2F04      MOV	R16,R20
    0359 DF19      RCALL	_MB90092_DisColor
    035A 9543      INC	R20
    035B E08B      LDI	R24,0xB
    035C 1784      CP	R24,R20
    035D F7C8      BCC	0x0357
(0586) 	  }
(0587) 	MB90092_ClearScreen ();
FILE: <library>
    035E DF07      RCALL	_MB90092_ClearScreen
    035F 940E037E  CALL	pop_gset1
    0361 9508      RET
push_arg4:
    0362 933A      ST	R19,-Y
    0363 932A      ST	R18,-Y
push_arg2:
    0364 931A      ST	R17,-Y
    0365 930A      ST	R16,-Y
    0366 9508      RET
pop_gset2:
    0367 E0E2      LDI	R30,2
    0368 940C037F  JMP	pop
pop_gset3:
    036A E0E4      LDI	R30,4
    036B 940C037F  JMP	pop
pop_gset4:
    036D E0E8      LDI	R30,0x8
    036E 940C037F  JMP	pop
pop_gset5:
    0370 27EE      CLR	R30
    0371 940C037F  JMP	pop
push_gset5:
    0373 92FA      ST	R15,-Y
    0374 92EA      ST	R14,-Y
push_gset4:
    0375 92DA      ST	R13,-Y
    0376 92CA      ST	R12,-Y
push_gset3:
    0377 92BA      ST	R11,-Y
    0378 92AA      ST	R10,-Y
push_gset2:
    0379 937A      ST	R23,-Y
    037A 936A      ST	R22,-Y
push_gset1:
    037B 935A      ST	R21,-Y
    037C 934A      ST	R20,-Y
    037D 9508      RET
pop_gset1:
    037E E0E1      LDI	R30,1
pop:
    037F 9149      LD	R20,Y+
    0380 9159      LD	R21,Y+
    0381 FDE0      SBRC	R30,0
    0382 9508      RET
    0383 9169      LD	R22,Y+
    0384 9179      LD	R23,Y+
    0385 FDE1      SBRC	R30,1
    0386 9508      RET
    0387 90A9      LD	R10,Y+
    0388 90B9      LD	R11,Y+
    0389 FDE2      SBRC	R30,2
    038A 9508      RET
    038B 90C9      LD	R12,Y+
    038C 90D9      LD	R13,Y+
    038D FDE3      SBRC	R30,3
    038E 9508      RET
    038F 90E9      LD	R14,Y+
    0390 90F9      LD	R15,Y+
    0391 9508      RET
lsr16:
    0392 2322      TST	R18
    0393 F021      BEQ	0x0398
    0394 9516      LSR	R17
    0395 9507      ROR	R16
    0396 952A      DEC	R18
    0397 CFFA      RJMP	lsr16
    0398 9508      RET

⌨️ 快捷键说明

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