📄 1.lis
字号:
0158 880F lsl R24
015A 880F lsl R24
015C 880F lsl R24
015E 880F lsl R24
0160 880F lsl R24
0162 382A or R3,R24
0164 432D mov R20,R3
0166 .dbline 75
0166 ; delay_nus(16);
0166 00E1 ldi R16,16
0168 10E0 ldi R17,0
016A 4DD0 xcall _delay_nus
016C .dbline 76
016C ; temp=data<<2;
016C 642F mov R22,R20
016E 660F lsl R22
0170 660F lsl R22
0172 .dbline 77
0172 ; LCD_RS_PORT|=LCD_RS; //RS=1
0172 C79A sbi 0x18,7
0174 .dbline 78
0174 ; LCD_DATA_PORT&=0b11000011; //清高四位
0174 88B3 in R24,0x18
0176 837C andi R24,195
0178 88BB out 0x18,R24
017A .dbline 79
017A ; LCD_DATA_PORT|=temp&0b00111100; //写高四位
017A 862F mov R24,R22
017C 8C73 andi R24,60
017E 28B2 in R2,0x18
0180 282A or R2,R24
0182 28BA out 0x18,R2
0184 .dbline 80
0184 ; LCD_en_write();
0184 52DF xcall _LCD_en_write
0186 .dbline 81
0186 ; data=data>>2; //低四位移到高四位
0186 4695 lsr R20
0188 4695 lsr R20
018A .dbline 82
018A ; LCD_DATA_PORT&=0b11000011; //清高四位
018A 88B3 in R24,0x18
018C 837C andi R24,195
018E 88BB out 0x18,R24
0190 .dbline 83
0190 ; LCD_DATA_PORT|=data&0b00111100; //写低四位
0190 842F mov R24,R20
0192 8C73 andi R24,60
0194 28B2 in R2,0x18
0196 282A or R2,R24
0198 28BA out 0x18,R2
019A .dbline 84
019A ; LCD_en_write();
019A 47DF xcall _LCD_en_write
019C .dbline -2
019C L4:
019C .dbline 0 ; func end
019C 6991 ld R22,y+
019E 4991 ld R20,y+
01A0 0895 ret
01A2 .dbsym r temp 22 c
01A2 .dbsym r data 20 c
01A2 .dbend
01A2 .dbfunc e LCD_set_xy _LCD_set_xy fV
01A2 ; address -> R20
01A2 ; y -> R10
01A2 ; x -> R22
.even
01A2 _LCD_set_xy::
01A2 0E940000 xcall push_xgsetF00C
01A6 A22E mov R10,R18
01A8 602F mov R22,R16
01AA .dbline -1
01AA .dbline 89
01AA ; }
01AA ;
01AA ;
01AA ; void LCD_set_xy( unsigned char x, unsigned char y ) //写地址函数
01AA ; {
01AA .dbline 91
01AA ; unsigned char address;
01AA ; if (y == 0) address = 0x80 + x;
01AA AA20 tst R10
01AC 19F4 brne L6
01AE X0:
01AE .dbline 91
01AE 462F mov R20,R22
01B0 4058 subi R20,128 ; addi 128
01B2 02C0 xjmp L7
01B4 L6:
01B4 .dbline 92
01B4 ; else address = 0xc0 + x;
01B4 462F mov R20,R22
01B6 4054 subi R20,64 ; addi 192
01B8 L7:
01B8 .dbline 93
01B8 ; LCD_write_command( address);
01B8 042F mov R16,R20
01BA 3DDF xcall _LCD_write_command
01BC .dbline -2
01BC L5:
01BC .dbline 0 ; func end
01BC 0C940000 xjmp pop_xgsetF00C
01C0 .dbsym r address 20 c
01C0 .dbsym r y 10 c
01C0 .dbsym r x 22 c
01C0 .dbend
01C0 .dbfunc e LCD_write_string _LCD_write_string fV
01C0 ; s -> R20,R21
01C0 ; Y -> R12
01C0 ; X -> R10
.even
01C0 _LCD_write_string::
01C0 0E940000 xcall push_xgset303C
01C4 C22E mov R12,R18
01C6 A02E mov R10,R16
01C8 4E81 ldd R20,y+6
01CA 5F81 ldd R21,y+7
01CC .dbline -1
01CC .dbline 97
01CC ; }
01CC ;
01CC ; void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s) //列x=0~15,行y=0,1
01CC ; {
01CC .dbline 98
01CC ; LCD_set_xy( X, Y ); //写地址
01CC 2C2D mov R18,R12
01CE 0A2D mov R16,R10
01D0 E8DF xcall _LCD_set_xy
01D2 05C0 xjmp L10
01D4 L9:
01D4 .dbline 100
01D4 ; while (*s) // 写显示字符
01D4 ; {
01D4 .dbline 101
01D4 ; LCD_write_data( *s );
01D4 FA01 movw R30,R20
01D6 0081 ldd R16,z+0
01D8 89DF xcall _LCD_write_data
01DA .dbline 102
01DA ; s ++;
01DA 4F5F subi R20,255 ; offset = 1
01DC 5F4F sbci R21,255
01DE .dbline 103
01DE ; }
01DE L10:
01DE .dbline 99
01DE FA01 movw R30,R20
01E0 2080 ldd R2,z+0
01E2 2220 tst R2
01E4 B9F7 brne L9
01E6 X1:
01E6 .dbline -2
01E6 L8:
01E6 .dbline 0 ; func end
01E6 0C940000 xjmp pop_xgset303C
01EA .dbsym r s 20 pc
01EA .dbsym r Y 12 c
01EA .dbsym r X 10 c
01EA .dbend
01EA .dbfunc e LCD_write_char _LCD_write_char fV
01EA ; data -> y+2
01EA ; Y -> R12
01EA ; X -> R10
.even
01EA _LCD_write_char::
01EA AA92 st -y,R10
01EC CA92 st -y,R12
01EE C22E mov R12,R18
01F0 A02E mov R10,R16
01F2 .dbline -1
01F2 .dbline 108
01F2 ;
01F2 ; }
01F2 ;
01F2 ; void LCD_write_char(unsigned char X,unsigned char Y,unsigned char data) //列x=0~15,行y=0,1
01F2 ; {
01F2 .dbline 109
01F2 ; LCD_set_xy( X, Y ); //写地址
01F2 2C2D mov R18,R12
01F4 0A2D mov R16,R10
01F6 D5DF xcall _LCD_set_xy
01F8 .dbline 110
01F8 ; LCD_write_data( data);
01F8 0A81 ldd R16,y+2
01FA 78DF xcall _LCD_write_data
01FC .dbline -2
01FC L12:
01FC .dbline 0 ; func end
01FC C990 ld R12,y+
01FE A990 ld R10,y+
0200 0895 ret
0202 .dbsym l data 2 c
0202 .dbsym r Y 12 c
0202 .dbsym r X 10 c
0202 .dbend
0202 .dbfunc e delay_1us _delay_1us fV
.even
0202 _delay_1us::
0202 .dbline -1
0202 .dbline 116
0202 ; }
0202 ;
0202 ;
0202 ;
0202 ; void delay_1us(void) //1us延时函数
0202 ; {
0202 .dbline 117
0202 ; asm("nop");
0202 0000 nop
0204 .dbline -2
0204 L13:
0204 .dbline 0 ; func end
0204 0895 ret
0206 .dbend
0206 .dbfunc e delay_nus _delay_nus fV
0206 ; i -> R20,R21
0206 ; n -> R10,R11
.even
0206 _delay_nus::
0206 0E940000 xcall push_xgset300C
020A 5801 movw R10,R16
020C .dbline -1
020C .dbline 121
020C ; }
020C ;
020C ; void delay_nus(unsigned int n) //N us延时函数
020C ; {
020C .dbline 122
020C ; unsigned int i=0;
020C 4427 clr R20
020E 5527 clr R21
0210 .dbline 123
0210 ; for (i=0;i<n;i++)
0210 03C0 xjmp L18
0212 L15:
0212 .dbline 124
0212 ; delay_1us();
0212 F7DF xcall _delay_1us
0214 L16:
0214 .dbline 123
0214 4F5F subi R20,255 ; offset = 1
0216 5F4F sbci R21,255
0218 L18:
0218 .dbline 123
0218 4A15 cp R20,R10
021A 5B05 cpc R21,R11
021C D0F3 brlo L15
021E X2:
021E .dbline -2
021E L14:
021E .dbline 0 ; func end
021E 0C940000 xjmp pop_xgset300C
0222 .dbsym r i 20 i
0222 .dbsym r n 10 i
0222 .dbend
0222 .dbfunc e delay_1ms _delay_1ms fV
0222 ; i -> R16,R17
.even
0222 _delay_1ms::
0222 .dbline -1
0222 .dbline 128
0222 ; }
0222 ;
0222 ; void delay_1ms(void) //1ms延时函数
0222 ; {
0222 .dbline 130
0222 ; unsigned int i;
0222 ; for (i=0;i<1140;i++);
0222 0027 clr R16
0224 1127 clr R17
0226 02C0 xjmp L23
0228 L20:
0228 .dbline 130
0228 L21:
0228 .dbline 130
0228 0F5F subi R16,255 ; offset = 1
022A 1F4F sbci R17,255
022C L23:
022C .dbline 130
022C 0437 cpi R16,116
022E E4E0 ldi R30,4
0230 1E07 cpc R17,R30
0232 D0F3 brlo L20
0234 X3:
0234 .dbline -2
0234 L19:
0234 .dbline 0 ; func end
0234 0895 ret
0236 .dbsym r i 16 i
0236 .dbend
0236 .dbfunc e delay_nms _delay_nms fV
0236 ; i -> R20,R21
0236 ; n -> R10,R11
.even
0236 _delay_nms::
0236 0E940000 xcall push_xgset300C
023A 5801 movw R10,R16
023C .dbline -1
023C .dbline 134
023C ; }
023C ;
023C ; void delay_nms(unsigned int n) //N ms延时函数
023C ; {
023C .dbline 135
023C ; unsigned int i=0;
023C 4427 clr R20
023E 5527 clr R21
0240 .dbline 136
0240 ; for (i=0;i<n;i++)
0240 03C0 xjmp L28
0242 L25:
0242 .dbline 137
0242 ; delay_1ms();
0242 EFDF xcall _delay_1ms
0244 L26:
0244 .dbline 136
0244 4F5F subi R20,255 ; offset = 1
0246 5F4F sbci R21,255
0248 L28:
0248 .dbline 136
0248 4A15 cp R20,R10
024A 5B05 cpc R21,R11
024C D0F3 brlo L25
024E X4:
024E .dbline -2
024E L24:
024E .dbline 0 ; func end
024E 0C940000 xjmp pop_xgset300C
0252 .dbsym r i 20 i
0252 .dbsym r n 10 i
0252 .dbend
0252 .dbfunc e Format _Format fpc
0252 ; str -> R20,R21
0252 ; data -> R10
.even
0252 _Format::
0252 0E940000 xcall push_xgset300C
0256 A901 movw R20,R18
0258 A02E mov R10,R16
025A .dbline -1
025A .dbline 141
025A ; }
025A ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -