📄 ylf240128a-3.lis
字号:
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 + -