lcd1286418.lis
来自「3D LCD for running graphical lCDs」· LIS 代码 · 共 1,280 行 · 第 1/4 页
LIS
1,280 行
0098 ; NOP;
0098 0000 nop
009A .dbline 142
009A ; NOP;
009A 0000 nop
009C .dbline 143
009C ; LCDDDRDATA = 0XFF; /* WRITE DATA TO LCD */
009C 8FEF ldi R24,255
009E 80936100 sts 97,R24
00A2 .dbline 144
00A2 ; LCDPORTDATA = data;
00A2 A0926200 sts 98,R10
00A6 .dbline 145
00A6 ; ClrBit(LCDPORTEN,LCDEN); /* EN = 0 */
00A6 C398 cbi 0x18,3
00A8 .dbline 146
00A8 ; NOP; /* DELAY AT LEAST 10ns */
00A8 0000 nop
00AA .dbline 147
00AA ; SetBit(LCDPORTCS1,LCDCS1); /* CHIP DISABLE */
00AA 1A9A sbi 0x3,2
00AC .dbline 148
00AC ; SetBit(LCDPORTCS2,LCDCS2);
00AC 1B9A sbi 0x3,3
00AE .dbline 149
00AE ; NOP;
00AE 0000 nop
00B0 .dbline -2
00B0 L10:
00B0 .dbline 0 ; func end
00B0 4991 ld R20,y+
00B2 A990 ld R10,y+
00B4 0895 ret
00B6 .dbsym r data 10 c
00B6 .dbsym r chiplr 20 c
00B6 .dbend
00B6 .dbfunc e LcdRdSta _LcdRdSta fc
00B6 ; temp -> R10
00B6 ; chiplr -> R16
.even
00B6 _LcdRdSta::
00B6 AA92 st -y,R10
00B8 .dbline -1
00B8 .dbline 157
00B8 ; }
00B8 ;
00B8 ; /*****************************************
00B8 ; * FUNCTION NAME: LcdRdSta
00B8 ; * DESCRIPTION: Read Status From LCD
00B8 ; /*****************************************/
00B8 ; unsigned char LcdRdSta(unsigned char chiplr)
00B8 ; {
00B8 .dbline 159
00B8 ; unsigned char temp;
00B8 ; ClrBit(LCDPORTRS,LCDRS); /* RS = 0 ,COMMAND */
00B8 C298 cbi 0x18,2
00BA .dbline 160
00BA ; SetBit(LCDPORTRW,LCDRW); /* RW = 1 ,READ */
00BA 1C9A sbi 0x3,4
00BC .dbline 161
00BC ; if(chiplr == 'L') /* CS = 0 ,CHIP SELECT */
00BC 0C34 cpi R16,76
00BE 11F4 brne L19
00C0 X6:
00C0 .dbline 162
00C0 ; ClrBit(LCDPORTCS1,LCDCS1);
00C0 1A98 cbi 0x3,2
00C2 06C0 xjmp L20
00C4 L19:
00C4 .dbline 163
00C4 ; else if(chiplr == 'R')
00C4 0235 cpi R16,82
00C6 11F4 brne L21
00C8 X7:
00C8 .dbline 164
00C8 ; ClrBit(LCDPORTCS2,LCDCS2);
00C8 1B98 cbi 0x3,3
00CA 02C0 xjmp L22
00CC L21:
00CC .dbline 166
00CC ; else
00CC ; {
00CC .dbline 167
00CC ; ClrBit(LCDPORTCS1,LCDCS1);
00CC 1A98 cbi 0x3,2
00CE .dbline 168
00CE ; ClrBit(LCDPORTCS2,LCDCS2);
00CE 1B98 cbi 0x3,3
00D0 .dbline 169
00D0 ; }
00D0 L22:
00D0 L20:
00D0 .dbline 170
00D0 ; NOP; /* DELAY AT LEAS;T 140ns */
00D0 0000 nop
00D2 .dbline 171
00D2 ; NOP;
00D2 0000 nop
00D4 .dbline 172
00D4 ; SetBit(LCDPORTEN,LCDEN); /* EN = 1 */
00D4 C39A sbi 0x18,3
00D6 .dbline 173
00D6 ; NOP; /* DELAY AT LEAST 450ns */
00D6 0000 nop
00D8 .dbline 174
00D8 ; NOP;
00D8 0000 nop
00DA .dbline 175
00DA ; NOP;
00DA 0000 nop
00DC .dbline 176
00DC ; NOP;
00DC 0000 nop
00DE .dbline 177
00DE ; NOP;
00DE 0000 nop
00E0 .dbline 178
00E0 ; LCDDDRDATA = 0X00; /* READ DATA FROM LCD */
00E0 2224 clr R2
00E2 20926100 sts 97,R2
00E6 .dbline 179
00E6 ; temp = LCDPINDATA;
00E6 A0B0 in R10,0x0
00E8 .dbline 180
00E8 ; ClrBit(LCDPORTEN,LCDEN); /* EN = 0 */
00E8 C398 cbi 0x18,3
00EA .dbline 181
00EA ; NOP; /* DELAY AT LEAST 10ns */
00EA 0000 nop
00EC .dbline 182
00EC ; SetBit(LCDPORTCS1,LCDCS1); /* CHIP DISABLE */
00EC 1A9A sbi 0x3,2
00EE .dbline 183
00EE ; SetBit(LCDPORTCS2,LCDCS2);
00EE 1B9A sbi 0x3,3
00F0 .dbline 184
00F0 ; NOP;
00F0 0000 nop
00F2 .dbline 185
00F2 ; return temp;
00F2 0A2D mov R16,R10
00F4 .dbline -2
00F4 L18:
00F4 .dbline 0 ; func end
00F4 A990 ld R10,y+
00F6 0895 ret
00F8 .dbsym r temp 10 c
00F8 .dbsym r chiplr 16 c
00F8 .dbend
00F8 .dbfunc e LcdRdDat _LcdRdDat fc
00F8 ; temp -> R10
00F8 ; chiplr -> R20
.even
00F8 _LcdRdDat::
00F8 AA92 st -y,R10
00FA 4A93 st -y,R20
00FC 402F mov R20,R16
00FE .dbline -1
00FE .dbline 193
00FE ; }
00FE ;
00FE ; /*****************************************
00FE ; * FUNCTION NAME: LcdRdDat
00FE ; * DESCRIPTION: Read Data From LCD
00FE ; /*****************************************/
00FE ; unsigned char LcdRdDat(unsigned char chiplr)
00FE ; {
00FE L24:
00FE .dbline 196
00FE ; unsigned char temp;
00FE ; while(LcdBusy() == 0) /* IF LCD BUSY,WAIT... */
00FE ; ;
00FE L25:
00FE .dbline 195
00FE 23D0 xcall _LcdBusy
0100 0023 tst R16
0102 E9F3 breq L24
0104 X8:
0104 .dbline 197
0104 ; SetBit(LCDPORTRS,LCDRS); /* RS = 1 ,DATA */
0104 C29A sbi 0x18,2
0106 .dbline 198
0106 ; SetBit(LCDPORTRW,LCDRW); /* RW = 1 ,READ */
0106 1C9A sbi 0x3,4
0108 .dbline 199
0108 ; if(chiplr == 'L') /* CS = 0 ,CHIP SELECT */
0108 4C34 cpi R20,76
010A 11F4 brne L27
010C X9:
010C .dbline 200
010C ; ClrBit(LCDPORTCS1,LCDCS1);
010C 1A98 cbi 0x3,2
010E 06C0 xjmp L28
0110 L27:
0110 .dbline 201
0110 ; else if(chiplr == 'R')
0110 4235 cpi R20,82
0112 11F4 brne L29
0114 X10:
0114 .dbline 202
0114 ; ClrBit(LCDPORTCS2,LCDCS2);
0114 1B98 cbi 0x3,3
0116 02C0 xjmp L30
0118 L29:
0118 .dbline 204
0118 ; else
0118 ; {
0118 .dbline 205
0118 ; ClrBit(LCDPORTCS1,LCDCS1);
0118 1A98 cbi 0x3,2
011A .dbline 206
011A ; ClrBit(LCDPORTCS2,LCDCS2);
011A 1B98 cbi 0x3,3
011C .dbline 207
011C ; }
011C L30:
011C L28:
011C .dbline 208
011C ; NOP; /* DELAY AT LEAS;T 140ns */
011C 0000 nop
011E .dbline 209
011E ; NOP;
011E 0000 nop
0120 .dbline 210
0120 ; SetBit(LCDPORTEN,LCDEN); /* EN = 1 */
0120 C39A sbi 0x18,3
0122 .dbline 211
0122 ; NOP; /* DELAY AT LEAST 450ns */
0122 0000 nop
0124 .dbline 212
0124 ; NOP;
0124 0000 nop
0126 .dbline 213
0126 ; NOP;
0126 0000 nop
0128 .dbline 214
0128 ; NOP;
0128 0000 nop
012A .dbline 215
012A ; NOP;
012A 0000 nop
012C .dbline 216
012C ; LCDDDRDATA = 0X00; /* READ DATA FROM LCD */
012C 2224 clr R2
012E 20926100 sts 97,R2
0132 .dbline 217
0132 ; temp = LCDPINDATA;
0132 A0B0 in R10,0x0
0134 .dbline 218
0134 ; ClrBit(LCDPORTEN,LCDEN); /* EN = 0 */
0134 C398 cbi 0x18,3
0136 .dbline 219
0136 ; NOP; /* DELAY AT LEAST 10ns */
0136 0000 nop
0138 .dbline 220
0138 ; SetBit(LCDPORTCS1,LCDCS1); /* CHIP DISABLE */
0138 1A9A sbi 0x3,2
013A .dbline 221
013A ; SetBit(LCDPORTCS2,LCDCS2);
013A 1B9A sbi 0x3,3
013C .dbline 222
013C ; NOP;
013C 0000 nop
013E .dbline 223
013E ; return temp;
013E 0A2D mov R16,R10
0140 .dbline -2
0140 L23:
0140 .dbline 0 ; func end
0140 4991 ld R20,y+
0142 A990 ld R10,y+
0144 0895 ret
0146 .dbsym r temp 10 c
0146 .dbsym r chiplr 20 c
0146 .dbend
0146 .dbfunc e LcdBusy _LcdBusy fc
0146 ; temp2 -> R20
0146 ; temp1 -> R22
.even
0146 _LcdBusy::
0146 4A93 st -y,R20
0148 6A93 st -y,R22
014A .dbline -1
014A .dbline 233
014A ; }
014A ;
014A ; /*****************************************
014A ; * FUNCTION NAME: LcdBusy
014A ; * DESCRIPTION: LCD BUSY OR NOT
014A ; * BUSY-RETURN 0
014A ; * NOT BUSY-RETURN 1
014A ; /*****************************************/
014A ; unsigned char LcdBusy(void)
014A ; {
014A .dbline 235
014A ; unsigned char temp1,temp2;
014A ; temp1 = LcdRdSta('L'); /* READ LCD STA. */
014A 0CE4 ldi R16,76
014C B4DF xcall _LcdRdSta
014E 602F mov R22,R16
0150 .dbline 236
0150 ; temp1 = temp1&0X80;
0150 6078 andi R22,128
0152 .dbline 237
0152 ; temp2 = LcdRdSta('R');
0152 02E5 ldi R16,82
0154 B0DF xcall _LcdRdSta
0156 402F mov R20,R16
0158 .dbline 238
0158 ; temp2 = temp2&0X80;
0158 4078 andi R20,128
015A .dbline 239
015A ; if(temp1|temp2)
015A 262E mov R2,R22
015C 242A or R2,R20
015E 11F0 breq L32
0160 X11:
0160 .dbline 240
0160 ; return 0;
0160 0027 clr R16
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?