📄 7920.lis
字号:
0078 ; SETBIT(LCD_CONTROL_PORT,RS);
0078 C09A sbi 0x18,0
007A .dbline 134
007A ; Send(0xf8);
007A 08EF ldi R16,248
007C E7DF xcall _Send
007E .dbline 135
007E ; Send(scmd&0xf0);
007E 042F mov R16,R20
0080 007F andi R16,240
0082 E4DF xcall _Send
0084 .dbline 136
0084 ; Send(scmd<<4);
0084 042F mov R16,R20
0086 0F70 andi R16,#0x0F
0088 0295 swap R16
008A E0DF xcall _Send
008C .dbline 139
008C ;
008C ; //ST7920CS=0;
008C ; SETBIT(LCD_CONTROL_PORT,RS);
008C C09A sbi 0x18,0
008E .dbline 140
008E ; delay_nus(20);
008E 04E1 ldi R16,20
0090 10E0 ldi R17,0
0092 A7D0 xcall _delay_nus
0094 .dbline -2
0094 L13:
0094 0E940000 xcall pop_gset1
0098 .dbline 0 ; func end
0098 0895 ret
009A .dbsym r scmd 20 c
009A .dbend
009A .dbfunc e SdData _SdData fV
009A ; DData -> R20
.even
009A _SdData::
009A 0E940000 xcall push_gset1
009E 402F mov R20,R16
00A0 .dbline -1
00A0 .dbline 145
00A0 ;
00A0 ; }
00A0 ;
00A0 ; void SdData(unsigned char DData)
00A0 ; {
00A0 .dbline 147
00A0 ; //ST7920CS=1;
00A0 ; SETBIT(LCD_CONTROL_PORT,RS);
00A0 C09A sbi 0x18,0
00A2 .dbline 148
00A2 ; Send(0xfa);
00A2 0AEF ldi R16,250
00A4 D3DF xcall _Send
00A6 .dbline 149
00A6 ; Send(DData&0xf0);
00A6 042F mov R16,R20
00A8 007F andi R16,240
00AA D0DF xcall _Send
00AC .dbline 150
00AC ; Send(DData<<4);
00AC 042F mov R16,R20
00AE 0F70 andi R16,#0x0F
00B0 0295 swap R16
00B2 CCDF xcall _Send
00B4 .dbline 153
00B4 ;
00B4 ; //ST7920CS=0;
00B4 ; SETBIT(LCD_CONTROL_PORT,RS);
00B4 C09A sbi 0x18,0
00B6 .dbline 154
00B6 ; delay_nus(20);
00B6 04E1 ldi R16,20
00B8 10E0 ldi R17,0
00BA 93D0 xcall _delay_nus
00BC .dbline -2
00BC L14:
00BC 0E940000 xcall pop_gset1
00C0 .dbline 0 ; func end
00C0 0895 ret
00C2 .dbsym r DData 20 c
00C2 .dbend
00C2 .dbfunc e main _main fV
.even
00C2 _main::
00C2 .dbline -1
00C2 .dbline 159
00C2 ;
00C2 ; }
00C2 ;
00C2 ; void main(void)
00C2 ; {
00C2 .dbline 161
00C2 ;
00C2 ; CLI(); // disable interrupts
00C2 F894 cli
00C4 .dbline 163
00C4 ;
00C4 ; initLCDM();
00C4 9DDF xcall _initLCDM
00C6 13C0 xjmp L17
00C8 L16:
00C8 .dbline 166
00C8 .dbline 167
00C8 00E2 ldi R16,32
00CA D3DF xcall _SdCmd
00CC .dbline 168
00CC 01E0 ldi R16,1
00CE D1DF xcall _SdCmd
00D0 .dbline 169
00D0 04E6 ldi R16,100
00D2 10E0 ldi R17,0
00D4 9FD0 xcall _delay_nms
00D6 .dbline 171
00D6 00E0 ldi R16,<_TextLogo
00D8 10E0 ldi R17,>_TextLogo
00DA 35D0 xcall _WriteTextScreen2
00DC .dbline 172
00DC 0CED ldi R16,1500
00DE 15E0 ldi R17,5
00E0 99D0 xcall _delay_nms
00E2 .dbline 174
00E2 00E0 ldi R16,<L19
00E4 10E0 ldi R17,>L19
00E6 2FD0 xcall _WriteTextScreen2
00E8 .dbline 175
00E8 0CED ldi R16,1500
00EA 15E0 ldi R17,5
00EC 93D0 xcall _delay_nms
00EE .dbline 178
00EE L17:
00EE .dbline 165
00EE ECCF xjmp L16
00F0 X0:
00F0 .dbline -2
00F0 L15:
00F0 .dbline 0 ; func end
00F0 0895 ret
00F2 .dbend
00F2 .dbfunc e DispSetCursor _DispSetCursor fV
00F2 ; i -> R20
00F2 ; ColumnNum -> R22
00F2 ; LineNum -> R10
.even
00F2 _DispSetCursor::
00F2 0E940000 xcall push_gset3
00F6 622F mov R22,R18
00F8 A02E mov R10,R16
00FA .dbline -1
00FA .dbline 184
00FA ;
00FA ; while(1)
00FA ; {
00FA ; SdCmd(0x20); // 8bit I/F, basic command, graphic off
00FA ; SdCmd(0x01); // clr text screen
00FA ; delay_nms(100);
00FA ;
00FA ; WriteTextScreen2(TextLogo);
00FA ; delay_nms(1500);
00FA ;
00FA ; WriteTextScreen2("世界你好12345678901234567890");
00FA ; delay_nms(1500);
00FA ;
00FA ;
00FA ; }
00FA ;
00FA ;
00FA ; }
00FA ;
00FA ; void DispSetCursor(unsigned char LineNum, unsigned char ColumnNum)
00FA ; {
00FA .dbline 186
00FA ;
00FA ; unsigned char i=0x00;
00FA 4427 clr R20
00FC .dbline 187
00FC ; switch(LineNum&0x0f) //确定行号
00FC 8A2D mov R24,R10
00FE 9927 clr R25
0100 8F70 andi R24,15
0102 9070 andi R25,0
0104 5C01 movw R10,R24
0106 8030 cpi R24,0
0108 8907 cpc R24,R25
010A 71F0 breq L24
010C X1:
010C C501 movw R24,R10
010E 8130 cpi R24,1
0110 E0E0 ldi R30,0
0112 9E07 cpc R25,R30
0114 59F0 breq L25
0116 8230 cpi R24,2
0118 E0E0 ldi R30,0
011A 9E07 cpc R25,R30
011C 49F0 breq L26
011E 8330 cpi R24,3
0120 E0E0 ldi R30,0
0122 9E07 cpc R25,R30
0124 39F0 breq L27
0126 07C0 xjmp L22
0128 X2:
0128 .dbline 188
0128 ; {
0128 L24:
0128 .dbline 190
0128 ; case 0x00:
0128 ; i=0x80;
0128 40E8 ldi R20,128
012A .dbline 191
012A ; break;
012A 05C0 xjmp L22
012C L25:
012C .dbline 193
012C ; case 0x01:
012C ; i=0x90;
012C 40E9 ldi R20,144
012E .dbline 194
012E ; break;
012E 03C0 xjmp L22
0130 L26:
0130 .dbline 196
0130 ; case 0x02:
0130 ; i=0x88;
0130 48E8 ldi R20,136
0132 .dbline 197
0132 ; break;
0132 01C0 xjmp L22
0134 L27:
0134 .dbline 199
0134 ; case 0x03:
0134 ; i=0x98;
0134 48E9 ldi R20,152
0136 .dbline 200
0136 ; break;
0136 .dbline 202
0136 ; default :
0136 ; break;
0136 L22:
0136 .dbline 204
0136 ; }
0136 ; i = (ColumnNum&0x0f)|i; //确定列号
0136 862F mov R24,R22
0138 8F70 andi R24,15
013A 482B or R20,R24
013C .dbline 205
013C ; SdCmd(i);
013C 042F mov R16,R20
013E 99DF xcall _SdCmd
0140 .dbline -2
0140 L20:
0140 0E940000 xcall pop_gset3
0144 .dbline 0 ; func end
0144 0895 ret
0146 .dbsym r i 20 c
0146 .dbsym r ColumnNum 22 c
0146 .dbsym r LineNum 10 c
0146 .dbend
0146 .dbfunc e WriteTextScreen2 _WriteTextScreen2 fV
0146 ; i -> R20
0146 ; j -> R10
0146 ; pstr -> R22,R23
.even
0146 _WriteTextScreen2::
0146 0E940000 xcall push_gset3
014A B801 movw R22,R16
014C .dbline -1
014C .dbline 210
014C ;
014C ; }
014C ;
014C ; void WriteTextScreen2(unsigned char *pstr)
014C ; {
014C .dbline 214
014C ; unsigned char i;
014C ; unsigned char j;
014C ;
014C ; SdCmd(0x34); // 8bit I/F, basic command
014C 04E3 ldi R16,52
014E 91DF xcall _SdCmd
0150 .dbline 215
0150 ; SdCmd(0x30); // 8bit I/F, basic command, graphic off
0150 00E3 ldi R16,48
0152 8FDF xcall _SdCmd
0154 .dbline 217
0154 ;
0154 ; for(i=0;i<36;i++) //清空屏幕
0154 4427 clr R20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -