📄 yj1602.lis
字号:
0198 A6DF xcall _LCD1602_sendbyte
019A L40:
019A .dbline 153
019A L41:
019A .dbline 153
019A ; while(LCD1602_readBF());
019A CEDF xcall _LCD1602_readBF
019C 0023 tst R16
019E E9F7 brne L40
01A0 .dbline 154
01A0 ; LCD1602_clear(); //清屏
01A0 C5DF xcall _LCD1602_clear
01A2 L43:
01A2 .dbline 155
01A2 L44:
01A2 .dbline 155
01A2 ; while(LCD1602_readBF());
01A2 CADF xcall _LCD1602_readBF
01A4 0023 tst R16
01A6 E9F7 brne L43
01A8 .dbline 156
01A8 ; LCD1602_sendbyte(iCmd, LCDa_ENTRY); // 输入模式设定
01A8 26E0 ldi R18,6
01AA 0027 clr R16
01AC .dbline -2
01AC .dbline 157
01AC ; }
01AC L36:
01AC .dbline 0 ; func end
01AC 9CCF xjmp _LCD1602_sendbyte
01AE .dbend
01AE .dbfunc e LCD1602_wrCGRAM _LCD1602_wrCGRAM fV
01AE ; i -> R20
01AE ; ptCGRAM -> R22,R23
.even
01AE _LCD1602_wrCGRAM::
01AE 0E940000 xcall push_gset2
01B2 B801 movw R22,R16
01B4 .dbline -1
01B4 .dbline 165
01B4 ; /*******************************************
01B4 ; 函数名称: LCD1602_wrCGRAM
01B4 ; 功 能: 向CGRAM写入数据
01B4 ; 参 数: ptCGRAM--CGRAM数据指针
01B4 ; 返回值 : 无
01B4 ; /********************************************/
01B4 ; void LCD1602_wrCGRAM(const uchar *ptCGRAM)
01B4 ; {
01B4 .dbline 167
01B4 ; uchar i;
01B4 ; LCD1602_sendbyte(iCmd, LCDa_CGRAM_ADDR); //写入CGRAM首地址
01B4 20E4 ldi R18,64
01B6 0027 clr R16
01B8 96DF xcall _LCD1602_sendbyte
01BA .dbline 168
01BA ; for (i = 0; i < LCDa_CGMAX; i++) //写入64个字节的CGRAM内容
01BA 4427 clr R20
01BC 08C0 xjmp L50
01BE L47:
01BE .dbline 169
01BE .dbline 170
01BE E42F mov R30,R20
01C0 FF27 clr R31
01C2 E60F add R30,R22
01C4 F71F adc R31,R23
01C6 2491 lpm R18,Z
01C8 01E0 ldi R16,1
01CA 8DDF xcall _LCD1602_sendbyte
01CC .dbline 171
01CC L48:
01CC .dbline 168
01CC 4395 inc R20
01CE L50:
01CE .dbline 168
01CE 4034 cpi R20,64
01D0 B0F3 brlo L47
01D2 .dbline -2
01D2 .dbline 172
01D2 ; {
01D2 ; LCD1602_sendbyte(iDat,ptCGRAM[i]);
01D2 ; }
01D2 ; }
01D2 L46:
01D2 0E940000 xcall pop_gset2
01D6 .dbline 0 ; func end
01D6 0895 ret
01D8 .dbsym r i 20 c
01D8 .dbsym r ptCGRAM 22 pc
01D8 .dbend
01D8 .dbfunc e LCD1602_disCGRAM _LCD1602_disCGRAM fV
01D8 ; i -> R20
.even
01D8 _LCD1602_disCGRAM::
01D8 0E940000 xcall push_gset1
01DC .dbline -1
01DC .dbline 180
01DC ; /*******************************************
01DC ; 函数名称: LCD1602_disCGRAM
01DC ; 功 能: 显示CGRAM内容,将64个字节写在两行,每行32个字节
01DC ; 参 数: 无
01DC ; 返回值 : 无
01DC ; /********************************************/
01DC ; void LCD1602_disCGRAM(void)
01DC ; {
01DC .dbline 182
01DC ; uchar i;
01DC ; LCD1602_gotoXY(1,6); //从第1行第6列开始显示
01DC 26E0 ldi R18,6
01DE 01E0 ldi R16,1
01E0 B9DF xcall _LCD1602_gotoXY
01E2 .dbline 183
01E2 ; for (i = 0;i <4;i++) //显示前32个字节的内容
01E2 4427 clr R20
01E4 04C0 xjmp L55
01E6 L52:
01E6 .dbline 184
01E6 .dbline 185
01E6 242F mov R18,R20
01E8 01E0 ldi R16,1
01EA 7DDF xcall _LCD1602_sendbyte
01EC .dbline 186
01EC L53:
01EC .dbline 183
01EC 4395 inc R20
01EE L55:
01EE .dbline 183
01EE 4430 cpi R20,4
01F0 D0F3 brlo L52
01F2 .dbline 187
01F2 ; {
01F2 ; LCD1602_sendbyte(iDat, i);
01F2 ; }
01F2 ; LCD1602_gotoXY(2,6); //从第2行第6列开始显示
01F2 26E0 ldi R18,6
01F4 02E0 ldi R16,2
01F6 AEDF xcall _LCD1602_gotoXY
01F8 .dbline 188
01F8 ; for (i = 4;i <8;i++) //显示后32个字节的内容
01F8 44E0 ldi R20,4
01FA 04C0 xjmp L59
01FC L56:
01FC .dbline 189
01FC .dbline 190
01FC 242F mov R18,R20
01FE 01E0 ldi R16,1
0200 72DF xcall _LCD1602_sendbyte
0202 .dbline 191
0202 L57:
0202 .dbline 188
0202 4395 inc R20
0204 L59:
0204 .dbline 188
0204 4830 cpi R20,8
0206 D0F3 brlo L56
0208 .dbline -2
0208 .dbline 192
0208 ; {
0208 ; LCD1602_sendbyte(iDat,i);
0208 ; }
0208 ; }
0208 L51:
0208 0E940000 xcall pop_gset1
020C .dbline 0 ; func end
020C 0895 ret
020E .dbsym r i 20 c
020E .dbend
020E .dbfunc e main _main fV
020E ; i -> R20
.even
020E _main::
020E .dbline -1
020E .dbline 200
020E ; /*******************************************
020E ; 函数名称: main
020E ; 功 能: 1602液晶驱动主程序
020E ; 参 数: 无
020E ; 返回值 : 无
020E ; /********************************************/
020E ; void main(void)
020E ; {
020E .dbline 202
020E ; uchar i;
020E ; Board_init( );
020E 26DF xcall _Board_init
0210 .dbline 203
0210 ; LCD1602_initial();
0210 B7DF xcall _LCD1602_initial
0212 29C0 xjmp L62
0214 X1:
0214 .dbline 205
0214 ; while(1)
0214 ; { //滚动显示CGROM的字符
0214 L64:
0214 .dbline 206
0214 L65:
0214 .dbline 206
0214 ; while(LCD1602_readBF());
0214 91DF xcall _LCD1602_readBF
0216 0023 tst R16
0218 E9F7 brne L64
021A .dbline 207
021A ; LCD1602_gotoXY(1,17);
021A 21E1 ldi R18,17
021C 01E0 ldi R16,1
021E 9ADF xcall _LCD1602_gotoXY
0220 .dbline 208
0220 ; LCD1602_sendstr("AVR_PQ1A BOARD");
0220 00E0 ldi R16,<L67
0222 10E0 ldi R17,>L67
0224 73DF xcall _LCD1602_sendstr
0226 L68:
0226 .dbline 209
0226 L69:
0226 .dbline 209
0226 ; while(LCD1602_readBF());
0226 88DF xcall _LCD1602_readBF
0228 0023 tst R16
022A E9F7 brne L68
022C .dbline 210
022C ; LCD1602_gotoXY(2,18);
022C 22E1 ldi R18,18
022E 02E0 ldi R16,2
0230 91DF xcall _LCD1602_gotoXY
0232 .dbline 211
0232 ; LCD1602_sendstr("13212800564");
0232 00E0 ldi R16,<L71
0234 10E0 ldi R17,>L71
0236 6ADF xcall _LCD1602_sendstr
0238 .dbline 212
0238 ; for(i=0;i<30;i++)
0238 4427 clr R20
023A 07C0 xjmp L75
023C L72:
023C .dbline 213
023C .dbline 214
023C 28E1 ldi R18,24
023E 0027 clr R16
0240 52DF xcall _LCD1602_sendbyte
0242 .dbline 215
0242 04EF ldi R16,500
0244 11E0 ldi R17,1
0246 F4DE xcall _Delayms
0248 .dbline 216
0248 L73:
0248 .dbline 212
0248 4395 inc R20
024A L75:
024A .dbline 212
024A 4E31 cpi R20,30
024C B8F3 brlo L72
024E .dbline 217
024E 6EDF xcall _LCD1602_clear
0250 .dbline 219
0250 00E0 ldi R16,<_CGRAM
0252 10E0 ldi R17,>_CGRAM
0254 ACDF xcall _LCD1602_wrCGRAM
0256 .dbline 220
0256 0AE5 ldi R16,90
0258 10E0 ldi R17,0
025A EADE xcall _Delayms
025C .dbline 221
025C BDDF xcall _LCD1602_disCGRAM
025E .dbline 222
025E 00ED ldi R16,2000
0260 17E0 ldi R17,7
0262 E6DE xcall _Delayms
0264 .dbline 223
0264 63DF xcall _LCD1602_clear
0266 .dbline 224
0266 L62:
0266 .dbline 204
0266 D6CF xjmp L65
0268 X2:
0268 .dbline -2
0268 .dbline 225
0268 ; {
0268 ; LCD1602_sendbyte(iCmd, LCDa_D2L);
0268 ; Delayms(500);
0268 ; }
0268 ; LCD1602_clear();
0268 ; //静止显示CGRAM的内容
0268 ; LCD1602_wrCGRAM(CGRAM);
0268 ; Delayms(90);
0268 ; LCD1602_disCGRAM();
0268 ; Delayms(2000);
0268 ; LCD1602_clear();
0268 ; }
0268 ; }
0268 L60:
0268 .dbline 0 ; func end
0268 0895 ret
026A .dbsym r i 20 c
026A .dbend
.area data(ram, con, rel)
0000 .dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\3_1602\YJ1602.C
0000 L71:
0000 .blkb 12
.area idata
0000 313332313238303035363400 .byte 49,51,50,49,50,56,48,48,53,54,52,0
.area data(ram, con, rel)
000C .dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\3_1602\YJ1602.C
000C L67:
000C .blkb 15
.area idata
000C 4156525F5051314120424F41524400 .byte 'A,'V,'R,95,'P,'Q,49,'A,32,'B,'O,'A,'R,'D,0
.area data(ram, con, rel)
001B .dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\3_1602\YJ1602.C
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -