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 + -
显示快捷键?