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