📄 spilcd12864.lst
字号:
031A 8503 LDD R16,Z+11
031B 8514 LDD R17,Z+12
031C 8525 LDD R18,Z+13
031D 8536 LDD R19,Z+14
031E DD3B RCALL _speaData
(0158)
(0159) lcd_set_xy(x,y);
031F 2D2E MOV R18,R14
0320 2D0A MOV R16,R10
0321 DF10 RCALL _lcd_set_xy
(0160) delay50us(40);
0322 E208 LDI R16,0x28
0323 E010 LDI R17,0
0324 DEBC RCALL _delay50us
(0161) if(length>effectLen)
0325 840F LDD R0,Y+15
0326 14C0 CP R12,R0
0327 F478 BCC 0x0337
(0162) {
(0163) for(i=length-effectLen-1;i>=0;i--)
0328 2D80 MOV R24,R0
0329 198C SUB R24,R12
032A 5081 SUBI R24,1
032B 2EA8 MOV R10,R24
032C C007 RJMP 0x0334
(0164) {
(0165) lcd_wrDat(' '&0xF0,(' '&0x0F)<<4);
032D 2722 CLR R18
032E E200 LDI R16,0x20
032F DEF5 RCALL _lcd_wrDat
(0166) delay50us(40);
0330 E208 LDI R16,0x28
0331 E010 LDI R17,0
0332 DEAE RCALL _delay50us
0333 94AA DEC R10
0334 2D8A MOV R24,R10
0335 3080 CPI R24,0
0336 F7B4 BGE 0x032D
(0167) }
(0168) }
(0169) for(i=effectLen-1;i>=0;i--)
0337 2D8C MOV R24,R12
0338 5081 SUBI R24,1
0339 2EA8 MOV R10,R24
033A C01E RJMP 0x0359
(0170) {
(0171) lcd_wrDat( (dataElem[i]+0x30)&0xF0 ,( (dataElem[i]+0x30)&0x0F )<<4 );
033B E78D LDI R24,0x7D
033C E090 LDI R25,0
033D 2DEA MOV R30,R10
033E 27FF CLR R31
033F FDE7 SBRC R30,7
0340 95F0 COM R31
0341 0FE8 ADD R30,R24
0342 1FF9 ADC R31,R25
0343 8180 LDD R24,Z+0
0344 2799 CLR R25
0345 96C0 ADIW R24,0x30
0346 2F28 MOV R18,R24
0347 702F ANDI R18,0xF
0348 7030 ANDI R19,0
0349 0F22 LSL R18
034A 1F33 ROL R19
034B 0F22 LSL R18
034C 1F33 ROL R19
034D 0F22 LSL R18
034E 1F33 ROL R19
034F 0F22 LSL R18
0350 1F33 ROL R19
0351 2F08 MOV R16,R24
0352 7F00 ANDI R16,0xF0
0353 7010 ANDI R17,0
0354 DED0 RCALL _lcd_wrDat
(0172) delay50us(40);
0355 E208 LDI R16,0x28
0356 E010 LDI R17,0
0357 DE89 RCALL _delay50us
0358 94AA DEC R10
0359 2D8A MOV R24,R10
035A 3080 CPI R24,0
035B F6FC BGE 0x033B
035C 9621 ADIW R28,1
035D 940E0480 CALL pop_gset5
035F 9508 RET
_lcd_puts:
str --> R20
y --> R10
x --> R22
0360 940E0487 CALL push_gset3
0362 2EA2 MOV R10,R18
0363 2F60 MOV R22,R16
0364 814E LDD R20,Y+6
0365 815F LDD R21,Y+7
(0173) }
(0174) }
(0175)
(0176) void lcd_puts(uint8 x,uint8 y,uint8 *str)
(0177) {
(0178) lcd_set_xy(x,y);
0366 2D2A MOV R18,R10
0367 2F06 MOV R16,R22
0368 DEC9 RCALL _lcd_set_xy
(0179) delay50us(20);
0369 E104 LDI R16,0x14
036A E010 LDI R17,0
036B DE75 RCALL _delay50us
036C C00F RJMP 0x037C
(0180) while(*str)
(0181) {
(0182) lcd_wrDat((*(str))&0xF0,((*(str))&0x0F)<<4);
036D 01FA MOVW R30,R20
036E 8020 LDD R2,Z+0
036F 2433 CLR R3
0370 2D22 MOV R18,R2
0371 702F ANDI R18,0xF
0372 702F ANDI R18,0xF
0373 9522 SWAP R18
0374 2D02 MOV R16,R2
0375 7F00 ANDI R16,0xF0
0376 DEAE RCALL _lcd_wrDat
(0183) str++;
0377 5F4F SUBI R20,0xFF
0378 4F5F SBCI R21,0xFF
(0184) delay50us(20);
0379 E104 LDI R16,0x14
037A E010 LDI R17,0
037B DE65 RCALL _delay50us
037C 01FA MOVW R30,R20
037D 8020 LDD R2,Z+0
037E 2022 TST R2
037F F769 BNE 0x036D
0380 940E047A CALL pop_gset3
0382 9508 RET
_lcd_puts_:
str --> R20
y --> R10
x --> R22
0383 940E0487 CALL push_gset3
0385 2EA2 MOV R10,R18
0386 2F60 MOV R22,R16
0387 814E LDD R20,Y+6
0388 815F LDD R21,Y+7
(0185) }
(0186) }
(0187)
(0188) void lcd_puts_(uint8 x,uint8 y,uint8 *str)
(0189) {
(0190) lcd_set_xy(x,y);
0389 2D2A MOV R18,R10
038A 2F06 MOV R16,R22
038B DEA6 RCALL _lcd_set_xy
(0191) delay50us(20);
038C E104 LDI R16,0x14
038D E010 LDI R17,0
038E DE52 RCALL _delay50us
038F C00F RJMP 0x039F
(0192) while(*str)
(0193) {
(0194) lcd_wrDat((*(str))&0xF0,((*(str))&0x0F)<<4);
0390 01FA MOVW R30,R20
0391 8020 LDD R2,Z+0
0392 2433 CLR R3
0393 2D22 MOV R18,R2
0394 702F ANDI R18,0xF
0395 702F ANDI R18,0xF
0396 9522 SWAP R18
0397 2D02 MOV R16,R2
0398 7F00 ANDI R16,0xF0
0399 DE8B RCALL _lcd_wrDat
(0195) str++;
039A 5F4F SUBI R20,0xFF
039B 4F5F SBCI R21,0xFF
(0196) delay50ms(4);
039C E004 LDI R16,4
039D E010 LDI R17,0
039E DE54 RCALL _delay50ms
039F 01FA MOVW R30,R20
03A0 8020 LDD R2,Z+0
03A1 2022 TST R2
03A2 F769 BNE 0x0390
03A3 940E047A CALL pop_gset3
03A5 9508 RET
(0197) }
(0198) }
(0199)
(0200) void lcd_init(void)
(0201) {
(0202) SPI_init();
_lcd_init:
03A6 DE62 RCALL _SPI_init
(0203) delay50ms(1);
03A7 E001 LDI R16,1
03A8 E010 LDI R17,0
03A9 DE49 RCALL _delay50ms
(0204) lcd_wrCmd(0x30,0x30); //使用8位控制界面,使用基本指令集
03AA E320 LDI R18,0x30
03AB E300 LDI R16,0x30
03AC DE6B RCALL _lcd_wrCmd
(0205) lcd_wrCmd(0x30,0x30); //使用8位控制界面,使用基本指令集
03AD E320 LDI R18,0x30
03AE E300 LDI R16,0x30
03AF DE68 RCALL _lcd_wrCmd
(0206) //lcd_wrCmd(0x00,0xF0); //整体显示ON
(0207) lcd_wrCmd(0x00,0xC0); //整体显示ON
03B0 EC20 LDI R18,0xC0
03B1 2700 CLR R16
03B2 DE65 RCALL _lcd_wrCmd
(0208) lcd_wrCmd(0x00,0x10); //清屏
03B3 E120 LDI R18,0x10
03B4 2700 CLR R16
03B5 DE62 RCALL _lcd_wrCmd
(0209) //lcd_wrCmd(0x10,0x00); //光标
(0210) lcd_wrCmd(0x00,0x60); //显示右移
03B6 E620 LDI R18,0x60
03B7 2700 CLR R16
03B8 DE5F RCALL _lcd_wrCmd
(0211) delay50ms(1); //不可省去!!!
03B9 E001 LDI R16,1
03BA E010 LDI R17,0
03BB DE37 RCALL _delay50ms
03BC 9508 RET
_main:
03BD 9722 SBIW R28,2
FILE: E:\WaveShare\微雪电子CD1\开发板试验器\SD系列\M16SD\试验教程\外围模块相关试验\SPILCD~2\SPILcd12864\SPILcd12864_.C
(0001) /*********************************************************************
(0002) 微 雪 电 子 WaveShare http://www.waveShare.net
(0003)
(0004) 目 的: 测试"lm3303"SPILCD12864液晶模块
(0005)
(0006) 目标系统: 基于任何AVR单片机
(0007)
(0008) 应用软件: ICCAVR
(0009)
(0010) 版 本: Version 1.0
(0011)
(0012) 圆版时间: 2005-06-25
(0013)
(0014) 开发人员: SEE
(0015)
(0016) 说 明: 若用于商业用途,请保留此段文字或注明代码来源
(0017)
(0018) 深 圳 微 雪 电 子 保 留 所 有 的 版 权
(0019) *********************************************************************/
(0020)
(0021) /*01010101010101010101010101010101010101010101010101010101010101010101
(0022) ----------------------------------------------------------------------
(0023) 版本更新记录:
(0024)
(0025) ----------------------------------------------------------------------
(0026) 实验内容:
(0027) 初始化、读写SPILCD12864。
(0028) ----------------------------------------------------------------------
(0029) 硬件连接:
(0030) 将SPILCD12864插入主板的“DotLcd”插槽;
(0031) SingleKeyBoard:K0----K7
(0032) |
(0033) M16SD: PA0--PA7
(0034) ----------------------------------------------------------------------
(0035) 注意事项:
(0036) 详见M16SD说明书
(0037) ----------------------------------------------------------------------
(0038) 10101010101010101010101010101010101010101010101010101010101010101010*/
(0039) #include <iom16v.h>
(0040)
(0041) #define OUT_LCD_CS sbi(DDRB,3)
(0042) #define SET_LCD_CS sbi(PORTB,3)
(0043) #include "D:\ICC_H\SPILCD.H"
(0044)
(0045) /*--------------------------------------------------------------------
(0046) 函数名称:
(0047) 函数功能:
(0048) 注意事项:
(0049) 提示说明:
(0050) 输 入:
(0051) 返 回:
(0052) --------------------------------------------------------------------*/
(0053) void main()
(0054) {
(0055) SEI();
03BE 9478 BSET 7
(0056) lcd_init();
03BF DFE6 RCALL _lcd_init
(0057) lcd_puts(1,1," WaveShare.net");
03C0 E68D LDI R24,0x6D
03C1 E090 LDI R25,0
03C2 8399 STD Y+1,R25
03C3 8388 STD Y+0,R24
03C4 E021 LDI R18,1
03C5 E001 LDI R16,1
03C6 DF99 RCALL _lcd_puts
(0058) lcd_puts(3,1," 微雪电子");
03C7 E680 LDI R24,0x60
03C8 E090 LDI R25,0
03C9 8399 STD Y+1,R25
03CA 8388 STD Y+0,R24
03CB E021 LDI R18,1
03CC E003 LDI R16,3
03CD DF92 RCALL _lcd_puts
(0059) while(1);
FILE: <library>
03CE CFFF RJMP 0x03CE
03CF 9622 ADIW R28,2
03D0 9508 RET
push_arg4:
03D1 933A ST R19,-Y
03D2 932A ST R18,-Y
push_arg2:
03D3 931A ST R17,-Y
03D4 930A ST R16,-Y
03D5 9508 RET
div32u:
03D6 94E8 BCLR 6
03D7 C001 RJMP 0x03D9
mod32u:
03D8 9468 BSET 6
03D9 D02F RCALL long_div_prolog
03DA 24CC CLR R12
03DB C008 RJMP 0x03E4
div32s:
03DC 94E8 BCLR 6
03DD C001 RJMP 0x03DF
mod32s:
03DE 9468 BSET 6
03DF D029 RCALL long_div_prolog
03E0 FD37 SBRC R19,7
03E1 D053 RCALL neg_R16_R19
03E2 FDB7 SBRC R27,7
03E3 D05A RCALL neg_R24_R27
03E4 2477 CLR R7
03E5 2488 CLR R8
03E6 2499 CLR R9
03E7 24AA CLR R10
03E8 24BB CLR R11
03E9 D041 RCALL tst_R16_R19
03EA F0C1 BEQ 0x0403
03EB D044 RCALL tst_R24_R27
03EC F0B1 BEQ 0x0403
03ED E2E8 LDI R30,0x28
03EE 0F00 LSL R16
03EF 1F11 ROL R17
03F0 1F22 ROL R18
03F1 1F33 ROL R19
03F2 1C77 ROL R7
03F3 1C88 ROL R8
03F4 1C99 ROL R9
03F5 1CAA ROL R10
03F6 1CBB ROL R11
03F7 1688 CP R8,R24
03F8 0699 CPC R9,R25
03F9 06AA CPC R10,R26
03FA 06BB CPC R11,R27
03FB F028 BCS 0x0401
03FC 1A88 SUB R8,R24
03FD 0A99 SBC R9,R25
03FE 0AAA SBC R10,R26
03FF 0ABB SBC R11,R27
0400 9503 INC R16
0401 95EA DEC R30
0402 F759 BNE 0x03EE
0403 F426 BRTC 0x0408
0404 2D08 MOV R16,R8
0405 2D19 MOV R17,R9
0406 2D2A MOV R18,R10
0407 2D3B MOV R19,R11
0408 C013 RJMP long_div_epilog
long_div_prolog:
0409 927A ST R7,-Y
040A 928A ST R8,-Y
040B 929A ST R9,-Y
040C 92AA ST R10,-Y
040D 92BA ST R11,-Y
040E 92CA ST R12,-Y
040F 93EA ST R30,-Y
0410 938A ST R24,-Y
0411 939A ST R25,-Y
0412 93AA ST R26,-Y
0413 93BA ST R27,-Y
0414 858B LDD R24,Y+11
0415 859C LDD R25,Y+12
0416 85AD LDD R26,Y+13
0417 85BE LDD R27,Y+14
0418 2EC3 MOV R12,R19
0419 F00E BRTS 0x041B
041A 26CB EOR R12,R27
041B 9508 RET
long_div_epilog:
041C FCC7 SBRC R12,7
041D D017 RCALL neg_R16_R19
041E 91B9 LD R27,Y+
041F 91A9 LD R26,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -