📄 lcd1286418.lis
字号:
0274 .dbline 322
0274 ; a = LcdRdDat('L');
0274 0CE4 ldi R16,76
0276 40DF xcall _LcdRdDat
0278 A02E mov R10,R16
027A .dbline 323
027A ; if(data == 0) /* DOT ON/OFF */
027A EE20 tst R14
027C 41F4 brne L55
027E X19:
027E .dbline 324
027E ; a&=~(1<<temp2);
027E 01E0 ldi R16,1
0280 1C2D mov R17,R12
0282 0E940000 xcall lsl8
0286 202E mov R2,R16
0288 2094 com R2
028A A220 and R10,R2
028C 27C0 xjmp L54
028E L55:
028E .dbline 326
028E ; else
028E ; a|=(1<<temp2);
028E 01E0 ldi R16,1
0290 1C2D mov R17,R12
0292 0E940000 xcall lsl8
0296 A02A or R10,R16
0298 .dbline 327
0298 ; }
0298 21C0 xjmp L54
029A L53:
029A .dbline 329
029A ; else
029A ; {
029A .dbline 330
029A ; LcdWrCmd('R',0XC0); /* SET ROW */
029A 20EC ldi R18,192
029C 02E5 ldi R16,82
029E BBDE xcall _LcdWrCmd
02A0 .dbline 331
02A0 ; LcdWrCmd('R',0XB8+temp1); /* SET PAGE */
02A0 262F mov R18,R22
02A2 2854 subi R18,72 ; addi 184
02A4 02E5 ldi R16,82
02A6 B7DE xcall _LcdWrCmd
02A8 .dbline 332
02A8 ; LcdWrCmd('R',0X40+x-64); /* SET X*/
02A8 2A85 ldd R18,y+10
02AA 205C subi R18,192 ; addi 64
02AC 2054 subi R18,64
02AE 02E5 ldi R16,82
02B0 B2DE xcall _LcdWrCmd
02B2 .dbline 333
02B2 ; a = LcdRdDat('R'); /* READ NOW SEGMENT VALUE */
02B2 02E5 ldi R16,82
02B4 21DF xcall _LcdRdDat
02B6 .dbline 334
02B6 ; a = LcdRdDat('R');
02B6 02E5 ldi R16,82
02B8 1FDF xcall _LcdRdDat
02BA 402F mov R20,R16
02BC A42E mov R10,R20
02BE .dbline 335
02BE ; if(data == 0) /* DOT ON/OFF */
02BE EE20 tst R14
02C0 41F4 brne L57
02C2 X20:
02C2 .dbline 336
02C2 ; a&=~(1<<temp2);
02C2 01E0 ldi R16,1
02C4 1C2D mov R17,R12
02C6 0E940000 xcall lsl8
02CA 202E mov R2,R16
02CC 2094 com R2
02CE A220 and R10,R2
02D0 05C0 xjmp L58
02D2 L57:
02D2 .dbline 338
02D2 ; else
02D2 ; a|=(1<<temp2);
02D2 01E0 ldi R16,1
02D4 1C2D mov R17,R12
02D6 0E940000 xcall lsl8
02DA A02A or R10,R16
02DC L58:
02DC .dbline 339
02DC ; }
02DC L54:
02DC .dbline 341
02DC ;
02DC ; if(x < 64) /* WRITE VALUE AS SEGMENT */
02DC 8A85 ldd R24,y+10
02DE 8034 cpi R24,64
02E0 78F4 brsh L59
02E2 X21:
02E2 .dbline 342
02E2 ; {
02E2 .dbline 344
02E2 ; //LcdWrCmd('L',0X3F); /* LCD ON */
02E2 ; LcdWrCmd('L',0XC0); /* SET ROW */
02E2 20EC ldi R18,192
02E4 0CE4 ldi R16,76
02E6 97DE xcall _LcdWrCmd
02E8 .dbline 345
02E8 ; LcdWrCmd('L',0XB8+temp1); /* SET PAGE */
02E8 262F mov R18,R22
02EA 2854 subi R18,72 ; addi 184
02EC 0CE4 ldi R16,76
02EE 93DE xcall _LcdWrCmd
02F0 .dbline 346
02F0 ; LcdWrCmd('L',0X40+x); /* SET X */
02F0 2A85 ldd R18,y+10
02F2 205C subi R18,192 ; addi 64
02F4 0CE4 ldi R16,76
02F6 8FDE xcall _LcdWrCmd
02F8 .dbline 347
02F8 ; LcdWrDat('L',a); /* WRITE SEGMENT */
02F8 2A2D mov R18,R10
02FA 0CE4 ldi R16,76
02FC B4DE xcall _LcdWrDat
02FE .dbline 348
02FE ; }
02FE 0FC0 xjmp L60
0300 L59:
0300 .dbline 350
0300 ; else
0300 ; {
0300 .dbline 352
0300 ; //LcdWrCmd('R',0X3F); /* LCD ON */
0300 ; LcdWrCmd('R',0XC0); /* SET ROW */
0300 20EC ldi R18,192
0302 02E5 ldi R16,82
0304 88DE xcall _LcdWrCmd
0306 .dbline 353
0306 ; LcdWrCmd('R',0XB8+temp1); /* SET PAGE */
0306 262F mov R18,R22
0308 2854 subi R18,72 ; addi 184
030A 02E5 ldi R16,82
030C 84DE xcall _LcdWrCmd
030E .dbline 354
030E ; LcdWrCmd('R',0X40+x-64); /* SET X*/
030E 2A85 ldd R18,y+10
0310 205C subi R18,192 ; addi 64
0312 2054 subi R18,64
0314 02E5 ldi R16,82
0316 7FDE xcall _LcdWrCmd
0318 .dbline 355
0318 ; LcdWrDat('R',a); /* WRITE SEGMENT */
0318 2A2D mov R18,R10
031A 02E5 ldi R16,82
031C A4DE xcall _LcdWrDat
031E .dbline 356
031E ; }
031E L60:
031E .dbline -2
031E L46:
031E .dbline 0 ; func end
031E 0E940000 xcall pop_xgsetF0FC
0322 2496 adiw R28,4
0324 0895 ret
0326 .dbsym r temp2 12 c
0326 .dbsym r temp1 22 c
0326 .dbsym r a 10 c
0326 .dbsym r data 14 c
0326 .dbsym r y 10 c
0326 .dbsym l x 10 c
0326 .dbend
0326 .dbfunc e LcdDsiplayRefresh _LcdDsiplayRefresh fV
0326 ; temp1 -> R20
0326 ; temp2 -> R22
.even
0326 _LcdDsiplayRefresh::
0326 4A93 st -y,R20
0328 6A93 st -y,R22
032A 2197 sbiw R28,1
032C .dbline -1
032C .dbline 365
032C ; }
032C ;
032C ; /*******************************************************
032C ; * FUNCTION NAME: LcdDsiplayRefresh *
032C ; * DESCRIPTION: 显示内容写入单片机RAM中,再LCD上显示 *
032C ; * 为了提高3D图形显示速度。
032C ; /******************************************************/
032C ; void LcdDsiplayRefresh(void)
032C ; {
032C .dbline 367
032C ; unsigned char temp1,temp2;
032C ; for(temp1=0; temp1<8; temp1++)
032C 4427 clr R20
032E 16C0 xjmp L65
0330 L62:
0330 .dbline 368
0330 ; {
0330 .dbline 369
0330 ; for(temp2=0; temp2<128; temp2++)
0330 6627 clr R22
0332 11C0 xjmp L69
0334 L66:
0334 .dbline 370
0334 ; {
0334 .dbline 371
0334 ; LcdDisplaySeg(temp1,temp2,displaybuffer[temp1][temp2]);
0334 80E8 ldi R24,128
0336 849F mul R24,R20
0338 1001 movw R2,R0
033A 80E0 ldi R24,<_displaybuffer
033C 90E0 ldi R25,>_displaybuffer
033E 280E add R2,R24
0340 391E adc R3,R25
0342 E62F mov R30,R22
0344 FF27 clr R31
0346 E20D add R30,R2
0348 F31D adc R31,R3
034A 2080 ldd R2,z+0
034C 2882 std y+0,R2
034E 262F mov R18,R22
0350 042F mov R16,R20
0352 2EDF xcall _LcdDisplaySeg
0354 .dbline 372
0354 ; }
0354 L67:
0354 .dbline 369
0354 6395 inc R22
0356 L69:
0356 .dbline 369
0356 6038 cpi R22,128
0358 68F3 brlo L66
035A X22:
035A .dbline 373
035A ; }
035A L63:
035A .dbline 367
035A 4395 inc R20
035C L65:
035C .dbline 367
035C 4830 cpi R20,8
035E 40F3 brlo L62
0360 X23:
0360 .dbline -2
0360 L61:
0360 .dbline 0 ; func end
0360 2196 adiw R28,1
0362 6991 ld R22,y+
0364 4991 ld R20,y+
0366 0895 ret
0368 .dbsym r temp1 20 c
0368 .dbsym r temp2 22 c
0368 .dbend
0368 .dbfunc e Delay1ms _Delay1ms fV
0368 ; i -> R16
0368 ; temp -> R18,R19
.even
0368 _Delay1ms::
0368 .dbline -1
0368 .dbline 381
0368 ; }
0368 ;
0368 ; /****************************************
0368 ; * FUNCTION NAME: Delay1ms *
0368 ; * DESCRIPTION: MCU CLOCK=11.0592Mhz *
0368 ; /***************************************/
0368 ; void Delay1ms(void)
0368 ; {
0368 .dbline 384
0368 ; unsigned int temp;
0368 ; unsigned char i;
0368 ; for(i=0;i<10;i++)
0368 0027 clr R16
036A 0AC0 xjmp L74
036C L71:
036C .dbline 385
036C ; {
036C .dbline 386
036C ; for(temp=20; temp>0;temp--) /* Delay About 1ms */
036C 24E1 ldi R18,20
036E 30E0 ldi R19,0
0370 03C0 xjmp L78
0372 L75:
0372 .dbline 387
0372 ; {
0372 .dbline 388
0372 ; NOP;
0372 0000 nop
0374 .dbline 389
0374 ; }
0374 L76:
0374 .dbline 386
0374 2150 subi R18,1
0376 3040 sbci R19,0
0378 L78:
0378 .dbline 386
0378 2030 cpi R18,0
037A 2307 cpc R18,R19
037C D1F7 brne L75
037E X24:
037E .dbline 390
037E ; }
037E L72:
037E .dbline 384
037E 0395 inc R16
0380 L74:
0380 .dbline 384
0380 0A30 cpi R16,10
0382 A0F3 brlo L71
0384 X25:
0384 .dbline -2
0384 L70:
0384 .dbline 0 ; func end
0384 0895 ret
0386 .dbsym r i 16 c
0386 .dbsym r temp 18 i
0386 .dbend
.area bss(ram, con, rel)
0000 .dbfile F:\CODE\LCD1286418\lcd1286418.c
0000 _displaybuffer::
0000 .blkb 1024
0400 .dbsym e displaybuffer _displaybuffer A[1024:8:128]c
0400 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -