⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ylf240128a-3.lis

📁 自己编制的北京友力发公司的液晶显示模块驱动程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 012E                   .dbline 177
 012E 4030              cpi R20,0
 0130 4507              cpc R20,R21
 0132 C9F7              brne L21
 0134           X0:
 0134                   .dbline 179
 0134           ;         writeauto(0x05);
 0134           ;     writecode(AWROFF); //关闭自动写状态
 0134 02EB              ldi R16,178
 0136 82DF              xcall _writecode
 0138                   .dbline -2
 0138           L20:
 0138 2196              adiw R28,1
 013A 0E940000          xcall pop_gset1
 013E                   .dbline 0 ; func end
 013E 0895              ret
 0140                   .dbsym r cl_count 20 i
 0140                   .dbend
 0140                   .dbfunc e dispauto _dispauto fV
 0140           ;              i -> R20
 0140           ;        address -> R22,R23
 0140           ;              j -> R12
 0140           ;         column -> R10
 0140           ;           line -> y+9
 0140           ;              y -> R22
 0140           ;              x -> R20
                        .even
 0140           _dispauto::
 0140 0E940000          xcall push_gset4
 0144 622F              mov R22,R18
 0146 402F              mov R20,R16
 0148 2197              sbiw R28,1
 014A AB84              ldd R10,y+11
 014C                   .dbline -1
 014C                   .dbline 203
 014C           ; }
 014C           ; 
 014C           ; //16*8点阵显示
 014C           ; //x:0~29; y:0~127
 014C           ; /*
 014C           ; void disp168(uchar x,uchar y)
 014C           ; {
 014C           ; uchar i;
 014C           ; uint address;
 014C           ; address=y*30+x+0x0800; //计算显示存储器地址
 014C           ; for(i=8;i>0;i--)
 014C           ; {
 014C           ; twoparameter((uchar)(address),(uchar)(address>>8),0x24); //设置显示存储器地址
 014C           ; oneparameter(*ptr0++,0xc0); //点阵左部
 014C           ; oneparameter(*ptr0++,0xc0); //点阵右部
 014C           ; address+=30; //修改显示存储器地址
 014C           ; }
 014C           ; }
 014C           ; */
 014C           ; 
 014C           ; //连续写点阵
 014C           ; //x:0~29; y:0~127
 014C           ; void dispauto(uchar x,uchar y,uchar line,uchar column)
 014C           ; {
 014C                   .dbline 206
 014C           ;     uchar i,j;
 014C           ;     uint address;
 014C           ;     address=y*30+x+480; //计算显示存储器地址
 014C 8EE1              ldi R24,30
 014E 869F              mul R24,R22
 0150 B001              movw R22,R0
 0152 242E              mov R2,R20
 0154 3324              clr R3
 0156 620D              add R22,R2
 0158 731D              adc R23,R3
 015A 6052              subi R22,32  ; offset = 480
 015C 7E4F              sbci R23,254
 015E                   .dbline 207
 015E           ;     for(i=line;i>0;i--) //显示line行
 015E 4985              ldd R20,y+9
 0160 14C0              xjmp L29
 0162           L26:
 0162                   .dbline 208
 0162           ;     {
 0162                   .dbline 209
 0162           ;         twoparameter((uchar)(address),(uchar)(address>>8),0x24); //设置显示存储器地址
 0162 84E2              ldi R24,36
 0164 8883              std y+0,R24
 0166 9B01              movw R18,R22
 0168 232F              mov R18,R19
 016A 3327              clr R19
 016C 062F              mov R16,R22
 016E A1DF              xcall _twoparameter
 0170                   .dbline 210
 0170           ;         writecode(0xb0); //数据自动写状态
 0170 00EB              ldi R16,176
 0172 64DF              xcall _writecode
 0174                   .dbline 211
 0174           ;         for(j=column;j>0;j--) //共column列
 0174 CA2C              mov R12,R10
 0176 01C0              xjmp L33
 0178           L30:
 0178                   .dbline 212
 0178                   .dbline 214
 0178           L31:
 0178                   .dbline 211
 0178 CA94              dec R12
 017A           L33:
 017A                   .dbline 211
 017A 2224              clr R2
 017C 2C14              cp R2,R12
 017E E0F3              brlo L30
 0180                   .dbline 215
 0180 02EB              ldi R16,178
 0182 5CDF              xcall _writecode
 0184                   .dbline 216
 0184 625E              subi R22,226  ; offset = 30
 0186 7F4F              sbci R23,255
 0188                   .dbline 217
 0188           L27:
 0188                   .dbline 207
 0188 4A95              dec R20
 018A           L29:
 018A                   .dbline 207
 018A 2224              clr R2
 018C 2416              cp R2,R20
 018E 48F3              brlo L26
 0190                   .dbline -2
 0190           L25:
 0190 2196              adiw R28,1
 0192 0E940000          xcall pop_gset4
 0196                   .dbline 0 ; func end
 0196 0895              ret
 0198                   .dbsym r i 20 c
 0198                   .dbsym r address 22 i
 0198                   .dbsym r j 12 c
 0198                   .dbsym r column 10 c
 0198                   .dbsym l line 9 c
 0198                   .dbsym r y 22 c
 0198                   .dbsym r x 20 c
 0198                   .dbend
 0198                   .dbfunc e main _main fV
 0198           ;          count -> R20
                        .even
 0198           _main::
 0198 2197              sbiw R28,1
 019A                   .dbline -1
 019A                   .dbline 221
 019A           ;         {
 019A           ;         //writeauto(*ptr0); //自动写入数据
 019A           ;         }
 019A           ;         writecode(0xb2); //关闭自动写状态
 019A           ;         address+=30; //修改显示存储器地址
 019A           ;     }
 019A           ; }
 019A           ; 
 019A           ; void main()
 019A           ; {
 019A                   .dbline 223
 019A           ;     unsigned char count;
 019A           ;     DDRA|=0xff;
 019A 8AB3              in R24,0x1a
 019C 8F6F              ori R24,255
 019E 8ABB              out 0x1a,R24
 01A0                   .dbline 224
 01A0           ;     DDRB|=0xff;
 01A0 87B3              in R24,0x17
 01A2 8F6F              ori R24,255
 01A4 87BB              out 0x17,R24
 01A6                   .dbline 225
 01A6           ;     PORTA|=0xff;
 01A6 8BB3              in R24,0x1b
 01A8 8F6F              ori R24,255
 01AA 8BBB              out 0x1b,R24
 01AC                   .dbline 226
 01AC           ;     PORTB|=0xff;
 01AC 88B3              in R24,0x18
 01AE 8F6F              ori R24,255
 01B0 88BB              out 0x18,R24
 01B2                   .dbline 227
 01B2           ;     lcd_init();
 01B2 8CDF              xcall _lcd_init
 01B4                   .dbline 228
 01B4           ;     lcd_clear();
 01B4 ABDF              xcall _lcd_clear
 01B6                   .dbline 229
 01B6           ;     twoparameter(0x00,0x14,ADPSET);
 01B6 84E2              ldi R24,36
 01B8 8883              std y+0,R24
 01BA 24E1              ldi R18,20
 01BC 0027              clr R16
 01BE 79DF              xcall _twoparameter
 01C0                   .dbline 230
 01C0           ;     writecode(AWRON); //数据自动写状态
 01C0 00EB              ldi R16,176
 01C2 3CDF              xcall _writecode
 01C4                   .dbline 231
 01C4           ;     for(count=0;count<64;count++)//写入CG
 01C4 4427              clr R20
 01C6 09C0              xjmp L38
 01C8           L35:
 01C8                   .dbline 232
 01C8                   .dbline 233
 01C8 80E0              ldi R24,<_EXTCG
 01CA 90E0              ldi R25,>_EXTCG
 01CC E42F              mov R30,R20
 01CE FF27              clr R31
 01D0 E80F              add R30,R24
 01D2 F91F              adc R31,R25
 01D4 0491              lpm R16,Z
 01D6 52DF              xcall _writeauto
 01D8                   .dbline 234
 01D8           L36:
 01D8                   .dbline 231
 01D8 4395              inc R20
 01DA           L38:
 01DA                   .dbline 231
 01DA 4034              cpi R20,64
 01DC A8F3              brlo L35
 01DE                   .dbline 235
 01DE           ;     {
 01DE           ;         writeauto(EXTCG[count]);
 01DE           ;     }
 01DE           ;     writecode(AWROFF);
 01DE 02EB              ldi R16,178
 01E0 2DDF              xcall _writecode
 01E2                   .dbline 237
 01E2           ;     
 01E2           ;     twoparameter(0x40,0x00,ADPSET);
 01E2 84E2              ldi R24,36
 01E4 8883              std y+0,R24
 01E6 2227              clr R18
 01E8 00E4              ldi R16,64
 01EA 63DF              xcall _twoparameter
 01EC                   .dbline 238
 01EC           ;     writecode(AWRON); //数据自动写状态
 01EC 00EB              ldi R16,176
 01EE 26DF              xcall _writecode
 01F0                   .dbline 239
 01F0           ;     for(count=0;count<13;count++)//写入CG
 01F0 4427              clr R20
 01F2 09C0              xjmp L42
 01F4           L39:
 01F4                   .dbline 240
 01F4                   .dbline 241
 01F4 80E0              ldi R24,<_TXPRT
 01F6 90E0              ldi R25,>_TXPRT
 01F8 E42F              mov R30,R20
 01FA FF27              clr R31
 01FC E80F              add R30,R24
 01FE F91F              adc R31,R25
 0200 0491              lpm R16,Z
 0202 3CDF              xcall _writeauto
 0204                   .dbline 242
 0204           L40:
 0204                   .dbline 239
 0204 4395              inc R20
 0206           L42:
 0206                   .dbline 239
 0206 4D30              cpi R20,13
 0208 A8F3              brlo L39
 020A                   .dbline 243
 020A           ;     {
 020A           ;         writeauto(TXPRT[count]);
 020A           ;     }
 020A           ;     writecode(AWROFF);
 020A 02EB              ldi R16,178
 020C 17DF              xcall _writecode
 020E           L43:
 020E                   .dbline 244
 020E           L44:
 020E                   .dbline 244
 020E FFCF              xjmp L43
 0210           X1:
 0210                   .dbline -2
 0210           L34:
 0210 2196              adiw R28,1
 0212                   .dbline 0 ; func end
 0212 0895              ret
 0214                   .dbsym r count 20 c
 0214                   .dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -