📄 ks0108.lis
字号:
007C 3228 or R3,R2
007E 3082 std z+0,R3
0080 .dbline 88
0080 ; }
0080 13C0 xjmp L19
0082 L18:
0082 .dbline 90
0082 ; else
0082 ; {
0082 .dbline 91
0082 ; SET_LCD_CS2; //cs2=1
0082 20901400 lds R2,_LCD_CS2_BIT
0086 E0910A00 lds R30,_LCD_CS2_PORT
008A F0910B00 lds R31,_LCD_CS2_PORT+1
008E 3080 ldd R3,z+0
0090 3228 or R3,R2
0092 3082 std z+0,R3
0094 .dbline 92
0094 ; CLEAR_LCD_CS1; //cs1=0
0094 20901500 lds R2,_LCD_CS1_BIT
0098 2094 com R2
009A E0910C00 lds R30,_LCD_CS1_PORT
009E F0910D00 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 93
00A8 ; }
00A8 L19:
00A8 .dbline 94
00A8 ; SET_LCD_CMD;
00A8 20901700 lds R2,_LCD_DI_BIT
00AC 2094 com R2
00AE E0911000 lds R30,_LCD_DI_PORT
00B2 F0911100 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 95
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 96
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 97
00D4 ; SET_LCD_READ;
00D4 20901600 lds R2,_LCD_RW_BIT
00D8 E0910E00 lds R30,_LCD_RW_PORT
00DC F0910F00 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 98
00E6 ; SET_LCD_E;
00E6 20901300 lds R2,_LCD_EN_BIT
00EA E0910800 lds R30,_LCD_EN_PORT
00EE F0910900 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 99
00F8 ; asm("nop");
00F8 0000 nop
00FA .dbline 100
00FA ; asm("nop");
00FA 0000 nop
00FC .dbline 101
00FC ; asm("nop");
00FC 0000 nop
00FE .dbline 102
00FE ; asm("nop");
00FE 0000 nop
0100 1BC0 xjmp L21
0102 L20:
0102 .dbline 104
0102 .dbline 105
0102 20901300 lds R2,_LCD_EN_BIT
0106 2094 com R2
0108 E0910800 lds R30,_LCD_EN_PORT
010C F0910900 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 106
0116 0000 nop
0118 .dbline 107
0118 0000 nop
011A .dbline 108
011A 0000 nop
011C .dbline 109
011C 0000 nop
011E .dbline 110
011E 20901300 lds R2,_LCD_EN_BIT
0122 E0910800 lds R30,_LCD_EN_PORT
0126 F0910900 lds R31,_LCD_EN_PORT+1
012A 3080 ldd R3,z+0
012C 3228 or R3,R2
012E 3082 std z+0,R3
0130 .dbline 111
0130 0000 nop
0132 .dbline 112
0132 0000 nop
0134 .dbline 113
0134 0000 nop
0136 .dbline 114
0136 0000 nop
0138 .dbline 115
0138 L21:
0138 .dbline 103
0138 ; while((*LCD_IP_PORT) & LCD_STATUS_BUSY)
0138 E0910200 lds R30,_LCD_IP_PORT
013C F0910300 lds R31,_LCD_IP_PORT+1
0140 2080 ldd R2,z+0
0142 27FC sbrc R2,7
0144 DECF rjmp L20
0146 .dbline 116
0146 ; {
0146 ; CLEAR_LCD_E;
0146 ; asm("nop");
0146 ; asm("nop");
0146 ; asm("nop");
0146 ; asm("nop");
0146 ; SET_LCD_E;
0146 ; asm("nop");
0146 ; asm("nop");
0146 ; asm("nop");
0146 ; asm("nop");
0146 ; }
0146 ; CLEAR_LCD_E;
0146 20901300 lds R2,_LCD_EN_BIT
014A 2094 com R2
014C E0910800 lds R30,_LCD_EN_PORT
0150 F0910900 lds R31,_LCD_EN_PORT+1
0154 3080 ldd R3,z+0
0156 3220 and R3,R2
0158 3082 std z+0,R3
015A .dbline 117
015A ; SET_LCD_WRITE;
015A 20901600 lds R2,_LCD_RW_BIT
015E 2094 com R2
0160 E0910E00 lds R30,_LCD_RW_PORT
0164 F0910F00 lds R31,_LCD_RW_PORT+1
0168 3080 ldd R3,z+0
016A 3220 and R3,R2
016C 3082 std z+0,R3
016E .dbline 118
016E ; *LCD_OP_PORT = 0xff;
016E 8FEF ldi R24,255
0170 E0910400 lds R30,_LCD_OP_PORT
0174 F0910500 lds R31,_LCD_OP_PORT+1
0178 8083 std z+0,R24
017A .dbline 119
017A ; asm("sei");//)asm("sei");
017A 7894 sei
017C .dbline -2
017C L17:
017C .dbline 0 ; func end
017C 0895 ret
017E .dbsym r lr 16 c
017E .dbend
017E .dbfunc e write_LCD _write_LCD fV
017E ; data -> y+4
017E ; cd -> R20
017E ; lr -> R22
.even
017E _write_LCD::
017E 0E940000 xcall push_gset2
0182 422F mov R20,R18
0184 602F mov R22,R16
0186 .dbline -1
0186 .dbline 123
0186 ; }
0186 ;
0186 ; void write_LCD(unsigned char lr,unsigned char cd,unsigned char data) /*写入指令或数据*/
0186 ; {
0186 .dbline 124
0186 ; asm("cli");//)asm("cli");
0186 F894 cli
0188 .dbline 125
0188 ; LCD_BUSY(lr);
0188 062F mov R16,R22
018A 64DF xcall _LCD_BUSY
018C .dbline 126
018C ; if(cd==CMD)
018C 4423 tst R20
018E 59F4 brne L24
0190 .dbline 127
0190 ; {
0190 .dbline 128
0190 ; SET_LCD_CMD;
0190 20901700 lds R2,_LCD_DI_BIT
0194 2094 com R2
0196 E0911000 lds R30,_LCD_DI_PORT
019A F0911100 lds R31,_LCD_DI_PORT+1
019E 3080 ldd R3,z+0
01A0 3220 and R3,R2
01A2 3082 std z+0,R3
01A4 .dbline 129
01A4 ; }
01A4 09C0 xjmp L25
01A6 L24:
01A6 .dbline 131
01A6 ; else
01A6 ; {
01A6 .dbline 132
01A6 ; SET_LCD_DATA;
01A6 20901700 lds R2,_LCD_DI_BIT
01AA E0911000 lds R30,_LCD_DI_PORT
01AE F0911100 lds R31,_LCD_DI_PORT+1
01B2 3080 ldd R3,z+0
01B4 3228 or R3,R2
01B6 3082 std z+0,R3
01B8 .dbline 133
01B8 ; }
01B8 L25:
01B8 .dbline 134
01B8 ; SET_LCD_WRITE;
01B8 20901600 lds R2,_LCD_RW_BIT
01BC 2094 com R2
01BE E0910E00 lds R30,_LCD_RW_PORT
01C2 F0910F00 lds R31,_LCD_RW_PORT+1
01C6 3080 ldd R3,z+0
01C8 3220 and R3,R2
01CA 3082 std z+0,R3
01CC .dbline 135
01CC ; SET_LCD_E;
01CC 20901300 lds R2,_LCD_EN_BIT
01D0 E0910800 lds R30,_LCD_EN_PORT
01D4 F0910900 lds R31,_LCD_EN_PORT+1
01D8 3080 ldd R3,z+0
01DA 3228 or R3,R2
01DC 3082 std z+0,R3
01DE .dbline 136
01DE ; *LCD_DIR_PORT = 0xff;
01DE 8FEF ldi R24,255
01E0 E0910000 lds R30,_LCD_DIR_PORT
01E4 F0910100 lds R31,_LCD_DIR_PORT+1
01E8 8083 std z+0,R24
01EA .dbline 137
01EA ; *LCD_OP_PORT = data;
01EA E0910400 lds R30,_LCD_OP_PORT
01EE F0910500 lds R31,_LCD_OP_PORT+1
01F2 0C80 ldd R0,y+4
01F4 0082 std z+0,R0
01F6 .dbline 138
01F6 ; asm("nop");
01F6 0000 nop
01F8 .dbline 139
01F8 ; asm("nop");
01F8 0000 nop
01FA .dbline 140
01FA ; asm("nop");
01FA 0000 nop
01FC .dbline 141
01FC ; asm("nop");
01FC 0000 nop
01FE .dbline 142
01FE ; CLEAR_LCD_E;
01FE 20901300 lds R2,_LCD_EN_BIT
0202 2094 com R2
0204 E0910800 lds R30,_LCD_EN_PORT
0208 F0910900 lds R31,_LCD_EN_PORT+1
020C 3080 ldd R3,z+0
020E 3220 and R3,R2
0210 3082 std z+0,R3
0212 .dbline 143
0212 ; *LCD_OP_PORT = 0xff;
0212 E0910400 lds R30,_LCD_OP_PORT
0216 F0910500 lds R31,_LCD_OP_PORT+1
021A 8083 std z+0,R24
021C .dbline 144
021C ; asm("sei");
021C 7894 sei
021E .dbline -2
021E L23:
021E 0E940000 xcall pop_gset2
0222 .dbline 0 ; func end
0222 0895 ret
0224 .dbsym l data 4 c
0224 .dbsym r cd 20 c
0224 .dbsym r lr 22 c
0224 .dbend
0224 .dbfunc e read_LCD _read_LCD fc
0224 ; data -> R20
0224 ; lr -> R22
.even
0224 _read_LCD::
0224 0E940000 xcall push_gset2
0228 602F mov R22,R16
022A .dbline -1
022A .dbline 147
022A ; }
022A ; unsigned char read_LCD(unsigned char lr) /* 读显示数据 */
022A ; {
022A .dbline 149
022A ; unsigned char data;
022A ; asm("cli");
022A F894 cli
022C .dbline 150
022C ; LCD_BUSY(lr);
022C 062F mov R16,R22
022E 12DF xcall _LCD_BUSY
0230 .dbline 151
0230 ; SET_LCD_DATA;
0230 20901700 lds R2,_LCD_DI_BIT
0234 E0911000 lds R30,_LCD_DI_PORT
0238 F0911100 lds R31,_LCD_DI_PORT+1
023C 3080 ldd R3,z+0
023E 3228 or R3,R2
0240 3082 std z+0,R3
0242 .dbline 152
0242 ; *LCD_DIR_PORT = 0x00;
0242 2224 clr R2
0244 E0910000 lds R30,_LCD_DIR_PORT
0248 F0910100 lds R31,_LCD_DIR_PORT+1
024C 2082 std z+0,R2
024E .dbline 153
024E ; *LCD_OP_PORT = 0xff;
024E 8FEF ldi R24,255
0250 E0910400 lds R30,_LCD_OP_PORT
0254 F0910500 lds R31,_LCD_OP_PORT+1
0258 8083 std z+0,R24
025A .dbline 154
025A ; SET_LCD_READ;
025A 20901600 lds R2,_LCD_RW_BIT
025E E0910E00 lds R30,_LCD_RW_PORT
0262 F0910F00 lds R31,_LCD_RW_PORT+1
0266 3080 ldd R3,z+0
0268 3228 or R3,R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -