📄 t6963.lis
字号:
013E ; return 2;
013E 02E0 ldi R16,2
0140 03C0 xjmp L43
0142 L46:
0142 .dbline 172
0142 ; }
0142 ; WR_CMD(uCmd);
0142 042F mov R16,R20
0144 80DF xcall _WR_CMD
0146 .dbline 173
0146 ; return(0); // 返回0 成功
0146 0027 clr R16
0148 .dbline -2
0148 L43:
0148 0E940000 xcall pop_gset2
014C .dbline 0 ; func end
014C 0895 ret
014E .dbsym r uPar1 22 c
014E .dbsym r uCmd 20 c
014E .dbend
014E .dbfunc e fnPR12 _fnPR12 fc
014E ; uCmd -> R20
.even
014E _fnPR12::
014E 0E940000 xcall push_gset1
0152 402F mov R20,R16
0154 .dbline -1
0154 .dbline 179
0154 ; }
0154 ; /************************/
0154 ; /* 写无参数的指令*/
0154 ; /************************/
0154 ; unsigned char fnPR12(unsigned char uCmd)
0154 ; {
0154 .dbline 180
0154 ; if(fnSTA01() == 0)
0154 81DF xcall _fnSTA01
0156 0023 tst R16
0158 11F4 brne L49
015A .dbline 181
015A ; {
015A .dbline 182
015A ; return 1;
015A 01E0 ldi R16,1
015C 03C0 xjmp L48
015E L49:
015E .dbline 184
015E ; }
015E ; WR_CMD(uCmd);
015E 042F mov R16,R20
0160 72DF xcall _WR_CMD
0162 .dbline 185
0162 ; return(0); // 返回0 成功
0162 0027 clr R16
0164 .dbline -2
0164 L48:
0164 0E940000 xcall pop_gset1
0168 .dbline 0 ; func end
0168 0895 ret
016A .dbsym r uCmd 20 c
016A .dbend
016A .dbfunc e fnPR13 _fnPR13 fc
016A ; uData -> R20
.even
016A _fnPR13::
016A 0E940000 xcall push_gset1
016E 402F mov R20,R16
0170 .dbline -1
0170 .dbline 191
0170 ; }
0170 ; /************************/
0170 ; /* 写数据*/
0170 ; /************************/
0170 ; unsigned char fnPR13(unsigned char uData)
0170 ; {
0170 .dbline 192
0170 ; if(fnSTA3() == 0)
0170 97DF xcall _fnSTA3
0172 0023 tst R16
0174 11F4 brne L52
0176 .dbline 193
0176 ; {
0176 .dbline 194
0176 ; return 1;
0176 01E0 ldi R16,1
0178 03C0 xjmp L51
017A L52:
017A .dbline 196
017A ; }
017A ; WR_DAT(uData);
017A 042F mov R16,R20
017C 5BDF xcall _WR_DAT
017E .dbline 197
017E ; return(0); // 返回0 成功
017E 0027 clr R16
0180 .dbline -2
0180 L51:
0180 0E940000 xcall pop_gset1
0184 .dbline 0 ; func end
0184 0895 ret
0186 .dbsym r uData 20 c
0186 .dbend
0186 .dbfunc e fnPR2 _fnPR2 fc
0186 ; temp -> R20
.even
0186 _fnPR2::
0186 0E940000 xcall push_gset1
018A .dbline -1
018A .dbline 203
018A ; }
018A ; /************************/
018A ; /* 读数据*/
018A ; /************************/
018A ; unsigned char fnPR2(void)
018A ; {
018A .dbline 205
018A ; unsigned char temp;
018A ; if(fnSTA01() == 0)
018A 66DF xcall _fnSTA01
018C 0023 tst R16
018E 11F4 brne L55
0190 .dbline 206
0190 ; {
0190 .dbline 207
0190 ; return 1; // 获取状态如果状态错
0190 01E0 ldi R16,1
0192 02C0 xjmp L54
0194 L55:
0194 .dbline 209
0194 ; }
0194 ; temp=RD_DAT();
0194 45DF xcall _RD_DAT
0196 402F mov R20,R16
0198 .dbline 210
0198 ; return(temp); // 返回数据
0198 .dbline -2
0198 L54:
0198 0E940000 xcall pop_gset1
019C .dbline 0 ; func end
019C 0895 ret
019E .dbsym r temp 20 c
019E .dbend
019E .dbfunc e fnSetPos _fnSetPos fV
019E ; iPos -> R10,R11
019E ; ucol -> R20
019E ; urow -> R22
.even
019E _fnSetPos::
019E 0E940000 xcall push_gset3
01A2 422F mov R20,R18
01A4 602F mov R22,R16
01A6 2197 sbiw R28,1
01A8 .dbline -1
01A8 .dbline 216
01A8 ; }
01A8 ; /************************/
01A8 ; /* 设置当前地址*/
01A8 ; /************************/
01A8 ; void fnSetPos(unsigned char urow, unsigned char ucol)
01A8 ; {
01A8 .dbline 218
01A8 ; unsigned int iPos;
01A8 ; iPos = (unsigned int)urow * 30 + ucol;
01A8 8EE1 ldi R24,30
01AA 869F mul R24,R22
01AC 5001 movw R10,R0
01AE 242E mov R2,R20
01B0 3324 clr R3
01B2 A20C add R10,R2
01B4 B31C adc R11,R3
01B6 .dbline 219
01B6 ; fnPR1(LC_ADD_POS,iPos & 0xFF,iPos / 256);
01B6 1501 movw R2,R10
01B8 232C mov R2,R3
01BA 3324 clr R3
01BC 2882 std y+0,R2
01BE 2A2D mov R18,R10
01C0 3070 andi R19,0
01C2 04E2 ldi R16,36
01C4 91DF xcall _fnPR1
01C6 .dbline 220
01C6 ; gCurRow = urow;
01C6 60930100 sts _gCurRow,R22
01CA .dbline 221
01CA ; gCurCol = ucol;
01CA 40930000 sts _gCurCol,R20
01CE .dbline -2
01CE .dbline 222
01CE ; }
01CE L57:
01CE 2196 adiw R28,1
01D0 0E940000 xcall pop_gset3
01D4 .dbline 0 ; func end
01D4 0895 ret
01D6 .dbsym r iPos 10 i
01D6 .dbsym r ucol 20 c
01D6 .dbsym r urow 22 c
01D6 .dbend
01D6 .dbfunc e cursor _cursor fV
01D6 ; uCol -> R22
01D6 ; uRow -> R20
.even
01D6 _cursor::
01D6 0E940000 xcall push_gset2
01DA 622F mov R22,R18
01DC 402F mov R20,R16
01DE .dbline -1
01DE .dbline 227
01DE ; /**********************/
01DE ; /* 设置当前显示行列*/
01DE ; /**********************/
01DE ; void cursor(unsigned char uRow, unsigned char uCol)
01DE ; {
01DE .dbline 228
01DE ; fnSetPos(uRow * 16, uCol);
01DE 262F mov R18,R22
01E0 80E1 ldi R24,16
01E2 849F mul R24,R20
01E4 002D mov R16,R0
01E6 DBDF xcall _fnSetPos
01E8 .dbline -2
01E8 .dbline 229
01E8 ; }
01E8 L58:
01E8 0E940000 xcall pop_gset2
01EC .dbline 0 ; func end
01EC 0895 ret
01EE .dbsym r uCol 22 c
01EE .dbsym r uRow 20 c
01EE .dbend
01EE .dbfunc e cls _cls fV
01EE ; i -> R20,R21
.even
01EE _cls::
01EE 0E940000 xcall push_gset1
01F2 2197 sbiw R28,1
01F4 .dbline -1
01F4 .dbline 234
01F4 ; /*********************/
01F4 ; /* 清屏*/
01F4 ; /*********************/
01F4 ; void cls(void)
01F4 ; {
01F4 .dbline 236
01F4 ; unsigned int i;
01F4 ; fnPR1(LC_ADD_POS,0x00,0x00); // 置地址指针为从零开始
01F4 2224 clr R2
01F6 2882 std y+0,R2
01F8 2227 clr R18
01FA 04E2 ldi R16,36
01FC 75DF xcall _fnPR1
01FE .dbline 237
01FE ; fnPR12(LC_AUT_WR); // 自动写
01FE 00EB ldi R16,176
0200 A6DF xcall _fnPR12
0202 .dbline 238
0202 ; for(i=0;i<240*128/8;i++) // 清一屏
0202 4427 clr R20
0204 5527 clr R21
0206 05C0 xjmp L63
0208 L60:
0208 .dbline 239
0208 .dbline 240
0208 4BDF xcall _fnSTA3
020A .dbline 241
020A 0027 clr R16
020C AEDF xcall _fnPR13
020E .dbline 242
020E L61:
020E .dbline 238
020E 4F5F subi R20,255 ; offset = 1
0210 5F4F sbci R21,255
0212 L63:
0212 .dbline 238
0212 4030 cpi R20,0
0214 EFE0 ldi R30,15
0216 5E07 cpc R21,R30
0218 B8F3 brlo L60
021A .dbline 243
021A ; {
021A ; fnSTA3();
021A ; fnPR13(0x0); // 写数据实际使用时请将0x55 改成0x0
021A ; }
021A ; fnPR12(LC_AUT_OVR); // 自动写结束
021A 02EB ldi R16,178
021C 98DF xcall _fnPR12
021E .dbline 244
021E ; fnPR1(LC_ADD_POS,0x00,0x00); // 重置地址指针
021E 2224 clr R2
0220 2882 std y+0,R2
0222 2227 clr R18
0224 04E2 ldi R16,36
0226 60DF xcall _fnPR1
0228 .dbline 245
0228 ; gCurRow = 0; // 置地址指针存储变量
0228 2224 clr R2
022A 20920100 sts _gCurRow,R2
022E .dbline 246
022E ; gCurCol = 0;
022E 20920000 sts _gCurCol,R2
0232 .dbline -2
0232 .dbline 247
0232 ; }
0232 L59:
0232 2196 adiw R28,1
0234 0E940000 xcall pop_gset1
0238 .dbline 0 ; func end
0238 0895 ret
023A .dbsym r i 20 i
023A .dbend
023A .dbfunc e fnLCMInit _fnLCMInit fc
.even
023A _fnLCMInit::
023A 2197 sbiw R28,1
023C .dbline -1
023C .dbline 252
023C ; /************************/
023C ; /* LCM 初始化*/
023C ; /************************/
023C ; char fnLCMInit(void)
023C ; {
023C .dbline 253
023C ; if(fnPR1(LC_TXT_STP,0x00,0x00) != 0) // 文本显示区首地址
023C 2224 clr R2
023E 2882 std y+0,R2
0240 2227 clr R18
0242 00E4 ldi R16,64
0244 51DF xcall _fnPR1
0246 0023 tst R16
0248 11F0 breq L65
024A .dbline 254
024A ; {
024A .dbline 255
024A ; return (0xff);
024A 0FEF ldi R16,255
024C 16C0 xjmp L64
024E L65:
024E .dbline 257
024E ; }
024E ; fnPR1(LC_TXT_WID,0x1E,0x00); // 文本显示区宽度
024E 2224 clr R2
0250 2882 std y+0,R2
0252 2EE1 ldi R18,30
0254 01E4 ldi R16,65
0256 48DF xcall _fnPR1
0258 .dbline 258
0258 ; fnPR1(LC_GRH_STP,0x00,0x00); // 图形显示区首地址
0258 2224 clr R2
025A 2882 std y+0,R2
025C 2227 clr R18
025E 02E4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -