📄 12864.lis
字号:
00B8 A3DF xcall _Delayus
00BA .dbline 77
00BA ; LCDb_CLR_E;
00BA C698 cbi 0x18,6
00BC .dbline -2
00BC L19:
00BC 0E940000 xcall pop_gset2
00C0 .dbline 0 ; func end
00C0 0895 ret
00C2 .dbsym r dByte 20 c
00C2 .dbsym r DatCmd 22 c
00C2 .dbend
00C2 .dbfunc e LCD12864_sendstr _LCD12864_sendstr fV
00C2 ; ptString -> R20,R21
.even
00C2 _LCD12864_sendstr::
00C2 0E940000 xcall push_gset1
00C6 A801 movw R20,R16
00C8 .dbline -1
00C8 .dbline 86
00C8 ; }
00C8 ; /*******************************************
00C8 ; 函数名称: LCD12864_sendstr
00C8 ; 功 能: 向12864液晶写入一个字符串
00C8 ; 参 数: ptString--字符串指针
00C8 ; 返回值 : 无
00C8 ; /********************************************/
00C8 ; void LCD12864_sendstr(uchar *ptString)
00C8 ; {
00C8 05C0 xjmp L24
00CA L23:
00CA .dbline 88
00CA .dbline 89
00CA FA01 movw R30,R20
00CC 2191 ld R18,Z+
00CE AF01 movw R20,R30
00D0 01E0 ldi R16,1
00D2 E4DF xcall _LCD12864_sendbyte
00D4 .dbline 90
00D4 L24:
00D4 .dbline 87
00D4 ; while((*ptString)!='\0') //字符串未结束一直写
00D4 FA01 movw R30,R20
00D6 2080 ldd R2,z+0
00D8 2220 tst R2
00DA B9F7 brne L23
00DC .dbline -2
00DC L22:
00DC 0E940000 xcall pop_gset1
00E0 .dbline 0 ; func end
00E0 0895 ret
00E2 .dbsym r ptString 20 pc
00E2 .dbend
00E2 .dbfunc e LCD12864_clear _LCD12864_clear fV
.even
00E2 _LCD12864_clear::
00E2 .dbline -1
00E2 .dbline 99
00E2 ; {
00E2 ; LCD12864_sendbyte(iDat, *ptString++);
00E2 ; }
00E2 ; }
00E2 ; /*******************************************
00E2 ; 函数名称: LCD12864_clear
00E2 ; 功 能: 12864液晶清屏
00E2 ; 参 数: 无
00E2 ; 返回值 : 无
00E2 ; /********************************************/
00E2 ; void LCD12864_clear(void)
00E2 ; {
00E2 .dbline 100
00E2 ; LCD12864_sendbyte(iCmd,LCDb_CLS);
00E2 21E0 ldi R18,1
00E4 0027 clr R16
00E6 DADF xcall _LCD12864_sendbyte
00E8 .dbline 101
00E8 ; Delayms(2);// 清屏指令写入后,2ms 的延时是很必要的!!!
00E8 02E0 ldi R16,2
00EA 10E0 ldi R17,0
00EC A1DF xcall _Delayms
00EE .dbline -2
00EE L26:
00EE .dbline 0 ; func end
00EE 0895 ret
00F0 .dbend
00F0 .dbfunc e LCD12864_readBF _LCD12864_readBF fc
00F0 ; busy -> R20
.even
00F0 _LCD12864_readBF::
00F0 0E940000 xcall push_gset1
00F4 .dbline -1
00F4 .dbline 110
00F4 ; }
00F4 ; /*******************************************
00F4 ; 函数名称: LCD12864_readBF
00F4 ; 功 能: 12864液晶清屏
00F4 ; 参 数: 无
00F4 ; 返回值 : busy--为1时忙,为0时可以接收指令
00F4 ; /********************************************/
00F4 ; uchar LCD12864_readBF(void)
00F4 ; {
00F4 .dbline 112
00F4 ; uchar busy;
00F4 ; busy=LCD12864_readbyte(iCmd); //读回BF标志和地址
00F4 0027 clr R16
00F6 BADF xcall _LCD12864_readbyte
00F8 402F mov R20,R16
00FA .dbline 113
00FA ; if(busy&0x80) //如果忙,返回忙状态
00FA 07FF sbrs R16,7
00FC 02C0 rjmp L28
00FE .dbline 114
00FE ; busy=1;
00FE 41E0 ldi R20,1
0100 01C0 xjmp L29
0102 L28:
0102 .dbline 116
0102 ; else //不忙,可以写入
0102 ; busy=0;
0102 4427 clr R20
0104 L29:
0104 .dbline 117
0104 ; return busy;
0104 042F mov R16,R20
0106 .dbline -2
0106 L27:
0106 0E940000 xcall pop_gset1
010A .dbline 0 ; func end
010A 0895 ret
010C .dbsym r busy 20 c
010C .dbend
010C .dbfunc e LCD12864_gotoXY _LCD12864_gotoXY fV
010C ; Col -> R20
010C ; Row -> R22
.even
010C _LCD12864_gotoXY::
010C 0E940000 xcall push_gset2
0110 422F mov R20,R18
0112 602F mov R22,R16
0114 .dbline -1
0114 .dbline 127
0114 ; }
0114 ; /*******************************************
0114 ; 函数名称: LCD12864_gotoXY
0114 ; 功 能: 移动到指定位置
0114 ; 参 数: Row--指定的行
0114 ; Col--指定的列
0114 ; 返回值 : 无
0114 ; /********************************************/
0114 ; void LCD12864_gotoXY(uchar Row, uchar Col)
0114 ; {
0114 .dbline 128
0114 ; switch (Row) //选择行
0114 7727 clr R23
0116 6230 cpi R22,2
0118 E0E0 ldi R30,0
011A 7E07 cpc R23,R30
011C 49F0 breq L34
011E 6330 cpi R22,3
0120 E0E0 ldi R30,0
0122 7E07 cpc R23,R30
0124 51F0 breq L35
0126 6430 cpi R22,4
0128 E0E0 ldi R30,0
012A 7E07 cpc R23,R30
012C 59F0 breq L36
012E 0FC0 xjmp L31
0130 X0:
0130 .dbline 129
0130 ; {
0130 L34:
0130 .dbline 131
0130 ; case 2:
0130 ; LCD12864_sendbyte(iCmd, LCDb_L2 + Col); break; //写入第2行的指定列
0130 242F mov R18,R20
0132 2057 subi R18,112 ; addi 144
0134 0027 clr R16
0136 B2DF xcall _LCD12864_sendbyte
0138 .dbline 131
0138 0EC0 xjmp L32
013A L35:
013A .dbline 133
013A ; case 3:
013A ; LCD12864_sendbyte(iCmd, LCDb_L3 + Col); break; //写入第3行的指定列
013A 242F mov R18,R20
013C 2857 subi R18,120 ; addi 136
013E 0027 clr R16
0140 ADDF xcall _LCD12864_sendbyte
0142 .dbline 133
0142 09C0 xjmp L32
0144 L36:
0144 .dbline 135
0144 ; case 4:
0144 ; LCD12864_sendbyte(iCmd, LCDb_L4 + Col); break; //写入第4行的指定列
0144 242F mov R18,R20
0146 2856 subi R18,104 ; addi 152
0148 0027 clr R16
014A A8DF xcall _LCD12864_sendbyte
014C .dbline 135
014C 04C0 xjmp L32
014E L31:
014E .dbline 137
014E 242F mov R18,R20
0150 2058 subi R18,128 ; addi 128
0152 0027 clr R16
0154 A3DF xcall _LCD12864_sendbyte
0156 .dbline 137
0156 L32:
0156 .dbline -2
0156 L30:
0156 0E940000 xcall pop_gset2
015A .dbline 0 ; func end
015A 0895 ret
015C .dbsym r Col 20 c
015C .dbsym r Row 22 c
015C .dbend
015C .dbfunc e LCD12864_initial _LCD12864_initial fV
.even
015C _LCD12864_initial::
015C .dbline -1
015C .dbline 147
015C ; default:
015C ; LCD12864_sendbyte(iCmd, LCDb_L1 + Col); break; //写入第1行的指定列
015C ; }
015C ; }
015C ; /*******************************************
015C ; 函数名称: LCD12864_initial
015C ; 功 能: 12864液晶初始化
015C ; 参 数: 无
015C ; 返回值 : 无
015C ; /********************************************/
015C ; void LCD12864_initial(void)
015C ; {
015C .dbline 148
015C ; Delayms(100); // 等待内部复位
015C 04E6 ldi R16,100
015E 10E0 ldi R17,0
0160 67DF xcall _Delayms
0162 .dbline 149
0162 ; LCD12864_portini(); //端口初始化
0162 7CDF xcall _LCD12864_portini
0164 .dbline 151
0164 ;
0164 ; LCD12864_sendbyte(iCmd, LCDb_FUNCTION); //功能、模式设定
0164 28E3 ldi R18,56
0166 0027 clr R16
0168 99DF xcall _LCD12864_sendbyte
016A L38:
016A .dbline 152
016A L39:
016A .dbline 152
016A ; while(LCD12864_readBF());
016A C2DF xcall _LCD12864_readBF
016C 0023 tst R16
016E E9F7 brne L38
0170 .dbline 153
0170 ; LCD12864_sendbyte(iCmd, LCDb_ON); //打开显示
0170 2CE0 ldi R18,12
0172 0027 clr R16
0174 93DF xcall _LCD12864_sendbyte
0176 L41:
0176 .dbline 154
0176 L42:
0176 .dbline 154
0176 ; while(LCD12864_readBF());
0176 BCDF xcall _LCD12864_readBF
0178 0023 tst R16
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -