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

📄 tft.lst

📁 mb90092 osd demo test 字符叠加程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
(0344) ** 日 期:   2005年11月12日
(0345) ********************************************************************************************************/
(0346) 
(0347) uint16 CharToAddr(uint8 *CChar){
(0348) uint8 tmp1,tmp0;
(0349) uint16 tmp;
(0350) WDR(); //喂狗
    01B4 95A8      WDR
(0351)  if (*CChar >= 0xb0) {
    01B5 01F8      MOVW	R30,R16
    01B6 8180      LDD	R24,Z+0
    01B7 3B80      CPI	R24,0xB0
    01B8 F048      BCS	0x01C2
(0352)      tmp1=*CChar-0xa1-6;
    01B9 8160      LDD	R22,Z+0
    01BA 5A61      SUBI	R22,0xA1
    01BB 5066      SUBI	R22,6
(0353) 	 CChar++;
    01BC 5F0F      SUBI	R16,0xFF
    01BD 4F1F      SBCI	R17,0xFF
(0354)      tmp0=*CChar-0xa1;
    01BE 01F8      MOVW	R30,R16
    01BF 8140      LDD	R20,Z+0
    01C0 5A41      SUBI	R20,0xA1
(0355)      }
    01C1 C028      RJMP	0x01EA
(0356)  else 
(0357)       if(*CChar>=0xa1 && *CChar<0xaa)
    01C2 01F8      MOVW	R30,R16
    01C3 8020      LDD	R2,Z+0
    01C4 2433      CLR	R3
    01C5 2D82      MOV	R24,R2
    01C6 3A81      CPI	R24,0xA1
    01C7 F050      BCS	0x01D2
    01C8 3A8A      CPI	R24,0xAA
    01C9 F440      BCC	0x01D2
(0358) 	    {
(0359)      	tmp1=*CChar-0xa1;
    01CA 8160      LDD	R22,Z+0
    01CB 5A61      SUBI	R22,0xA1
(0360) 	 	CChar++;
    01CC 5F0F      SUBI	R16,0xFF
    01CD 4F1F      SBCI	R17,0xFF
(0361)      	tmp0=*CChar-0xa1;
    01CE 01F8      MOVW	R30,R16
    01CF 8140      LDD	R20,Z+0
    01D0 5A41      SUBI	R20,0xA1
(0362) 		}
    01D1 C018      RJMP	0x01EA
(0363) 	  else  
(0364) 	      if(*CChar <127 && *CChar >0x20) {
    01D2 01F8      MOVW	R30,R16
    01D3 8020      LDD	R2,Z+0
    01D4 2433      CLR	R3
    01D5 2D82      MOV	R24,R2
    01D6 378F      CPI	R24,0x7F
    01D7 F480      BCC	0x01E8
    01D8 E280      LDI	R24,0x20
    01D9 1582      CP	R24,R2
    01DA F468      BCC	0x01E8
(0365)               tmp=(*CChar-0x20)+0xa3a0;
    01DB 8180      LDD	R24,Z+0
    01DC 2799      CLR	R25
    01DD 9780      SBIW	R24,0x20
    01DE 5680      SUBI	R24,0x60
    01DF 459C      SBCI	R25,0x5C
    01E0 015C      MOVW	R10,R24
(0366) 	 		  tmp1=(uint8)(tmp>>8)-0xa1;
    01E1 01BC      MOVW	R22,R24
    01E2 2F67      MOV	R22,R23
    01E3 2777      CLR	R23
    01E4 5A61      SUBI	R22,0xA1
(0367) 	 		  tmp0=(uint8)tmp-0xa1;
    01E5 2F48      MOV	R20,R24
    01E6 5A41      SUBI	R20,0xA1
(0368) 	 		  }
    01E7 C002      RJMP	0x01EA
(0369) 		  else
(0370) 	   	  	  {
(0371) 	   		  tmp0=0;
    01E8 2744      CLR	R20
(0372) 	   		  tmp1=0;
    01E9 2766      CLR	R22
(0373) 	   		  }
(0374) return (tmp1*94+tmp0);
    01EA E58E      LDI	R24,0x5E
    01EB 9F86      MUL	R24,R22
    01EC 0180      MOVW	R16,R0
    01ED 2E24      MOV	R2,R20
    01EE 2433      CLR	R3
    01EF 0D02      ADD	R16,R2
    01F0 1D13      ADC	R17,R3
    01F1 940E036A  CALL	pop_gset3
    01F3 9508      RET
_Delay_ms:
  k                    --> R20
  i                    --> R22
  j                    --> R10
  ms                   --> R16
    01F4 940E0377  CALL	push_gset3
(0375) }
(0376) 
(0377) /*********************************************************************************************************
(0378) ** 函数名称: Delay_ms
(0379) ** 功能描述: 延时ms毫秒 (不精确)
(0380) ** 日 期:   2004年12月29日
(0381) ********************************************************************************************************/
(0382) void Delay_ms (uint16 ms)
(0383) {
(0384) 	uint16 i,j,k;
(0385) 	for(k=0; k<ms; k++)
    01F6 2744      CLR	R20
    01F7 2755      CLR	R21
    01F8 C016      RJMP	0x020F
(0386)       for(i=48; i>0; i--)
    01F9 E360      LDI	R22,0x30
    01FA E070      LDI	R23,0
    01FB C00E      RJMP	0x020A
(0387)         for(j=10; j>0; j--)WDR(); //喂狗;
    01FC E08A      LDI	R24,0xA
    01FD E090      LDI	R25,0
    01FE 015C      MOVW	R10,R24
    01FF C004      RJMP	0x0204
    0200 95A8      WDR
    0201 01C5      MOVW	R24,R10
    0202 9701      SBIW	R24,1
    0203 015C      MOVW	R10,R24
    0204 20AA      TST	R10
    0205 F7D1      BNE	0x0200
    0206 20BB      TST	R11
    0207 F7C1      BNE	0x0200
    0208 5061      SUBI	R22,1
    0209 4070      SBCI	R23,0
    020A 3060      CPI	R22,0
    020B 0767      CPC	R22,R23
    020C F779      BNE	0x01FC
    020D 5F4F      SUBI	R20,0xFF
    020E 4F5F      SBCI	R21,0xFF
    020F 1740      CP	R20,R16
    0210 0751      CPC	R21,R17
    0211 F338      BCS	0x01F9
    0212 940E036A  CALL	pop_gset3
    0214 9508      RET
_MB90092_WriteByte:
  i                    --> R20
  _data                --> R16
    0215 940E037B  CALL	push_gset1
(0388) }
(0389) 
(0390) /*********************************************************************************************************
(0391) ** 函数名称: MB90092_WriteByte
(0392) ** 功能描述: 向MB90092 写一个字节数据
(0393) ** 日 期:   2004年12月29日
(0394) ********************************************************************************************************/
(0395) void MB90092_WriteByte (uint8 _data)
(0396) {
(0397) 	uint8 i;
(0398)     Lcd_CS_Dis;
    0217 98C7      CBI	0x18,7
(0399) 	for (i=8;i>0;i--){
    0218 E048      LDI	R20,0x8
    0219 C00A      RJMP	0x0224
(0400) 	WDR(); //喂狗
    021A 95A8      WDR
(0401) 	  Lcd_CLK_Dis;
    021B 98C6      CBI	0x18,6
(0402) 	  if (_data & 0x01) 
    021C FF00      SBRS	R16,0
    021D C002      RJMP	0x0220
(0403) 	     Lcd_SIN_En;
    021E 9AC5      SBI	0x18,5
    021F C001      RJMP	0x0221
(0404) 	  else
(0405) 	     Lcd_SIN_Dis;
    0220 98C5      CBI	0x18,5
(0406) 	  Lcd_CLK_En;
    0221 9AC6      SBI	0x18,6
(0407) 	  _data=_data>>1;	
    0222 9506      LSR	R16
    0223 954A      DEC	R20
    0224 2422      CLR	R2
    0225 1624      CP	R2,R20
    0226 F398      BCS	0x021A
(0408)     }
(0409) 	Lcd_CS_En;
    0227 9AC7      SBI	0x18,7
    0228 940E037E  CALL	pop_gset1
    022A 9508      RET
_MB90092_ClearXY:
  byte2                --> R20
  byte1                --> R22
  y                    --> R10
  x                    --> R20
    022B 940E0377  CALL	push_gset3
    022D 2EA2      MOV	R10,R18
    022E 2F40      MOV	R20,R16
(0410) }
(0411) 
(0412) /*********************************************************************************************************
(0413) ** 函数名称: MB90092_ClearXY
(0414) ** 功能描述: 清掉屏幕上面坐标(x,y)处的字符,y=0x00~0x0B and x=0x00~0x17 for main screen
(0415) ** 日 期:   2004年12月29日
(0416) ********************************************************************************************************/
(0417) void  MB90092_ClearXY (uint8 x,uint8 y)
(0418) {
(0419) 	uint8 byte1,byte2;
(0420) 	
(0421) 	if (x>0x17||y>0x0B) return;           //invalid col number or row number
    022F E187      LDI	R24,0x17
    0230 1784      CP	R24,R20
    0231 F018      BCS	0x0235
    0232 E08B      LDI	R24,0xB
    0233 158A      CP	R24,R10
    0234 F408      BCC	0x0236
    0235 C01A      RJMP	0x0250
(0422) 
(0423) 	byte1=((y>>2)&0x3)+0x80;
    0236 2D6A      MOV	R22,R10
    0237 9566      LSR	R22
    0238 9566      LSR	R22
    0239 7063      ANDI	R22,3
    023A 5860      SUBI	R22,0x80
(0424) 	byte2=((y<<5)&0x60)+x;
    023B 2D8A      MOV	R24,R10
    023C 0F88      LSL	R24
    023D 0F88      LSL	R24
    023E 0F88      LSL	R24
    023F 0F88      LSL	R24
    0240 0F88      LSL	R24
    0241 7680      ANDI	R24,0x60
    0242 0F84      ADD	R24,R20
    0243 2F48      MOV	R20,R24
(0425) 
(0426) 
(0427) 	MB90092_WriteByte(byte1);             //command 0,设置写入地址,行和列
    0244 2F06      MOV	R16,R22
    0245 DFCF      RCALL	_MB90092_WriteByte
(0428) 	MB90092_WriteByte(byte2);
    0246 2F04      MOV	R16,R20
    0247 DFCD      RCALL	_MB90092_WriteByte
(0429) 
(0430) 	MB90092_WriteByte(0x88);              //command1-1,定义字符颜色,背景颜色
    0248 E808      LDI	R16,0x88
    0249 DFCB      RCALL	_MB90092_WriteByte
(0431) 	MB90092_WriteByte(0x00);
    024A 2700      CLR	R16
    024B DFC9      RCALL	_MB90092_WriteByte
(0432) 	
(0433) 	MB90092_WriteByte(0x90+0/128);       //command2-1,写入一个空格字符,地址62为空格符点阵
    024C E900      LDI	R16,0x90
    024D DFC7      RCALL	_MB90092_WriteByte
(0434) 	MB90092_WriteByte(0%128);
    024E 2700      CLR	R16
    024F DFC5      RCALL	_MB90092_WriteByte
    0250 940E036A  CALL	pop_gset3
    0252 9508      RET
_MB90092_ClearRow:
  x                    --> R20
  y                    --> R22
    0253 940E0379  CALL	push_gset2
    0255 2F60      MOV	R22,R16
(0435) }
(0436) 
(0437) /*********************************************************************************************************
(0438) ** 函数名称: MB90092_ClearRow
(0439) ** 功能描述: 清掉屏幕上面的第y行字符,y=0x00~0x0B for main screen
(0440) ** 日 期:   2004年12月29日
(0441) ********************************************************************************************************/
(0442) void  MB90092_ClearRow (uint8 y)
(0443) {
(0444) 	uint8 x;
(0445) 	
(0446) 	if (y>0x0B) return;                   //invlid row number
    0256 E08B      LDI	R24,0xB
    0257 1786      CP	R24,R22
    0258 F408      BCC	0x025A
    0259 C009      RJMP	0x0263
(0447) 	
(0448) 	for (x=0;x<0x18;x++)
    025A 2744      CLR	R20
    025B C005      RJMP	0x0261
(0449) 	{
(0450) 	  WDR(); //喂狗
    025C 95A8      WDR
(0451) 	  MB90092_ClearXY (x,y);
    025D 2F26      MOV	R18,R22
    025E 2F04      MOV	R16,R20
    025F DFCB      RCALL	_MB90092_ClearXY
    0260 9543      INC	R20
    0261 3148      CPI	R20,0x18
    0262 F3C8      BCS	0x025C
    0263 940E0367  CALL	pop_gset2
    0265 9508      RET
_MB90092_ClearScreen:
  i                    --> R20
    0266 940E037B  CALL	push_gset1
(0452) 	  }
(0453) }
(0454) 
(0455) /*********************************************************************************************************
(0456) ** 函数名称: MB90092_ClearScreen
(0457) ** 功能描述: 清屏
(0458) ** 日 期:   2004年12月29日
(0459) ********************************************************************************************************/
(0460) void  MB90092_ClearScreen (void)
(0461) {
(0462) 	uint8 i;
(0463) 	for (i=0;i<0x0C;i++)
    0268 2744      CLR	R20
    0269 C004      RJMP	0x026E
(0464) 	{WDR(); //喂狗
    026A 95A8      WDR
(0465) 	  MB90092_ClearRow (i);
    026B 2F04      MOV	R16,R20
    026C DFE6      RCALL	_MB90092_ClearRow
    026D 9543      INC	R20
    026E 304C      CPI	R20,0xC
    026F F3D0      BCS	0x026A
    0270 940E037E  CALL	pop_gset1
    0272 9508      RET
_MB90092_DisColor:
  temp2                --> R20
  temp1                --> R22
  y                    --> R20
    0273 940E0379  CALL	push_gset2
    0275 2F40      MOV	R20,R16
(0466) 	  }
(0467) }
(0468) 
(0469) /*********************************************************************************************************
(0470) ** 函数名称: MB90092_DisColor
(0471) ** 功能描述: MB90092颜色初始化
(0472) ** 日 期:   2004年12月29日
(0473) ********************************************************************************************************/
(0474) void  MB90092_DisColor (uint8 y)
(0475) {
(0476) 	uint8 temp1,temp2;
(0477) 	
(0478) 	temp1=((y>>2)&0x3)+0x84;
    0276 2F64      MOV	R22,R20
    0277 9566      LSR	R22
    0278 9566      LSR	R22
    0279 7063      ANDI	R22,3
    027A 576C      SUBI	R22,0x7C
(0479) 	temp2=((y<<5)&0x60)+1;
    027B 0F44      LSL	R20
    027C 0F44      LSL	R20
    027D 0F44      LSL	R20
    027E 0F44      LSL	R20
    027F 0F44      LSL	R20
    0280 7640      ANDI	R20,0x60
    0281 5F4F      SUBI	R20,0xFF
(0480) 
(0481) 	MB90092_WriteByte(temp1);             //command 0,设置写入地址,行和列
    0282 2F06      MOV	R16,R22
    0283 DF91      RCALL	_MB90092_WriteByte
(0482) 	MB90092_WriteByte(temp2);
    0284 2F04      MOV	R16,R20
    0285 DF8F      RCALL	_MB90092_WriteByte
(0483) 
(0484) 	MB90092_WriteByte(0x88);              //ff控制是否特显
    0286 E808      LDI	R16,0x88
    0287 DF8D      RCALL	_MB90092_WriteByte
(0485) 	MB90092_WriteByte(0x00);              //command1-1,设置字符颜色,背景颜色
    0288 2700      CLR	R16
    0289 DF8B      RCALL	_MB90092_WriteByte
(0486) 	
(0487) 	MB90092_WriteByte(0x90);              //command2-1,设置字符点阵在外rom的地址
    028A E900      LDI	R16,0x90
    028B DF89      RCALL	_MB90092_WriteByte
(0488) 	MB90092_WriteByte(0x00);
    028C 2700      CLR	R16
    028D DF87      RCALL	_MB90092_WriteByte
    028E 940E0367  CALL	pop_gset2
    0290 9508      RET
_MB90092_DisChar:
  mc                   --> R22
  mb                   --> R12
  ma                   --> R14
  color                --> R10

⌨️ 快捷键说明

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