📄 ac15-2.lis
字号:
00FA 0E940000 xcall pop_gset2
00FE .dbline 0 ; func end
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 95
0106 ; }
0106 ; //*******************写数据到LCM子函数********************
0106 ; void LcdWriteData(uchar dataW)
0106 ; {
0106 .dbline 96
0106 ; WaitForEnable();
0106 0CD0 xcall _WaitForEnable
0108 .dbline 97
0108 ; LCM_RS_1;LCM_RW_0;_NOP();
0108 C09A sbi 0x18,0
010A .dbline 97
010A C198 cbi 0x18,1
010C .dbline 97
010C 0000 nop
010E .dbline 98
010E ; DataPort=dataW;_NOP();
010E 4BBB out 0x1b,R20
0110 .dbline 98
0110 0000 nop
0112 .dbline 99
0112 ; LCM_EN_1;_NOP();_NOP();LCM_EN_0;
0112 C29A sbi 0x18,2
0114 .dbline 99
0114 0000 nop
0116 .dbline 99
0116 0000 nop
0118 .dbline 99
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 103
0120 ; }
0120 ; //*******************检测LCD忙信号子函数*********************
0120 ; void WaitForEnable(void)
0120 ; {
0120 .dbline 105
0120 ; uchar val;
0120 ; DataPort=0xff;
0120 8FEF ldi R24,255
0122 8BBB out 0x1b,R24
0124 .dbline 106
0124 ; LCM_RS_0;LCM_RW_1;_NOP();
0124 C098 cbi 0x18,0
0126 .dbline 106
0126 C19A sbi 0x18,1
0128 .dbline 106
0128 0000 nop
012A .dbline 107
012A ; LCM_EN_1;_NOP();_NOP();
012A C29A sbi 0x18,2
012C .dbline 107
012C 0000 nop
012E .dbline 107
012E 0000 nop
0130 .dbline 108
0130 ; DDRA=0x00;
0130 2224 clr R2
0132 2ABA out 0x1a,R2
0134 .dbline 109
0134 ; val=PINA;
0134 09B3 in R16,0x19
0136 01C0 xjmp L22
0138 L21:
0138 .dbline 110
0138 09B3 in R16,0x19
013A L22:
013A .dbline 110
013A ; while(val&Busy)val=PINA;
013A 07FD sbrc R16,7
013C FDCF rjmp L21
013E .dbline 111
013E ; LCM_EN_0;
013E C298 cbi 0x18,2
0140 .dbline 112
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 116
0146 ; }
0146 ; //****************************************
0146 ; void Delay_1ms(void) //1mS延时子函数
0146 ; { uint i;
0146 .dbline 117
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 118
014C L26:
014C .dbline 117
014C 0F5F subi R16,255 ; offset = 1
014E 1F4F sbci R17,255
0150 L28:
0150 .dbline 117
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 122
0160 ; ;
0160 ; }
0160 ; //====================================
0160 ; void Delay_nms(uint n) //n*1mS延时子函数
0160 ; {
0160 .dbline 123
0160 ; uint i=0;
0160 4427 clr R20
0162 5527 clr R21
0164 03C0 xjmp L31
0166 L30:
0166 .dbline 125
0166 .dbline 125
0166 EFDF xcall _Delay_1ms
0168 .dbline 126
0168 4F5F subi R20,255 ; offset = 1
016A 5F4F sbci R21,255
016C .dbline 127
016C L31:
016C .dbline 124
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 140
0178 ; {Delay_1ms();
0178 ; i++;
0178 ; }
0178 ; }
0178 ; /*******************定义结构体变量time1,time2*******************/
0178 ; struct date
0178 ; {
0178 ; uchar hour;
0178 ; uchar min;
0178 ; uchar sec;
0178 ; uchar dida;
0178 ; }time1,time2;
0178 ;
0178 ; /*******************端口初始化*******************/
0178 ; void port_init(void)
0178 ; {
0178 .dbline 141
0178 ; PORTA = 0x00;
0178 2224 clr R2
017A 2BBA out 0x1b,R2
017C .dbline 142
017C ; DDRA = 0xFF;
017C 8FEF ldi R24,255
017E 8ABB out 0x1a,R24
0180 .dbline 143
0180 ; PORTB = 0x00;
0180 28BA out 0x18,R2
0182 .dbline 144
0182 ; DDRB = 0xFF;
0182 87BB out 0x17,R24
0184 .dbline 145
0184 ; PORTC = 0x00;
0184 25BA out 0x15,R2
0186 .dbline 146
0186 ; DDRC = 0x03;
0186 83E0 ldi R24,3
0188 84BB out 0x14,R24
018A .dbline 147
018A ; PORTD = 0xFF;
018A 8FEF ldi R24,255
018C 82BB out 0x12,R24
018E .dbline 148
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 158
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 160
0192 ; uchar temp;
0192 ; temp=PIND;
0192 00B3 in R16,0x10
0194 .dbline 161
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 165
019A ; }
019A ; /***************延时子函数******************/
019A ; void delay(uint k)
019A ; {
019A .dbline 167
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 168
01A0 ; {for(j=0;j<121;j++)
01A0 .dbline 168
01A0 6627 clr R22
01A2 7727 clr R23
01A4 02C0 xjmp L43
01A6 L40:
01A6 .dbline 169
01A6 .dbline 169
01A6 .dbline 169
01A6 L41:
01A6 .dbline 168
01A6 6F5F subi R22,255 ; offset = 1
01A8 7F4F sbci R23,255
01AA L43:
01AA .dbline 168
01AA 6937 cpi R22,121
01AC E0E0 ldi R30,0
01AE 7E07 cpc R23,R30
01B0 D0F3 brlo L40
01B2 .dbline 169
01B2 L37:
01B2 .dbline 167
01B2 4F5F subi R20,255 ; offset = 1
01B4 5F4F sbci R21,255
01B6 L39:
01B6 .dbline 167
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 174
01C2 ; {;}}
01C2 ; }
01C2 ;
01C2 ; /*****************启动读写时序子函数******************/
01C2 ; void start(void)
01C2 ; {DDRC=0x03;
01C2 .dbline 174
01C2 83E0 ldi R24,3
01C4 84BB out 0x14,R24
01C6 .dbline 175
01C6 ; SDA_1;Some_NOP();
01C6 A99A sbi 0x15,1
01C8 .dbline 175
01C8 .dbline 175
01C8 0000 nop
01CA .dbline 175
01CA 0000 nop
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -