📄 display.lis
字号:
0094 ; CLEAR_LCD_CS1; //cs1=0
0094 20901200 lds R2,_LCD_CS1_BIT
0098 2094 com R2
009A E0910A00 lds R30,_LCD_CS1_PORT
009E F0910B00 lds R31,_LCD_CS1_PORT+1
00A2 3080 ldd R3,z+0
00A4 3220 and R3,R2
00A6 3082 std z+0,R3
00A8 .dbline 80
00A8 ; }
00A8 L19:
00A8 .dbline 81
00A8 ; SET_LCD_CMD;
00A8 20901400 lds R2,_LCD_DI_BIT
00AC 2094 com R2
00AE E0910E00 lds R30,_LCD_DI_PORT
00B2 F0910F00 lds R31,_LCD_DI_PORT+1
00B6 3080 ldd R3,z+0
00B8 3220 and R3,R2
00BA 3082 std z+0,R3
00BC .dbline 82
00BC ; *LCD_DIR_PORT = 0x00;
00BC 2224 clr R2
00BE E0910000 lds R30,_LCD_DIR_PORT
00C2 F0910100 lds R31,_LCD_DIR_PORT+1
00C6 2082 std z+0,R2
00C8 .dbline 83
00C8 ; *LCD_OP_PORT = 0xff;
00C8 8FEF ldi R24,255
00CA E0910400 lds R30,_LCD_OP_PORT
00CE F0910500 lds R31,_LCD_OP_PORT+1
00D2 8083 std z+0,R24
00D4 .dbline 84
00D4 ; SET_LCD_READ;
00D4 20901300 lds R2,_LCD_RW_BIT
00D8 E0910C00 lds R30,_LCD_RW_PORT
00DC F0910D00 lds R31,_LCD_RW_PORT+1
00E0 3080 ldd R3,z+0
00E2 3228 or R3,R2
00E4 3082 std z+0,R3
00E6 .dbline 85
00E6 ; SET_LCD_E;
00E6 20901000 lds R2,_LCD_EN_BIT
00EA E0910600 lds R30,_LCD_EN_PORT
00EE F0910700 lds R31,_LCD_EN_PORT+1
00F2 3080 ldd R3,z+0
00F4 3228 or R3,R2
00F6 3082 std z+0,R3
00F8 .dbline 86
00F8 ; _NOP();
00F8 0000 nop
00FA .dbline 87
00FA ; _NOP();
00FA 0000 nop
00FC .dbline 88
00FC ; _NOP();
00FC 0000 nop
00FE .dbline 89
00FE ; _NOP();
00FE 0000 nop
0100 16C0 xjmp L21
0102 L20:
0102 .dbline 91
0102 .dbline 92
0102 20901000 lds R2,_LCD_EN_BIT
0106 2094 com R2
0108 E0910600 lds R30,_LCD_EN_PORT
010C F0910700 lds R31,_LCD_EN_PORT+1
0110 3080 ldd R3,z+0
0112 3220 and R3,R2
0114 3082 std z+0,R3
0116 .dbline 93
0116 0000 nop
0118 .dbline 94
0118 0000 nop
011A .dbline 95
011A 0000 nop
011C .dbline 96
011C 0000 nop
011E .dbline 97
011E 20901000 lds R2,_LCD_EN_BIT
0122 3228 or R3,R2
0124 3082 std z+0,R3
0126 .dbline 98
0126 0000 nop
0128 .dbline 99
0128 0000 nop
012A .dbline 100
012A 0000 nop
012C .dbline 101
012C 0000 nop
012E .dbline 102
012E L21:
012E .dbline 90
012E ; while((*LCD_IP_PORT) & LCD_STATUS_BUSY)
012E E0910200 lds R30,_LCD_IP_PORT
0132 F0910300 lds R31,_LCD_IP_PORT+1
0136 2080 ldd R2,z+0
0138 27FC sbrc R2,7
013A E3CF rjmp L20
013C .dbline 103
013C ; {
013C ; CLEAR_LCD_E;
013C ; _NOP();
013C ; _NOP();
013C ; _NOP();
013C ; _NOP();
013C ; SET_LCD_E;
013C ; _NOP();
013C ; _NOP();
013C ; _NOP();
013C ; _NOP();
013C ; }
013C ; CLEAR_LCD_E;
013C 20901000 lds R2,_LCD_EN_BIT
0140 2094 com R2
0142 E0910600 lds R30,_LCD_EN_PORT
0146 F0910700 lds R31,_LCD_EN_PORT+1
014A 3080 ldd R3,z+0
014C 3220 and R3,R2
014E 3082 std z+0,R3
0150 .dbline 104
0150 ; SET_LCD_WRITE;
0150 20901300 lds R2,_LCD_RW_BIT
0154 2094 com R2
0156 E0910C00 lds R30,_LCD_RW_PORT
015A F0910D00 lds R31,_LCD_RW_PORT+1
015E 3080 ldd R3,z+0
0160 3220 and R3,R2
0162 3082 std z+0,R3
0164 .dbline 105
0164 ; *LCD_OP_PORT = 0xff;
0164 8FEF ldi R24,255
0166 E0910400 lds R30,_LCD_OP_PORT
016A F0910500 lds R31,_LCD_OP_PORT+1
016E 8083 std z+0,R24
0170 .dbline 106
0170 ; asm("sei");//)asm("sei");
0170 7894 sei
0172 .dbline -2
0172 .dbline 107
0172 ; }
0172 L17:
0172 .dbline 0 ; func end
0172 0895 ret
0174 .dbsym l status 1 c
0174 .dbsym r lr 16 c
0174 .dbend
0174 .dbfunc e write_LCD _write_LCD fV
0174 ; data -> y+4
0174 ; cd -> R20
0174 ; lr -> R22
.even
0174 _write_LCD::
0174 0E940000 xcall push_gset2
0178 422F mov R20,R18
017A 602F mov R22,R16
017C .dbline -1
017C .dbline 110
017C ;
017C ; void write_LCD(unsigned char lr,unsigned char cd,unsigned char data) /*写入指令或数据*/
017C ; {
017C .dbline 111
017C ; _CLI();//_CLI();
017C F894 cli
017E .dbline 112
017E ; LCD_BUSY(lr);
017E 062F mov R16,R22
0180 69DF xcall _LCD_BUSY
0182 .dbline 113
0182 ; if(cd==CMD)
0182 4423 tst R20
0184 59F4 brne L24
0186 .dbline 114
0186 ; {
0186 .dbline 115
0186 ; SET_LCD_CMD;
0186 20901400 lds R2,_LCD_DI_BIT
018A 2094 com R2
018C E0910E00 lds R30,_LCD_DI_PORT
0190 F0910F00 lds R31,_LCD_DI_PORT+1
0194 3080 ldd R3,z+0
0196 3220 and R3,R2
0198 3082 std z+0,R3
019A .dbline 116
019A ; }
019A 09C0 xjmp L25
019C L24:
019C .dbline 118
019C ; else
019C ; {
019C .dbline 119
019C ; SET_LCD_DATA;
019C 20901400 lds R2,_LCD_DI_BIT
01A0 E0910E00 lds R30,_LCD_DI_PORT
01A4 F0910F00 lds R31,_LCD_DI_PORT+1
01A8 3080 ldd R3,z+0
01AA 3228 or R3,R2
01AC 3082 std z+0,R3
01AE .dbline 120
01AE ; }
01AE L25:
01AE .dbline 121
01AE ; SET_LCD_WRITE;
01AE 20901300 lds R2,_LCD_RW_BIT
01B2 2094 com R2
01B4 E0910C00 lds R30,_LCD_RW_PORT
01B8 F0910D00 lds R31,_LCD_RW_PORT+1
01BC 3080 ldd R3,z+0
01BE 3220 and R3,R2
01C0 3082 std z+0,R3
01C2 .dbline 122
01C2 ; SET_LCD_E;
01C2 20901000 lds R2,_LCD_EN_BIT
01C6 E0910600 lds R30,_LCD_EN_PORT
01CA F0910700 lds R31,_LCD_EN_PORT+1
01CE 3080 ldd R3,z+0
01D0 3228 or R3,R2
01D2 3082 std z+0,R3
01D4 .dbline 123
01D4 ; *LCD_DIR_PORT = 0xff;
01D4 8FEF ldi R24,255
01D6 E0910000 lds R30,_LCD_DIR_PORT
01DA F0910100 lds R31,_LCD_DIR_PORT+1
01DE 8083 std z+0,R24
01E0 .dbline 124
01E0 ; *LCD_OP_PORT = data;
01E0 E0910400 lds R30,_LCD_OP_PORT
01E4 F0910500 lds R31,_LCD_OP_PORT+1
01E8 0C80 ldd R0,y+4
01EA 0082 std z+0,R0
01EC .dbline 125
01EC ; _NOP();
01EC 0000 nop
01EE .dbline 126
01EE ; _NOP();
01EE 0000 nop
01F0 .dbline 127
01F0 ; _NOP();
01F0 0000 nop
01F2 .dbline 128
01F2 ; _NOP();
01F2 0000 nop
01F4 .dbline 129
01F4 ; CLEAR_LCD_E;
01F4 2094 com R2
01F6 E0910600 lds R30,_LCD_EN_PORT
01FA F0910700 lds R31,_LCD_EN_PORT+1
01FE 3080 ldd R3,z+0
0200 3220 and R3,R2
0202 3082 std z+0,R3
0204 .dbline 130
0204 ; *LCD_OP_PORT = 0xff;
0204 E0910400 lds R30,_LCD_OP_PORT
0208 F0910500 lds R31,_LCD_OP_PORT+1
020C 8083 std z+0,R24
020E .dbline 131
020E ; _SEI();
020E 7894 sei
0210 .dbline -2
0210 .dbline 132
0210 ; }
0210 L23:
0210 0E940000 xcall pop_gset2
0214 .dbline 0 ; func end
0214 0895 ret
0216 .dbsym l data 4 c
0216 .dbsym r cd 20 c
0216 .dbsym r lr 22 c
0216 .dbend
0216 .dbfunc e read_LCD _read_LCD fc
0216 ; data -> R20
0216 ; lr -> R22
.even
0216 _read_LCD::
0216 0E940000 xcall push_gset2
021A 602F mov R22,R16
021C .dbline -1
021C .dbline 134
021C ; unsigned char read_LCD(unsigned char lr) /* 读显示数据 */
021C ; {
021C .dbline 136
021C ; unsigned char data;
021C ; _CLI();
021C F894 cli
021E .dbline 137
021E ; LCD_BUSY(lr);
021E 062F mov R16,R22
0220 19DF xcall _LCD_BUSY
0222 .dbline 138
0222 ; SET_LCD_DATA;
0222 20901400 lds R2,_LCD_DI_BIT
0226 E0910E00 lds R30,_LCD_DI_PORT
022A F0910F00 lds R31,_LCD_DI_PORT+1
022E 3080 ldd R3,z+0
0230 3228 or R3,R2
0232 3082 std z+0,R3
0234 .dbline 139
0234 ; *LCD_DIR_PORT = 0x00;
0234 2224 clr R2
0236 E0910000 lds R30,_LCD_DIR_PORT
023A F0910100 lds R31,_LCD_DIR_PORT+1
023E 2082 std z+0,R2
0240 .dbline 140
0240 ; *LCD_OP_PORT = 0xff;
0240 8FEF ldi R24,255
0242 E0910400 lds R30,_LCD_OP_PORT
0246 F0910500 lds R31,_LCD_OP_PORT+1
024A 8083 std z+0,R24
024C .dbline 141
024C ; SET_LCD_READ;
024C 20901300 lds R2,_LCD_RW_BIT
0250 E0910C00 lds R30,_LCD_RW_PORT
0254 F0910D00 lds R31,_LCD_RW_PORT+1
0258 3080 ldd R3,z+0
025A 3228 or R3,R2
025C 3082 std z+0,R3
025E .dbline 142
025E ; SET_LCD_E;
025E 20901000 lds R2,_LCD_EN_BIT
0262 E0910600 lds R30,_LCD_EN_PORT
0266 F0910700 lds R31,_LCD_EN_PORT+1
026A 3080 ldd R3,z+0
026C 3228 or R3,R2
026E 3082 std z+0,R3
0270 .dbline 143
0270 ; _NOP();
0270 0000 nop
0272 .dbline 144
0272 ; _NOP();
0272 0000 nop
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -