📄 lcd.lis
字号:
00C8 ; {
00C8 .dbline 52
00C8 ; LcdWriteCommand(0x38,0); //8位数据传送,2行显示,5*7字形,不检测忙信号
00C8 2227 clr R18
00CA 3327 clr R19
00CC 08E3 ldi R16,56
00CE 10E0 ldi R17,0
00D0 30D0 xcall _LcdWriteCommand
00D2 .dbline 53
00D2 ; Delay_nms(5);
00D2 05E0 ldi R16,5
00D4 10E0 ldi R17,0
00D6 0E940000 xcall _Delay_nms
00DA .dbline 54
00DA ; LcdWriteCommand(0x38,0); //8位数据传送,2行显示,5*7字形,不检测忙信号
00DA 2227 clr R18
00DC 3327 clr R19
00DE 08E3 ldi R16,56
00E0 10E0 ldi R17,0
00E2 27D0 xcall _LcdWriteCommand
00E4 .dbline 55
00E4 ; Delay_nms(5);
00E4 05E0 ldi R16,5
00E6 10E0 ldi R17,0
00E8 0E940000 xcall _Delay_nms
00EC .dbline 56
00EC ; LcdWriteCommand(0x38,0); //8位数据传送,2行显示,5*7字形,不检测忙信号
00EC 2227 clr R18
00EE 3327 clr R19
00F0 08E3 ldi R16,56
00F2 10E0 ldi R17,0
00F4 1ED0 xcall _LcdWriteCommand
00F6 .dbline 57
00F6 ; Delay_nms(5);
00F6 05E0 ldi R16,5
00F8 10E0 ldi R17,0
00FA 0E940000 xcall _Delay_nms
00FE .dbline 58
00FE ; LcdWriteCommand(0x38,1); //8位数据传送,2行显示,5*7字形,检测忙信号
00FE 21E0 ldi R18,1
0100 30E0 ldi R19,0
0102 08E3 ldi R16,56
0104 10E0 ldi R17,0
0106 15D0 xcall _LcdWriteCommand
0108 .dbline 59
0108 ; LcdWriteCommand(0x08,1); //关闭显示,检测忙信号
0108 21E0 ldi R18,1
010A 30E0 ldi R19,0
010C 08E0 ldi R16,8
010E 10E0 ldi R17,0
0110 10D0 xcall _LcdWriteCommand
0112 .dbline 60
0112 ; LcdWriteCommand(0x01,1); //清屏,检测忙信号
0112 21E0 ldi R18,1
0114 30E0 ldi R19,0
0116 01E0 ldi R16,1
0118 10E0 ldi R17,0
011A 0BD0 xcall _LcdWriteCommand
011C .dbline 61
011C ; LcdWriteCommand(0x06,1); //显示光标右移设置,检测忙信号
011C 21E0 ldi R18,1
011E 30E0 ldi R19,0
0120 06E0 ldi R16,6
0122 10E0 ldi R17,0
0124 06D0 xcall _LcdWriteCommand
0126 .dbline 62
0126 ; LcdWriteCommand(0x0c,1); //显示屏打开,光标不显示、不闪烁,检测忙信号
0126 21E0 ldi R18,1
0128 30E0 ldi R19,0
012A 0CE0 ldi R16,12
012C 10E0 ldi R17,0
012E 01D0 xcall _LcdWriteCommand
0130 .dbline -2
0130 L19:
0130 .dbline 0 ; func end
0130 0895 ret
0132 .dbend
0132 .dbfunc e LcdWriteCommand _LcdWriteCommand fV
0132 ; Attribc -> R22
0132 ; CMD -> R20
.even
0132 _LcdWriteCommand::
0132 0E940000 xcall push_gset2
0136 622F mov R22,R18
0138 402F mov R20,R16
013A .dbline -1
013A .dbline 66
013A ; }
013A ; //****************************************
013A ; void LcdWriteCommand(uchar CMD,uchar Attribc)
013A ; {
013A .dbline 67
013A ; if(Attribc)WaitForEnable();
013A 6623 tst R22
013C 09F0 breq L21
013E .dbline 67
013E 24D0 xcall _WaitForEnable
0140 L21:
0140 .dbline 68
0140 ; Delay_nms(5);
0140 05E0 ldi R16,5
0142 10E0 ldi R17,0
0144 0E940000 xcall _Delay_nms
0148 .dbline 69
0148 ; LCM_RS_0;LCM_RW_0;_NOP();
0148 C098 cbi 0x18,0
014A .dbline 69
014A C298 cbi 0x18,2
014C .dbline 69
014C 0000 nop
014E .dbline 70
014E ; DataPort=CMD;_NOP();
014E 45BB out 0x15,R20
0150 .dbline 70
0150 0000 nop
0152 .dbline 71
0152 ; LCM_EN_1;_NOP();_NOP();LCM_EN_0;
0152 C39A sbi 0x18,3
0154 .dbline 71
0154 0000 nop
0156 .dbline 71
0156 0000 nop
0158 .dbline 71
0158 C398 cbi 0x18,3
015A .dbline -2
015A L20:
015A 0E940000 xcall pop_gset2
015E .dbline 0 ; func end
015E 0895 ret
0160 .dbsym r Attribc 22 c
0160 .dbsym r CMD 20 c
0160 .dbend
0160 .dbfunc e LcdWriteData _LcdWriteData fV
0160 ; dataW -> R20
.even
0160 _LcdWriteData::
0160 0E940000 xcall push_gset1
0164 402F mov R20,R16
0166 .dbline -1
0166 .dbline 75
0166 ; }
0166 ; //***************************************
0166 ; void LcdWriteData(uchar dataW)
0166 ; {
0166 .dbline 76
0166 ; WaitForEnable();
0166 10D0 xcall _WaitForEnable
0168 .dbline 77
0168 ; Delay_nms(5);
0168 05E0 ldi R16,5
016A 10E0 ldi R17,0
016C 0E940000 xcall _Delay_nms
0170 .dbline 78
0170 ; LCM_RS_1;LCM_RW_0;_NOP();
0170 C09A sbi 0x18,0
0172 .dbline 78
0172 C298 cbi 0x18,2
0174 .dbline 78
0174 0000 nop
0176 .dbline 79
0176 ; DataPort=dataW;_NOP();
0176 45BB out 0x15,R20
0178 .dbline 79
0178 0000 nop
017A .dbline 80
017A ; LCM_EN_1;_NOP();_NOP();LCM_EN_0;
017A C39A sbi 0x18,3
017C .dbline 80
017C 0000 nop
017E .dbline 80
017E 0000 nop
0180 .dbline 80
0180 C398 cbi 0x18,3
0182 .dbline -2
0182 L23:
0182 0E940000 xcall pop_gset1
0186 .dbline 0 ; func end
0186 0895 ret
0188 .dbsym r dataW 20 c
0188 .dbend
0188 .dbfunc e WaitForEnable _WaitForEnable fV
0188 ; val -> R16
.even
0188 _WaitForEnable::
0188 .dbline -1
0188 .dbline 84
0188 ; }
0188 ; //****************************************
0188 ; void WaitForEnable(void)
0188 ; {
0188 .dbline 86
0188 ; uchar val;
0188 ; DataPort=0xff;
0188 8FEF ldi R24,255
018A 85BB out 0x15,R24
018C .dbline 87
018C ; LCM_RS_0;LCM_RW_1;_NOP();
018C C098 cbi 0x18,0
018E .dbline 87
018E C29A sbi 0x18,2
0190 .dbline 87
0190 0000 nop
0192 .dbline 88
0192 ; LCM_EN_1;_NOP();_NOP();
0192 C39A sbi 0x18,3
0194 .dbline 88
0194 0000 nop
0196 .dbline 88
0196 0000 nop
0198 .dbline 89
0198 ; DDRC=0x00;
0198 2224 clr R2
019A 24BA out 0x14,R2
019C .dbline 90
019C ; val=PINA;
019C 09B3 in R16,0x19
019E 02C0 xjmp L26
01A0 L25:
01A0 .dbline 91
01A0 .dbline 91
01A0 03B3 in R16,0x13
01A2 .dbline 91
01A2 A895 wdr
01A4 .dbline 91
01A4 L26:
01A4 .dbline 91
01A4 ; while(val&Busy){val=PINC;WDR();}
01A4 07FD sbrc R16,7
01A6 FCCF rjmp L25
01A8 .dbline 92
01A8 ; LCM_EN_0;
01A8 C398 cbi 0x18,3
01AA .dbline 93
01AA ; DDRC=0xff;
01AA 8FEF ldi R24,255
01AC 84BB out 0x14,R24
01AE .dbline -2
01AE L24:
01AE .dbline 0 ; func end
01AE 0895 ret
01B0 .dbsym r val 16 c
01B0 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -