📄 mb90092.lis
字号:
0270 F801 movw R30,R16
0272 2080 ldd R2,z+0
0274 3324 clr R3
0276 822D mov R24,R2
0278 813A cpi R24,161
027A 50F0 brlo L63
027C 8A3A cpi R24,170
027E 40F4 brsh L63
0280 .dbline 358
0280 ; {
0280 .dbline 359
0280 ; tmp1=*CChar-0xa1;
0280 6081 ldd R22,z+0
0282 615A subi R22,161
0284 .dbline 360
0284 ; CChar++;
0284 0F5F subi R16,255 ; offset = 1
0286 1F4F sbci R17,255
0288 .dbline 361
0288 ; tmp0=*CChar-0xa1;
0288 F801 movw R30,R16
028A 4081 ldd R20,z+0
028C 415A subi R20,161
028E .dbline 362
028E ; }
028E 18C0 xjmp L64
0290 L63:
0290 .dbline 364
0290 ; else
0290 ; if(*CChar <127 && *CChar >0x20) {
0290 F801 movw R30,R16
0292 2080 ldd R2,z+0
0294 3324 clr R3
0296 822D mov R24,R2
0298 8F37 cpi R24,127
029A 80F4 brsh L65
029C 80E2 ldi R24,32
029E 8215 cp R24,R2
02A0 68F4 brsh L65
02A2 .dbline 364
02A2 .dbline 365
02A2 ; tmp=(*CChar-0x20)+0xa3a0;
02A2 8081 ldd R24,z+0
02A4 9927 clr R25
02A6 8097 sbiw R24,32
02A8 8056 subi R24,96 ; offset = 41888
02AA 9C45 sbci R25,92
02AC 5C01 movw R10,R24
02AE .dbline 366
02AE ; tmp1=(uint8)(tmp>>8)-0xa1;
02AE BC01 movw R22,R24
02B0 672F mov R22,R23
02B2 7727 clr R23
02B4 615A subi R22,161
02B6 .dbline 367
02B6 ; tmp0=(uint8)tmp-0xa1;
02B6 482F mov R20,R24
02B8 415A subi R20,161
02BA .dbline 368
02BA ; }
02BA 02C0 xjmp L66
02BC L65:
02BC .dbline 370
02BC ; else
02BC ; {
02BC .dbline 371
02BC ; tmp0=0;
02BC 4427 clr R20
02BE .dbline 372
02BE ; tmp1=0;
02BE 6627 clr R22
02C0 .dbline 373
02C0 ; }
02C0 L66:
02C0 L64:
02C0 L62:
02C0 .dbline 374
02C0 ; return (tmp1*94+tmp0);
02C0 8EE5 ldi R24,94
02C2 869F mul R24,R22
02C4 8001 movw R16,R0
02C6 242E mov R2,R20
02C8 3324 clr R3
02CA 020D add R16,R2
02CC 131D adc R17,R3
02CE .dbline -2
02CE L60:
02CE 0E940000 xcall pop_gset3
02D2 .dbline 0 ; func end
02D2 0895 ret
02D4 .dbsym r tmp 10 i
02D4 .dbsym r tmp0 20 c
02D4 .dbsym r tmp1 22 c
02D4 .dbsym r CChar 16 pc
02D4 .dbend
02D4 .dbfunc e Delay_ms _Delay_ms fV
02D4 ; k -> R20,R21
02D4 ; i -> R22,R23
02D4 ; j -> R10,R11
02D4 ; ms -> R16,R17
.even
02D4 _Delay_ms::
02D4 0E940000 xcall push_gset3
02D8 .dbline -1
02D8 .dbline 383
02D8 ; }
02D8 ;
02D8 ; /*********************************************************************************************************
02D8 ; ** 函数名称: Delay_ms
02D8 ; ** 功能描述: 延时ms毫秒 (不精确)
02D8 ; ** 日 期: 2004年12月29日
02D8 ; ********************************************************************************************************/
02D8 ; void Delay_ms (uint16 ms)
02D8 ; {
02D8 .dbline 385
02D8 ; uint16 i,j,k;
02D8 ; for(k=0; k<ms; k++)
02D8 4427 clr R20
02DA 5527 clr R21
02DC 16C0 xjmp L71
02DE L68:
02DE .dbline 386
02DE ; for(i=48; i>0; i--)
02DE 60E3 ldi R22,48
02E0 70E0 ldi R23,0
02E2 0EC0 xjmp L75
02E4 L72:
02E4 .dbline 387
02E4 8AE0 ldi R24,10
02E6 90E0 ldi R25,0
02E8 5C01 movw R10,R24
02EA 04C0 xjmp L79
02EC L76:
02EC .dbline 387
02EC A895 wdr
02EE L77:
02EE .dbline 387
02EE C501 movw R24,R10
02F0 0197 sbiw R24,1
02F2 5C01 movw R10,R24
02F4 L79:
02F4 .dbline 387
02F4 AA20 tst R10
02F6 D1F7 brne L76
02F8 BB20 tst R11
02FA C1F7 brne L76
02FC X2:
02FC L73:
02FC .dbline 386
02FC 6150 subi R22,1
02FE 7040 sbci R23,0
0300 L75:
0300 .dbline 386
0300 6030 cpi R22,0
0302 6707 cpc R22,R23
0304 79F7 brne L72
0306 X3:
0306 L69:
0306 .dbline 385
0306 4F5F subi R20,255 ; offset = 1
0308 5F4F sbci R21,255
030A L71:
030A .dbline 385
030A 4017 cp R20,R16
030C 5107 cpc R21,R17
030E 38F3 brlo L68
0310 .dbline -2
0310 L67:
0310 0E940000 xcall pop_gset3
0314 .dbline 0 ; func end
0314 0895 ret
0316 .dbsym r k 20 i
0316 .dbsym r i 22 i
0316 .dbsym r j 10 i
0316 .dbsym r ms 16 i
0316 .dbend
0316 .dbfunc e MB90092_WriteByte _MB90092_WriteByte fV
0316 ; i -> R20
0316 ; _data -> R16
.even
0316 _MB90092_WriteByte::
0316 0E940000 xcall push_gset1
031A .dbline -1
031A .dbline 396
031A ; for(j=10; j>0; j--)WDR(); //喂狗;
031A ; }
031A ;
031A ; /*********************************************************************************************************
031A ; ** 函数名称: MB90092_WriteByte
031A ; ** 功能描述: 向MB90092 写一个字节数据
031A ; ** 日 期: 2004年12月29日
031A ; ********************************************************************************************************/
031A ; void MB90092_WriteByte (uint8 _data)
031A ; {
031A .dbline 398
031A ; uint8 i;
031A ; Lcd_CS_Dis;
031A C798 cbi 0x18,7
031C .dbline 399
031C 48E0 ldi R20,8
031E 0AC0 xjmp L84
0320 L81:
0320 .dbline 399
0320 ; for (i=8;i>0;i--){
0320 .dbline 400
0320 ; WDR(); //喂狗
0320 A895 wdr
0322 .dbline 401
0322 ; Lcd_CLK_Dis;
0322 C698 cbi 0x18,6
0324 .dbline 402
0324 ; if (_data & 0x01)
0324 00FF sbrs R16,0
0326 02C0 rjmp L85
0328 .dbline 403
0328 ; Lcd_SIN_En;
0328 C59A sbi 0x18,5
032A 01C0 xjmp L86
032C L85:
032C .dbline 405
032C ; else
032C ; Lcd_SIN_Dis;
032C C598 cbi 0x18,5
032E L86:
032E .dbline 406
032E C69A sbi 0x18,6
0330 .dbline 407
0330 0695 lsr R16
0332 .dbline 408
0332 L82:
0332 .dbline 399
0332 4A95 dec R20
0334 L84:
0334 .dbline 399
0334 2224 clr R2
0336 2416 cp R2,R20
0338 98F3 brlo L81
033A .dbline 409
033A ; Lcd_CLK_En;
033A ; _data=_data>>1;
033A ; }
033A ; Lcd_CS_En;
033A C79A sbi 0x18,7
033C .dbline -2
033C L80:
033C 0E940000 xcall pop_gset1
0340 .dbline 0 ; func end
0340 0895 ret
0342 .dbsym r i 20 c
0342 .dbsym r _data 16 c
0342 .dbend
0342 .dbfunc e MB90092_ClearXY _MB90092_ClearXY fV
0342 ; byte2 -> R20
0342 ; byte1 -> R22
0342 ; y -> R10
0342 ; x -> R20
.even
0342 _MB90092_ClearXY::
0342 0E940000 xcall push_gset3
0346 A22E mov R10,R18
0348 402F mov R20,R16
034A .dbline -1
034A .dbline 418
034A ; }
034A ;
034A ; /*********************************************************************************************************
034A ; ** 函数名称: MB90092_ClearXY
034A ; ** 功能描述: 清掉屏幕上面坐标(x,y)处的字符,y=0x00~0x0B and x=0x00~0x17 for main screen
034A ; ** 日 期: 2004年12月29日
034A ; ********************************************************************************************************/
034A ; void MB90092_ClearXY (uint8 x,uint8 y)
034A ; {
034A .dbline 421
034A 87E1 ldi R24,23
034C 8417 cp R24,R20
034E 18F0 brlo L90
0350 8BE0 ldi R24,11
0352 8A15 cp R24,R10
0354 08F4 brsh L88
0356 L90:
0356 .dbline 421
0356 ; uint8 byte1,byte2;
0356 ;
0356 ; if (x>0x17||y>0x0B) return; //invalid col number or row number
0356 1AC0 xjmp L87
0358 L88:
0358 .dbline 423
0358 ;
0358 ; byte1=((y>>2)&0x3)+0x80;
0358 6A2D mov R22,R10
035A 6695 lsr R22
035C 6695 lsr R22
035E 6370 andi R22,3
0360 6058 subi R22,128 ; addi 128
0362 .dbline 424
0362 ; byte2=((y<<5)&0x60)+x;
0362 8A2D mov R24,R10
0364 880F lsl R24
0366 880F lsl R24
0368 880F lsl R24
036A 880F lsl R24
036C 880F lsl R24
036E 8076 andi R24,96
0370 840F add R24,R20
0372 482F mov R20,R24
0374 .dbline 427
0374 ;
0374 ;
0374 ; MB90092_WriteByte(byte1); //command 0,设置写入地址,行和列
0374 062F mov R16,R22
0376 CFDF xcall _MB90092_WriteByte
0378 .dbline 428
0378 ; MB90092_WriteByte(byte2);
0378 042F mov R16,R20
037A CDDF xcall _MB90092_WriteByte
037C .dbline 430
037C ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -