📄 ac14-1.lis
字号:
00F8 ; LocateXY(x,y);
00F8 262F mov R18,R22
00FA 042F mov R16,R20
00FC E8DF xcall _LocateXY
00FE .dbline 79
00FE ; LcdWriteData(Wdata);
00FE 0C81 ldd R16,y+4
0100 38D0 xcall _LcdWriteData
0102 .dbline -2
0102 L18:
0102 0E940000 xcall pop_gset2
0106 .dbline 0 ; func end
0106 0895 ret
0108 .dbsym l Wdata 4 c
0108 .dbsym r y 22 c
0108 .dbsym r x 20 c
0108 .dbend
0108 .dbfunc e InitLcd _InitLcd fV
.even
0108 _InitLcd::
0108 .dbline -1
0108 .dbline 83
0108 ; }
0108 ; //*******************LCD初始化子函数*********************
0108 ; void InitLcd(void)
0108 ; {
0108 .dbline 84
0108 ; LcdWriteCommand(0x38,0);
0108 2227 clr R18
010A 08E3 ldi R16,56
010C 1FD0 xcall _LcdWriteCommand
010E .dbline 85
010E ; Delay_nms(5);
010E 05E0 ldi R16,5
0110 10E0 ldi R17,0
0112 5CD0 xcall _Delay_nms
0114 .dbline 86
0114 ; LcdWriteCommand(0x38,0);
0114 2227 clr R18
0116 08E3 ldi R16,56
0118 19D0 xcall _LcdWriteCommand
011A .dbline 87
011A ; Delay_nms(5);
011A 05E0 ldi R16,5
011C 10E0 ldi R17,0
011E 56D0 xcall _Delay_nms
0120 .dbline 88
0120 ; LcdWriteCommand(0x38,0);
0120 2227 clr R18
0122 08E3 ldi R16,56
0124 13D0 xcall _LcdWriteCommand
0126 .dbline 89
0126 ; Delay_nms(5);
0126 05E0 ldi R16,5
0128 10E0 ldi R17,0
012A 50D0 xcall _Delay_nms
012C .dbline 90
012C ; LcdWriteCommand(0x38,1);
012C 21E0 ldi R18,1
012E 08E3 ldi R16,56
0130 0DD0 xcall _LcdWriteCommand
0132 .dbline 91
0132 ; LcdWriteCommand(0x08,1);
0132 21E0 ldi R18,1
0134 08E0 ldi R16,8
0136 0AD0 xcall _LcdWriteCommand
0138 .dbline 92
0138 ; LcdWriteCommand(0x01,1);
0138 21E0 ldi R18,1
013A 01E0 ldi R16,1
013C 07D0 xcall _LcdWriteCommand
013E .dbline 93
013E ; LcdWriteCommand(0x06,1);
013E 21E0 ldi R18,1
0140 06E0 ldi R16,6
0142 04D0 xcall _LcdWriteCommand
0144 .dbline 94
0144 ; LcdWriteCommand(0x0c,1);
0144 21E0 ldi R18,1
0146 0CE0 ldi R16,12
0148 01D0 xcall _LcdWriteCommand
014A .dbline -2
014A L19:
014A .dbline 0 ; func end
014A 0895 ret
014C .dbend
014C .dbfunc e LcdWriteCommand _LcdWriteCommand fV
014C ; Attribc -> R22
014C ; CMD -> R20
.even
014C _LcdWriteCommand::
014C 0E940000 xcall push_gset2
0150 622F mov R22,R18
0152 402F mov R20,R16
0154 .dbline -1
0154 .dbline 98
0154 ; }
0154 ; //********************写命令到LCM子函数********************
0154 ; void LcdWriteCommand(uchar CMD,uchar Attribc)
0154 ; {
0154 .dbline 99
0154 ; if(Attribc)WaitForEnable();
0154 6623 tst R22
0156 09F0 breq L21
0158 .dbline 99
0158 1CD0 xcall _WaitForEnable
015A L21:
015A .dbline 100
015A ; LCM_RS_0;LCM_RW_0;_NOP();
015A C098 cbi 0x18,0
015C .dbline 100
015C C198 cbi 0x18,1
015E .dbline 100
015E 0000 nop
0160 .dbline 101
0160 ; DataPort=CMD;_NOP();
0160 4BBB out 0x1b,R20
0162 .dbline 101
0162 0000 nop
0164 .dbline 102
0164 ; LCM_EN_1;_NOP();_NOP();LCM_EN_0;
0164 C29A sbi 0x18,2
0166 .dbline 102
0166 0000 nop
0168 .dbline 102
0168 0000 nop
016A .dbline 102
016A C298 cbi 0x18,2
016C .dbline -2
016C L20:
016C 0E940000 xcall pop_gset2
0170 .dbline 0 ; func end
0170 0895 ret
0172 .dbsym r Attribc 22 c
0172 .dbsym r CMD 20 c
0172 .dbend
0172 .dbfunc e LcdWriteData _LcdWriteData fV
0172 ; dataW -> R20
.even
0172 _LcdWriteData::
0172 0E940000 xcall push_gset1
0176 402F mov R20,R16
0178 .dbline -1
0178 .dbline 106
0178 ; }
0178 ; //*******************写数据到LCM子函数********************
0178 ; void LcdWriteData(uchar dataW)
0178 ; {
0178 .dbline 107
0178 ; WaitForEnable();
0178 0CD0 xcall _WaitForEnable
017A .dbline 108
017A ; LCM_RS_1;LCM_RW_0;_NOP();
017A C09A sbi 0x18,0
017C .dbline 108
017C C198 cbi 0x18,1
017E .dbline 108
017E 0000 nop
0180 .dbline 109
0180 ; DataPort=dataW;_NOP();
0180 4BBB out 0x1b,R20
0182 .dbline 109
0182 0000 nop
0184 .dbline 110
0184 ; LCM_EN_1;_NOP();_NOP();LCM_EN_0;
0184 C29A sbi 0x18,2
0186 .dbline 110
0186 0000 nop
0188 .dbline 110
0188 0000 nop
018A .dbline 110
018A C298 cbi 0x18,2
018C .dbline -2
018C L23:
018C 0E940000 xcall pop_gset1
0190 .dbline 0 ; func end
0190 0895 ret
0192 .dbsym r dataW 20 c
0192 .dbend
0192 .dbfunc e WaitForEnable _WaitForEnable fV
0192 ; val -> R16
.even
0192 _WaitForEnable::
0192 .dbline -1
0192 .dbline 114
0192 ; }
0192 ; //*******************检测LCD忙信号子函数*********************
0192 ; void WaitForEnable(void)
0192 ; {
0192 .dbline 116
0192 ; uchar val;
0192 ; DataPort=0xff;
0192 8FEF ldi R24,255
0194 8BBB out 0x1b,R24
0196 .dbline 117
0196 ; LCM_RS_0;LCM_RW_1;_NOP();
0196 C098 cbi 0x18,0
0198 .dbline 117
0198 C19A sbi 0x18,1
019A .dbline 117
019A 0000 nop
019C .dbline 118
019C ; LCM_EN_1;_NOP();_NOP();
019C C29A sbi 0x18,2
019E .dbline 118
019E 0000 nop
01A0 .dbline 118
01A0 0000 nop
01A2 .dbline 119
01A2 ; DDRA=0x00;
01A2 2224 clr R2
01A4 2ABA out 0x1a,R2
01A6 .dbline 120
01A6 ; val=PINA;
01A6 09B3 in R16,0x19
01A8 01C0 xjmp L26
01AA L25:
01AA .dbline 121
01AA 09B3 in R16,0x19
01AC L26:
01AC .dbline 121
01AC ; while(val&Busy)val=PINA;
01AC 07FD sbrc R16,7
01AE FDCF rjmp L25
01B0 .dbline 122
01B0 ; LCM_EN_0;
01B0 C298 cbi 0x18,2
01B2 .dbline 123
01B2 ; DDRA=0xff;
01B2 8FEF ldi R24,255
01B4 8ABB out 0x1a,R24
01B6 .dbline -2
01B6 L24:
01B6 .dbline 0 ; func end
01B6 0895 ret
01B8 .dbsym r val 16 c
01B8 .dbend
01B8 .dbfunc e Delay_1ms _Delay_1ms fV
01B8 ; i -> R16,R17
.even
01B8 _Delay_1ms::
01B8 .dbline -1
01B8 .dbline 127
01B8 ; }
01B8 ; //****************************************
01B8 ; void Delay_1ms(void) //1mS延时子函数
01B8 ; { uint i;
01B8 .dbline 128
01B8 ; for(i=1;i<(uint)(xtal*143-2);i++)
01B8 01E0 ldi R16,1
01BA 10E0 ldi R17,0
01BC 02C0 xjmp L32
01BE L29:
01BE .dbline 129
01BE L30:
01BE .dbline 128
01BE 0F5F subi R16,255 ; offset = 1
01C0 1F4F sbci R17,255
01C2 L32:
01C2 .dbline 128
01C2 0637 cpi R16,118
01C4 E4E0 ldi R30,4
01C6 1E07 cpc R17,R30
01C8 D0F3 brlo L29
01CA .dbline -2
01CA L28:
01CA .dbline 0 ; func end
01CA 0895 ret
01CC .dbsym r i 16 i
01CC .dbend
01CC .dbfunc e Delay_nms _Delay_nms fV
01CC ; i -> R20,R21
01CC ; n -> R22,R23
.even
01CC _Delay_nms::
01CC 0E940000 xcall push_gset2
01D0 B801 movw R22,R16
01D2 .dbline -1
01D2 .dbline 133
01D2 ; ;
01D2 ; }
01D2 ; //====================================
01D2 ; void Delay_nms(uint n) //n*1mS延时子函数
01D2 ; {
01D2 .dbline 134
01D2 ; uint i=0;
01D2 4427 clr R20
01D4 5527 clr R21
01D6 03C0 xjmp L35
01D8 L34:
01D8 .dbline 136
01D8 .dbline 136
01D8 EFDF xcall _Delay_1ms
01DA .dbline 137
01DA 4F5F subi R20,255 ; offset = 1
01DC 5F4F sbci R21,255
01DE .dbline 138
01DE L35:
01DE .dbline 135
01DE ; while(i<n)
01DE 4617 cp R20,R22
01E0 5707 cpc R21,R23
01E2 D0F3 brlo L34
01E4 .dbline -2
01E4 L33:
01E4 0E940000 xcall pop_gset2
01E8 .dbline 0 ; func end
01E8 0895 ret
01EA .dbsym r i 20 i
01EA .dbsym r n 22 i
01EA .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -