📄 8255.lis
字号:
0112 6038 cpi R22,128
0114 D8F3 brlo L30
0116 X6:
0116 .dbline 402
0116 ; }
0116 L23:
0116 .dbline 386
0116 4395 inc R20
0118 L25:
0118 .dbline 386
0118 4830 cpi R20,8
011A D8F2 brlo L22
011C X7:
011C .dbline -2
011C L21:
011C .dbline 0 ; func end
011C 6991 ld R22,y+
011E 4991 ld R20,y+
0120 0895 ret
0122 .dbsym r k 20 c
0122 .dbsym r j 22 c
0122 .dbend
0122 .dbfunc e disp_zf _disp_zf fV
0122 ; j -> R20
0122 ; i -> R12
0122 ; sz -> y+8
0122 ; X -> R10
0122 ; Y -> R22
.even
0122 _disp_zf::
0122 0E940000 xcall push_xgsetF03C
0126 A22E mov R10,R18
0128 602F mov R22,R16
012A .dbline -1
012A .dbline 407
012A ; }
012A ;
012A ;
012A ; void disp_zf(unsigned char Y,unsigned char X, const unsigned char *sz)
012A ; {
012A .dbline 408
012A ; unsigned char j=0,i=0;
012A 4427 clr R20
012C .dbline 408
012C CC24 clr R12
012E .dbline 409
012E ; for(j=0;j<2;j++)
012E 1BC0 xjmp L38
0130 L35:
0130 .dbline 410
0130 ; {
0130 .dbline 411
0130 ; write_command((Page_Add+Y+j));
0130 062F mov R16,R22
0132 0854 subi R16,72 ; addi 184
0134 040F add R16,R20
0136 99DF xcall _write_command
0138 .dbline 412
0138 ; write_command((Col_Add+X));
0138 0A2D mov R16,R10
013A 005C subi R16,192 ; addi 64
013C 96DF xcall _write_command
013E .dbline 413
013E ; for(i=0;i<6;i++)
013E CC24 clr R12
0140 0EC0 xjmp L42
0142 L39:
0142 .dbline 414
0142 ; write_data(sz[6*j+i]);
0142 86E0 ldi R24,6
0144 849F mul R24,R20
0146 F001 movw R30,R0
0148 2C2C mov R2,R12
014A 3324 clr R3
014C E20D add R30,R2
014E F31D adc R31,R3
0150 0884 ldd R0,y+8
0152 1984 ldd R1,y+9
0154 E00D add R30,R0
0156 F11D adc R31,R1
0158 0691 elpm R16,Z
015A 97DF xcall _write_data
015C L40:
015C .dbline 413
015C C394 inc R12
015E L42:
015E .dbline 413
015E 8C2D mov R24,R12
0160 8630 cpi R24,6
0162 78F3 brlo L39
0164 X8:
0164 .dbline 415
0164 ; }
0164 L36:
0164 .dbline 409
0164 4395 inc R20
0166 L38:
0166 .dbline 409
0166 4230 cpi R20,2
0168 18F3 brlo L35
016A X9:
016A .dbline -2
016A L34:
016A .dbline 0 ; func end
016A 0C940000 xjmp pop_xgsetF03C
016E .dbsym r j 20 c
016E .dbsym r i 12 c
016E .dbsym l sz 8 pkc
016E .dbsym r X 10 c
016E .dbsym r Y 22 c
016E .dbend
016E .dbfunc e disp_hz _disp_hz fV
016E ; j -> R20
016E ; i -> R12
016E ; hz -> y+8
016E ; X -> R10
016E ; Y -> R22
.even
016E _disp_hz::
016E 0E940000 xcall push_xgsetF03C
0172 A22E mov R10,R18
0174 602F mov R22,R16
0176 .dbline -1
0176 .dbline 421
0176 ; }
0176 ;
0176 ; /*---------------------指定位置显示汉字16*16-----------------------*/
0176 ;
0176 ; void disp_hz(unsigned char Y,unsigned char X, const unsigned char *hz)
0176 ; {
0176 .dbline 422
0176 ; unsigned char j=0,i=0;
0176 4427 clr R20
0178 .dbline 422
0178 CC24 clr R12
017A .dbline 423
017A ; for(j=0;j<2;j++)
017A 1BC0 xjmp L47
017C L44:
017C .dbline 424
017C ; {
017C .dbline 425
017C ; write_command((Page_Add+Y+j)); //列在前行在后
017C 062F mov R16,R22
017E 0854 subi R16,72 ; addi 184
0180 040F add R16,R20
0182 73DF xcall _write_command
0184 .dbline 426
0184 ; write_command((Col_Add+X));
0184 0A2D mov R16,R10
0186 005C subi R16,192 ; addi 64
0188 70DF xcall _write_command
018A .dbline 427
018A ; for(i=0;i<12;i++)
018A CC24 clr R12
018C 0EC0 xjmp L51
018E L48:
018E .dbline 428
018E ; write_data(hz[12*j+i]);
018E 8CE0 ldi R24,12
0190 849F mul R24,R20
0192 F001 movw R30,R0
0194 2C2C mov R2,R12
0196 3324 clr R3
0198 E20D add R30,R2
019A F31D adc R31,R3
019C 0884 ldd R0,y+8
019E 1984 ldd R1,y+9
01A0 E00D add R30,R0
01A2 F11D adc R31,R1
01A4 0691 elpm R16,Z
01A6 71DF xcall _write_data
01A8 L49:
01A8 .dbline 427
01A8 C394 inc R12
01AA L51:
01AA .dbline 427
01AA 8C2D mov R24,R12
01AC 8C30 cpi R24,12
01AE 78F3 brlo L48
01B0 X10:
01B0 .dbline 429
01B0 ; }
01B0 L45:
01B0 .dbline 423
01B0 4395 inc R20
01B2 L47:
01B2 .dbline 423
01B2 4230 cpi R20,2
01B4 18F3 brlo L44
01B6 X11:
01B6 .dbline -2
01B6 L43:
01B6 .dbline 0 ; func end
01B6 0C940000 xjmp pop_xgsetF03C
01BA .dbsym r j 20 c
01BA .dbsym r i 12 c
01BA .dbsym l hz 8 pkc
01BA .dbsym r X 10 c
01BA .dbsym r Y 22 c
01BA .dbend
01BA .dbfunc e init_lcd _init_lcd fV
.even
01BA _init_lcd::
01BA .dbline -1
01BA .dbline 434
01BA ; }
01BA ;
01BA ; /*------------------初始化LCD屏--------------------------*/
01BA ; void init_lcd()
01BA ; {
01BA .dbline 435
01BA ; RST0;
01BA 1F98 cbi 0x3,7
01BC .dbline 436
01BC ; delay(1);
01BC 01E0 ldi R16,1
01BE 10E0 ldi R17,0
01C0 1FDF xcall _delay
01C2 .dbline 437
01C2 ; RST1;
01C2 1F9A sbi 0x3,7
01C4 .dbline 438
01C4 ; delay(1);
01C4 01E0 ldi R16,1
01C6 10E0 ldi R17,0
01C8 1BDF xcall _delay
01CA .dbline 440
01CA ;
01CA ; LCDCS21;
01CA 1A9A sbi 0x3,2
01CC .dbline 441
01CC ; LCDCS11;
01CC 199A sbi 0x3,1
01CE .dbline 443
01CE ;
01CE ; delay(100);
01CE 04E6 ldi R16,100
01D0 10E0 ldi R17,0
01D2 16DF xcall _delay
01D4 .dbline 444
01D4 ; write_command(Disp_Off);
01D4 0EE3 ldi R16,62
01D6 49DF xcall _write_command
01D8 .dbline 445
01D8 ; write_command((Page_Add+0));
01D8 08EB ldi R16,184
01DA 47DF xcall _write_command
01DC .dbline 446
01DC ; write_command((Start_Line+0));
01DC 00EC ldi R16,192
01DE 45DF xcall _write_command
01E0 .dbline 447
01E0 ; write_command((Col_Add+0));
01E0 00E4 ldi R16,64
01E2 43DF xcall _write_command
01E4 .dbline 448
01E4 ; write_command((Disp_On));
01E4 0FE3 ldi R16,63
01E6 41DF xcall _write_command
01E8 .dbline -2
01E8 L52:
01E8 .dbline 0 ; func end
01E8 0895 ret
01EA .dbend
01EA .dbfunc e init_IO _init_IO fV
.even
01EA _init_IO::
01EA .dbline -1
01EA .dbline 452
01EA ; }
01EA ;
01EA ; void init_IO()
01EA ; {
01EA .dbline 453
01EA ; DDRE=0xEF;
01EA 8FEE ldi R24,239
01EC 82B9 out 0x2,R24
01EE .dbline 454
01EE ; PORTE=0xff;
01EE 8FEF ldi R24,255
01F0 83B9 out 0x3,R24
01F2 .dbline 455
01F2 ; DDRB=0xff;
01F2 87BB out 0x17,R24
01F4 .dbline 456
01F4 ; PORTB=0xff;
01F4 88BB out 0x18,R24
01F6 .dbline 457
01F6 ; DDRD=0xf0;
01F6 80EF ldi R24,240
01F8 81BB out 0x11,R24
01FA .dbline 458
01FA ; PORTD=0xf0;
01FA 82BB out 0x12,R24
01FC .dbline 459
01FC ; DDRF=0xfb;
01FC 8BEF ldi R24,251
01FE 80936100 sts 97,R24
0202 .dbline 460
0202 ; PORTF=0xfb;
0202 80936200 sts 98,R24
0206 .dbline 461
0206 ; DDRG=0xff;
0206 8FEF ldi R24,255
0208 80936400 sts 100,R24
020C .dbline 462
020C ; PORTG=0xff;
020C 80936500 sts 101,R24
0210 .dbline 463
0210 ; DDRA=0XFF;
0210 8ABB out 0x1a,R24
0212 .dbline 464
0212 ; PORTA=0XFF;
0212 8BBB out 0x1b,R24
0214 .dbline 465
0214 ; DDRC=0XFF;
0214 84BB out 0x14,R24
0216 .dbline 466
0216 ; PORTC=0XFF;
0216 85BB out 0x15,R24
0218 .dbline -2
0218 L53:
0218 .dbline 0 ; func end
0218 0895 ret
021A .dbend
021A .dbfunc e startDA _startDA fV
021A ; i -> R20
021A ; da -> R22,R23
.even
021A _startDA::
021A 0E940000 xcall push_xgsetF000
021E B801 movw R22,R16
0220 .dbline -1
0220 .dbline 472
0220 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -