📄 lcd.lis
字号:
00C4 ; Command -> R20
.even
00C4 _SdCmd::
00C4 0E940000 xcall push_gset1
00C8 402F mov R20,R16
00CA .dbline -1
00CA .dbline 77
00CA ; NOP();
00CA ; }
00CA ; //-------------------------------------------------------------------------------
00CA ; // IO Routine
00CA ; // LCD“命令字”发送
00CA ; //-------------------------------------------------------------------------------
00CA ; void SdCmd(UINT8 Command) // send command
00CA ; {
00CA .dbline 78
00CA ; SPI_SS |=1; //屏蔽3548
00CA C09A sbi 0x18,0
00CC .dbline 79
00CC ; LCD_control &=~(1<<LCD_CS); // chip select
00CC 9698 cbi 0x12,6
00CE .dbline 80
00CE ; LCD_control &=~(1<<LCD_RS); // for command
00CE 9498 cbi 0x12,4
00D0 .dbline 81
00D0 ; SPI_SendByte(Command);
00D0 042F mov R16,R20
00D2 1127 clr R17
00D4 0E940000 xcall _SPI_SendByte
00D8 .dbline 82
00D8 ; LCD_control |=1<<LCD_CS; // chip select
00D8 969A sbi 0x12,6
00DA .dbline -2
00DA L10:
00DA 0E940000 xcall pop_gset1
00DE .dbline 0 ; func end
00DE 0895 ret
00E0 .dbsym r Command 20 c
00E0 .dbend
00E0 .dbfunc e SdData _SdData fV
00E0 ; DData -> R20
.even
00E0 _SdData::
00E0 0E940000 xcall push_gset1
00E4 402F mov R20,R16
00E6 .dbline -1
00E6 .dbline 88
00E6 ; }
00E6 ; //-------------------------------------------------------------------------------
00E6 ; //LCD 数据发送
00E6 ; //-------------------------------------------------------------------------------
00E6 ; void SdData(UINT8 DData) // send data
00E6 ; {
00E6 .dbline 89
00E6 ; SPI_SS |=1; //屏蔽3548
00E6 C09A sbi 0x18,0
00E8 .dbline 90
00E8 ; LCD_control &=~(1<<LCD_CS); // chip select
00E8 9698 cbi 0x12,6
00EA .dbline 91
00EA ; LCD_control |=1<<LCD_RS; // for data
00EA 949A sbi 0x12,4
00EC .dbline 92
00EC ; SPI_SendByte(DData);
00EC 042F mov R16,R20
00EE 1127 clr R17
00F0 0E940000 xcall _SPI_SendByte
00F4 .dbline 93
00F4 ; LCD_control |=1<<LCD_CS; // chip select
00F4 969A sbi 0x12,6
00F6 .dbline -2
00F6 L11:
00F6 0E940000 xcall pop_gset1
00FA .dbline 0 ; func end
00FA 0895 ret
00FC .dbsym r DData 20 c
00FC .dbend
00FC .dbfunc e LCDSHOW _LCDSHOW fV
00FC ; i -> R20
00FC ; j -> R14
00FC ; date -> R22
00FC ; n -> R10
00FC ; m -> R12
00FC ; page -> y+10
.even
00FC _LCDSHOW::
00FC 0E940000 xcall push_arg4
0100 0E940000 xcall push_gset5
0104 C22E mov R12,R18
0106 AE84 ldd R10,y+14
0108 6889 ldd R22,y+16
010A .dbline -1
010A .dbline 102
010A ; }
010A ; //-------------------------------------------------------------------------------
010A ; //LCD 显示字符和数字
010A ; // void LCDSHOW(UINT8 page,UINT8 m,UINT8 n,UINT8 date)
010A ; // LCDSHOW( page, 0x15, 8, 12);
010A ; // M () N
010A ; //-------------------------------------------------------------------------------
010A ; void LCDSHOW(UINT8 page,UINT8 m,UINT8 n,UINT8 date)
010A ; {
010A .dbline 105
010A ;
010A ; UINT8 i,j;
010A ; for(i=0;i<2;i++)
010A 4427 clr R20
010C 30C0 xjmp L16
010E L13:
010E .dbline 106
010E ; {
010E .dbline 107
010E ; SdCmd(0xb0+i+page);
010E 042F mov R16,R20
0110 0055 subi R16,80 ; addi 176
0112 0A84 ldd R0,y+10
0114 000D add R16,R0
0116 D6DF xcall _SdCmd
0118 .dbline 108
0118 ; SdCmd(m);
0118 0C2D mov R16,R12
011A D4DF xcall _SdCmd
011C .dbline 109
011C ; SdCmd(n);
011C 0A2D mov R16,R10
011E D2DF xcall _SdCmd
0120 .dbline 110
0120 ; for(j=0;j<8;j++)
0120 EE24 clr R14
0122 21C0 xjmp L20
0124 L17:
0124 .dbline 111
0124 .dbline 112
0124 88E0 ldi R24,8
0126 849F mul R24,R20
0128 EE2D mov R30,R14
012A FF27 clr R31
012C E00D add R30,R0
012E F11D adc R31,R1
0130 80E1 ldi R24,16
0132 869F mul R24,R22
0134 E00D add R30,R0
0136 F11D adc R31,R1
0138 80E0 ldi R24,<_data_hi
013A 90E0 ldi R25,>_data_hi
013C E80F add R30,R24
013E F91F adc R31,R25
0140 0491 lpm R16,Z
0142 CEDF xcall _SdData
0144 .dbline 113
0144 88E0 ldi R24,8
0146 849F mul R24,R20
0148 EE2D mov R30,R14
014A FF27 clr R31
014C E00D add R30,R0
014E F11D adc R31,R1
0150 80E1 ldi R24,16
0152 869F mul R24,R22
0154 E00D add R30,R0
0156 F11D adc R31,R1
0158 80E0 ldi R24,<_data_hi
015A 90E0 ldi R25,>_data_hi
015C E80F add R30,R24
015E F91F adc R31,R25
0160 0491 lpm R16,Z
0162 BEDF xcall _SdData
0164 .dbline 114
0164 L18:
0164 .dbline 110
0164 E394 inc R14
0166 L20:
0166 .dbline 110
0166 8E2D mov R24,R14
0168 8830 cpi R24,8
016A E0F2 brlo L17
016C .dbline 115
016C L14:
016C .dbline 105
016C 4395 inc R20
016E L16:
016E .dbline 105
016E 4230 cpi R20,2
0170 08F4 brsh X1
0172 CDCF xjmp L13
0174 X1:
0174 .dbline -2
0174 L12:
0174 0E940000 xcall pop_gset5
0178 2496 adiw R28,4
017A .dbline 0 ; func end
017A 0895 ret
017C .dbsym r i 20 c
017C .dbsym r j 14 c
017C .dbsym r date 22 c
017C .dbsym r n 10 c
017C .dbsym r m 12 c
017C .dbsym l page 10 c
017C .dbend
017C .dbfunc e SdPage _SdPage fV
017C ; i -> R20
017C ; j -> R22
.even
017C _SdPage::
017C 0E940000 xcall push_gset2
0180 .dbline -1
0180 .dbline 122
0180 ; {
0180 ; SdData(data_hi[j+8*i+8*2*date]); //为什么要写两次呢? 0--7 +8*0
0180 ; SdData(data_hi[j+8*i+8*2*date]); // 0-7 +8*1
0180 ; }
0180 ; }
0180 ; }
0180 ;
0180 ; //-------------------------------------------------------------------------------
0180 ; //清屏
0180 ; //-------------------------------------------------------------------------------
0180 ; void SdPage(void)
0180 ; {
0180 .dbline 124
0180 ; UINT8 i, j;
0180 ; SPCR = 0x50;
0180 80E5 ldi R24,80
0182 8DB9 out 0xd,R24
0184 .dbline 125
0184 ; for(i=0;i<12;i++) // page data
0184 4427 clr R20
0186 12C0 xjmp L25
0188 L22:
0188 .dbline 126
0188 ; {
0188 .dbline 127
0188 ; WDR();
0188 A895 wdr
018A .dbline 128
018A ; SdCmd(0xb0|i ); // select page
018A 042F mov R16,R20
018C 006B ori R16,176
018E 9ADF xcall _SdCmd
0190 .dbline 129
0190 ; SdCmd(0x10); // column address start at 00 (Y7,Y6,Y5)
0190 00E1 ldi R16,16
0192 98DF xcall _SdCmd
0194 .dbline 130
0194 ; SdCmd(0x00); // column address start at 00 (Y4,Y3,Y2,Y1)
0194 0027 clr R16
0196 96DF xcall _SdCmd
0198 .dbline 131
0198 ; for(j=0;j<128;j++)
0198 6627 clr R22
019A 05C0 xjmp L29
019C L26:
019C .dbline 132
019C .dbline 133
019C 0027 clr R16
019E A0DF xcall _SdData
01A0 .dbline 134
01A0 0027 clr R16
01A2 9EDF xcall _SdData
01A4 .dbline 135
01A4 L27:
01A4 .dbline 131
01A4 6395 inc R22
01A6 L29:
01A6 .dbline 131
01A6 6038 cpi R22,128
01A8 C8F3 brlo L26
01AA .dbline 136
01AA L23:
01AA .dbline 125
01AA 4395 inc R20
01AC L25:
01AC .dbline 125
01AC 4C30 cpi R20,12
01AE 60F3 brlo L22
01B0 .dbline 137
01B0 ; {
01B0 ; SdData(0X00); //清屏
01B0 ; SdData(0X00);
01B0 ; }
01B0 ; }
01B0 ; SPCR = 0x54;
01B0 84E5 ldi R24,84
01B2 8DB9 out 0xd,R24
01B4 .dbline -2
01B4 L21:
01B4 0E940000 xcall pop_gset2
01B8 .dbline 0 ; func end
01B8 0895 ret
01BA .dbsym r i 20 c
01BA .dbsym r j 22 c
01BA .dbend
01BA .dbfunc e test _test fV
01BA ; i -> <dead>
01BA ; j -> <dead>
01BA ; k -> R20
01BA ; page -> R22
01BA ; data -> R20
.even
01BA _test::
01BA 0E940000 xcall push_gset2
01BE 622F mov R22,R18
01C0 402F mov R20,R16
01C2 2397 sbiw R28,3
01C4 .dbline -1
01C4 .dbline 141
01C4 ; }
01C4 ;
01C4 ; void test(UINT8 data,UINT8 page)
01C4 ; {
01C4 .dbline 143
01C4 ; UINT8 k,j,i;
01C4 ; SPCR = 0x50;
01C4 80E5 ldi R24,80
01C6 8DB9 out 0xd,R24
01C8 .dbline 144
01C8 ; date[0]=(data&0xf0)>>4;
01C8 842F mov R24,R20
01CA 807F andi R24,240
01CC 8295 swap R24
01CE 8F70 andi R24,#0x0F
01D0 80930000 sts _date,R24
01D4 .dbline 145
01D4 ; date[1]=data&0x0f;
01D4 842F mov R24,R20
01D6 8F70 andi R24,15
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -