📄 ac15-1.lis
字号:
00FE 0895 ret
0100 .dbsym r Attribc 22 c
0100 .dbsym r CMD 20 c
0100 .dbend
0100 .dbfunc e LcdWriteData _LcdWriteData fV
0100 ; dataW -> R20
.even
0100 _LcdWriteData::
0100 0E940000 xcall push_gset1
0104 402F mov R20,R16
0106 .dbline -1
0106 .dbline 91
0106 ; }
0106 ; //*******************写数据到LCM子函数********************
0106 ; void LcdWriteData(uchar dataW)
0106 ; {
0106 .dbline 92
0106 ; WaitForEnable();
0106 0CD0 xcall _WaitForEnable
0108 .dbline 93
0108 ; LCM_RS_1;LCM_RW_0;_NOP();
0108 C09A sbi 0x18,0
010A .dbline 93
010A C198 cbi 0x18,1
010C .dbline 93
010C 0000 nop
010E .dbline 94
010E ; DataPort=dataW;_NOP();
010E 4BBB out 0x1b,R20
0110 .dbline 94
0110 0000 nop
0112 .dbline 95
0112 ; LCM_EN_1;_NOP();_NOP();LCM_EN_0;
0112 C29A sbi 0x18,2
0114 .dbline 95
0114 0000 nop
0116 .dbline 95
0116 0000 nop
0118 .dbline 95
0118 C298 cbi 0x18,2
011A .dbline -2
011A L19:
011A 0E940000 xcall pop_gset1
011E .dbline 0 ; func end
011E 0895 ret
0120 .dbsym r dataW 20 c
0120 .dbend
0120 .dbfunc e WaitForEnable _WaitForEnable fV
0120 ; val -> R16
.even
0120 _WaitForEnable::
0120 .dbline -1
0120 .dbline 99
0120 ; }
0120 ; //*******************检测LCD忙信号子函数*********************
0120 ; void WaitForEnable(void)
0120 ; {
0120 .dbline 101
0120 ; uchar val;
0120 ; DataPort=0xff;
0120 8FEF ldi R24,255
0122 8BBB out 0x1b,R24
0124 .dbline 102
0124 ; LCM_RS_0;LCM_RW_1;_NOP();
0124 C098 cbi 0x18,0
0126 .dbline 102
0126 C19A sbi 0x18,1
0128 .dbline 102
0128 0000 nop
012A .dbline 103
012A ; LCM_EN_1;_NOP();_NOP();
012A C29A sbi 0x18,2
012C .dbline 103
012C 0000 nop
012E .dbline 103
012E 0000 nop
0130 .dbline 104
0130 ; DDRA=0x00;
0130 2224 clr R2
0132 2ABA out 0x1a,R2
0134 .dbline 105
0134 ; val=PINA;
0134 09B3 in R16,0x19
0136 01C0 xjmp L22
0138 L21:
0138 .dbline 106
0138 09B3 in R16,0x19
013A L22:
013A .dbline 106
013A ; while(val&Busy)val=PINA;
013A 07FD sbrc R16,7
013C FDCF rjmp L21
013E .dbline 107
013E ; LCM_EN_0;
013E C298 cbi 0x18,2
0140 .dbline 108
0140 ; DDRA=0xff;
0140 8FEF ldi R24,255
0142 8ABB out 0x1a,R24
0144 .dbline -2
0144 L20:
0144 .dbline 0 ; func end
0144 0895 ret
0146 .dbsym r val 16 c
0146 .dbend
0146 .dbfunc e Delay_1ms _Delay_1ms fV
0146 ; i -> R16,R17
.even
0146 _Delay_1ms::
0146 .dbline -1
0146 .dbline 112
0146 ; }
0146 ; //****************************************
0146 ; void Delay_1ms(void) //1mS延时子函数
0146 ; { uint i;
0146 .dbline 113
0146 ; for(i=1;i<(uint)(xtal*143-2);i++)
0146 01E0 ldi R16,1
0148 10E0 ldi R17,0
014A 02C0 xjmp L28
014C L25:
014C .dbline 114
014C L26:
014C .dbline 113
014C 0F5F subi R16,255 ; offset = 1
014E 1F4F sbci R17,255
0150 L28:
0150 .dbline 113
0150 0637 cpi R16,118
0152 E4E0 ldi R30,4
0154 1E07 cpc R17,R30
0156 D0F3 brlo L25
0158 .dbline -2
0158 L24:
0158 .dbline 0 ; func end
0158 0895 ret
015A .dbsym r i 16 i
015A .dbend
015A .dbfunc e Delay_nms _Delay_nms fV
015A ; i -> R20,R21
015A ; n -> R22,R23
.even
015A _Delay_nms::
015A 0E940000 xcall push_gset2
015E B801 movw R22,R16
0160 .dbline -1
0160 .dbline 118
0160 ; ;
0160 ; }
0160 ; //====================================
0160 ; void Delay_nms(uint n) //n*1mS延时子函数
0160 ; {
0160 .dbline 119
0160 ; uint i=0;
0160 4427 clr R20
0162 5527 clr R21
0164 03C0 xjmp L31
0166 L30:
0166 .dbline 121
0166 .dbline 121
0166 EFDF xcall _Delay_1ms
0168 .dbline 122
0168 4F5F subi R20,255 ; offset = 1
016A 5F4F sbci R21,255
016C .dbline 123
016C L31:
016C .dbline 120
016C ; while(i<n)
016C 4617 cp R20,R22
016E 5707 cpc R21,R23
0170 D0F3 brlo L30
0172 .dbline -2
0172 L29:
0172 0E940000 xcall pop_gset2
0176 .dbline 0 ; func end
0176 0895 ret
0178 .dbsym r i 20 i
0178 .dbsym r n 22 i
0178 .dbend
0178 .dbfunc e port_init _port_init fV
.even
0178 _port_init::
0178 .dbline -1
0178 .dbline 127
0178 ; {Delay_1ms();
0178 ; i++;
0178 ; }
0178 ; }
0178 ; /*****************端口初始化********************/
0178 ; void port_init(void)
0178 ; {
0178 .dbline 128
0178 ; PORTA = 0x00;
0178 2224 clr R2
017A 2BBA out 0x1b,R2
017C .dbline 129
017C ; DDRA = 0xFF;
017C 8FEF ldi R24,255
017E 8ABB out 0x1a,R24
0180 .dbline 130
0180 ; PORTB = 0x00;
0180 28BA out 0x18,R2
0182 .dbline 131
0182 ; DDRB = 0xFF;
0182 87BB out 0x17,R24
0184 .dbline 132
0184 ; PORTC = 0x00;
0184 25BA out 0x15,R2
0186 .dbline 133
0186 ; DDRC = 0x03;
0186 83E0 ldi R24,3
0188 84BB out 0x14,R24
018A .dbline 134
018A ; PORTD = 0xFF;
018A 8FEF ldi R24,255
018C 82BB out 0x12,R24
018E .dbline 135
018E ; DDRD = 0x00;
018E 21BA out 0x11,R2
0190 .dbline -2
0190 L33:
0190 .dbline 0 ; func end
0190 0895 ret
0192 .dbend
0192 .dbfunc e scan_key _scan_key fc
0192 ; temp -> R16
.even
0192 _scan_key::
0192 .dbline -1
0192 .dbline 145
0192 ; }
0192 ; /*************************************/
0192 ; char com_data;
0192 ; uchar cnt;
0192 ; void delay_iic(int n);
0192 ; uchar rd_24c01(char a);
0192 ; void wr_24c01(char a,char b);
0192 ; /******************扫描按键***************/
0192 ; uchar scan_key(void)
0192 ; {
0192 .dbline 147
0192 ; uchar temp;
0192 ; temp=PIND;
0192 00B3 in R16,0x10
0194 .dbline 148
0194 ; return temp;
0194 .dbline -2
0194 L34:
0194 .dbline 0 ; func end
0194 0895 ret
0196 .dbsym r temp 16 c
0196 .dbend
0196 .dbfunc e delay _delay fV
0196 ; i -> R20,R21
0196 ; j -> R22,R23
0196 ; k -> R16,R17
.even
0196 _delay::
0196 0E940000 xcall push_gset2
019A .dbline -1
019A .dbline 152
019A ; }
019A ; /***************延时子函数******************/
019A ; void delay(uint k)
019A ; {
019A .dbline 154
019A ; uint i,j;
019A ; for(i=0;i<k;i++)
019A 4427 clr R20
019C 5527 clr R21
019E 0BC0 xjmp L39
01A0 L36:
01A0 .dbline 155
01A0 ; {for(j=0;j<121;j++)
01A0 .dbline 155
01A0 6627 clr R22
01A2 7727 clr R23
01A4 02C0 xjmp L43
01A6 L40:
01A6 .dbline 156
01A6 .dbline 156
01A6 .dbline 156
01A6 L41:
01A6 .dbline 155
01A6 6F5F subi R22,255 ; offset = 1
01A8 7F4F sbci R23,255
01AA L43:
01AA .dbline 155
01AA 6937 cpi R22,121
01AC E0E0 ldi R30,0
01AE 7E07 cpc R23,R30
01B0 D0F3 brlo L40
01B2 .dbline 156
01B2 L37:
01B2 .dbline 154
01B2 4F5F subi R20,255 ; offset = 1
01B4 5F4F sbci R21,255
01B6 L39:
01B6 .dbline 154
01B6 4017 cp R20,R16
01B8 5107 cpc R21,R17
01BA 90F3 brlo L36
01BC .dbline -2
01BC L35:
01BC 0E940000 xcall pop_gset2
01C0 .dbline 0 ; func end
01C0 0895 ret
01C2 .dbsym r i 20 i
01C2 .dbsym r j 22 i
01C2 .dbsym r k 16 i
01C2 .dbend
01C2 .dbfunc e start _start fV
.even
01C2 _start::
01C2 .dbline -1
01C2 .dbline 160
01C2 ; {;}}
01C2 ; }
01C2 ; /*****************启动读写时序子函数******************/
01C2 ; void start(void)
01C2 ; {DDRC=0x03;
01C2 .dbline 160
01C2 83E0 ldi R24,3
01C4 84BB out 0x14,R24
01C6 .dbline 161
01C6 ; SDA_1;Some_NOP();
01C6 A99A sbi 0x15,1
01C8 .dbline 161
01C8 .dbline 161
01C8 0000 nop
01CA .dbline 161
01CA 0000 nop
01CC .dbline 161
01CC 0000 nop
01CE .dbline 161
01CE 0000 nop
01D0 .dbline 161
01D0 0000 nop
01D2 .dbline 161
01D2 0000 nop
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -