📄 ds1302_main.lis
字号:
00DC 00E8 ldi R16,128
00DE 90DF xcall _ds1302_write_byte
00E0 .dbline 126
00E0 FA01 movw R30,R20
00E2 2081 ldd R18,z+0
00E4 0AE8 ldi R16,138
00E6 8CDF xcall _ds1302_write_byte
00E8 .dbline 127
00E8 20E8 ldi R18,128
00EA 0EE8 ldi R16,142
00EC 89DF xcall _ds1302_write_byte
00EE .dbline -2
00EE L27:
00EE .dbline 0 ; func end
00EE 5991 ld R21,y+
00F0 4991 ld R20,y+
00F2 0895 ret
00F4 .dbsym r time_data 20 pc
00F4 .dbend
00F4 .dbfunc e ds1302_read_time _ds1302_read_time fV
00F4 ; time_data -> R20,R21
.even
00F4 _ds1302_read_time::
00F4 0E940000 xcall push_xgsetF00C
00F8 A801 movw R20,R16
00FA .dbline -1
00FA .dbline 131
00FA .dbline 132
00FA 4F5F subi R20,255 ; offset = 1
00FC 5F4F sbci R21,255
00FE .dbline 133
00FE 0CE8 ldi R16,140
0100 A1DF xcall _ds1302_read_byte
0102 FA01 movw R30,R20
0104 0083 std z+0,R16
0106 .dbline 134
0106 4F5F subi R20,255 ; offset = 1
0108 5F4F sbci R21,255
010A .dbline 135
010A 08E8 ldi R16,136
010C 9BDF xcall _ds1302_read_byte
010E FA01 movw R30,R20
0110 0083 std z+0,R16
0112 .dbline 136
0112 4F5F subi R20,255 ; offset = 1
0114 5F4F sbci R21,255
0116 .dbline 137
0116 06E8 ldi R16,134
0118 95DF xcall _ds1302_read_byte
011A A02E mov R10,R16
011C FA01 movw R30,R20
011E A082 std z+0,R10
0120 .dbline 138
0120 4F5F subi R20,255 ; offset = 1
0122 5F4F sbci R21,255
0124 .dbline 139
0124 04E8 ldi R16,132
0126 8EDF xcall _ds1302_read_byte
0128 A02E mov R10,R16
012A FA01 movw R30,R20
012C A082 std z+0,R10
012E .dbline 140
012E 4F5F subi R20,255 ; offset = 1
0130 5F4F sbci R21,255
0132 .dbline 141
0132 02E8 ldi R16,130
0134 87DF xcall _ds1302_read_byte
0136 A02E mov R10,R16
0138 FA01 movw R30,R20
013A A082 std z+0,R10
013C .dbline 142
013C 4F5F subi R20,255 ; offset = 1
013E 5F4F sbci R21,255
0140 .dbline 143
0140 00E8 ldi R16,128
0142 80DF xcall _ds1302_read_byte
0144 602F mov R22,R16
0146 862F mov R24,R22
0148 8F77 andi R24,127
014A FA01 movw R30,R20
014C 8083 std z+0,R24
014E .dbline 144
014E 4F5F subi R20,255 ; offset = 1
0150 5F4F sbci R21,255
0152 .dbline 145
0152 0AE8 ldi R16,138
0154 77DF xcall _ds1302_read_byte
0156 A02E mov R10,R16
0158 FA01 movw R30,R20
015A A082 std z+0,R10
015C .dbline -2
015C L28:
015C .dbline 0 ; func end
015C 0C940000 xjmp pop_xgsetF00C
0160 .dbsym r time_data 20 pc
0160 .dbend
0160 .dbfunc e ds1302_init _ds1302_init fV
.even
0160 _ds1302_init::
0160 .dbline -1
0160 .dbline 149
0160 .dbline 151
0160 AE98 cbi 0x15,6
0162 .dbline 152
0162 A898 cbi 0x15,0
0164 .dbline 153
0164 A69A sbi 0x14,6
0166 .dbline 154
0166 A09A sbi 0x14,0
0168 .dbline -2
0168 L29:
0168 .dbline 0 ; func end
0168 0895 ret
016A .dbend
016A .dbfile E:\16实验程序\ds1302\1602.h
016A .dbfunc e s_ms _s_ms fV
016A ; ms -> R16,R17
.even
016A _s_ms::
016A .dbline -1
016A .dbline 9
016A ; #define uchar unsigned char
016A ; #define uint unsigned int
016A ;
016A ; #define RS 5
016A ; #define RW 6
016A ; #define EN 7
016A ;
016A ; void s_ms(uint ms)
016A ; {
016A .dbline 10
016A ; for(;ms>1;ms--);
016A 02C0 xjmp L34
016C L31:
016C .dbline 10
016C L32:
016C .dbline 10
016C 0150 subi R16,1
016E 1040 sbci R17,0
0170 L34:
0170 .dbline 10
0170 81E0 ldi R24,1
0172 90E0 ldi R25,0
0174 8017 cp R24,R16
0176 9107 cpc R25,R17
0178 C8F3 brlo L31
017A X8:
017A .dbline -2
017A L30:
017A .dbline 0 ; func end
017A 0895 ret
017C .dbsym r ms 16 i
017C .dbend
017C .dbfunc e busy _busy fV
017C ; temp -> R20
.even
017C _busy::
017C 4A93 st -y,R20
017E .dbline -1
017E .dbline 15
017E ; }
017E ;
017E ; //查忙
017E ; void busy(void)
017E ; {
017E .dbline 17
017E ; uchar temp;
017E ; s_ms(500);
017E 04EF ldi R16,500
0180 11E0 ldi R17,1
0182 F3DF xcall _s_ms
0184 .dbline 18
0184 ; PORTA&=~(1<<RS); //RS=0
0184 DD98 cbi 0x1b,5
0186 .dbline 19
0186 ; s_ms(500);
0186 04EF ldi R16,500
0188 11E0 ldi R17,1
018A EFDF xcall _s_ms
018C .dbline 20
018C ; PORTA|=(1<<RW); //RW=1
018C DE9A sbi 0x1b,6
018E .dbline 21
018E ; s_ms(500);
018E 04EF ldi R16,500
0190 11E0 ldi R17,1
0192 EBDF xcall _s_ms
0194 1AC0 xjmp L37
0196 L36:
0196 .dbline 23
0196 ; while(temp)
0196 ; {
0196 .dbline 24
0196 ; PORTA|=(1<<EN); //EN=1
0196 DF9A sbi 0x1b,7
0198 .dbline 25
0198 ; s_ms(500);
0198 04EF ldi R16,500
019A 11E0 ldi R17,1
019C E6DF xcall _s_ms
019E .dbline 26
019E ; DDRD=0x00; //A口变输入
019E 2224 clr R2
01A0 21BA out 0x11,R2
01A2 .dbline 27
01A2 ; PORTD=0xff; //上拉使能
01A2 8FEF ldi R24,255
01A4 82BB out 0x12,R24
01A6 .dbline 28
01A6 ; s_ms(500);
01A6 04EF ldi R16,500
01A8 11E0 ldi R17,1
01AA DFDF xcall _s_ms
01AC .dbline 29
01AC ; temp = PIND&0x80; //读取A口
01AC 40B3 in R20,0x10
01AE 4078 andi R20,128
01B0 .dbline 30
01B0 ; s_ms(500);
01B0 04EF ldi R16,500
01B2 11E0 ldi R17,1
01B4 DADF xcall _s_ms
01B6 .dbline 31
01B6 ; DDRD=0xff;
01B6 8FEF ldi R24,255
01B8 81BB out 0x11,R24
01BA .dbline 32
01BA ; PORTD=0xff; //A口变输出
01BA 82BB out 0x12,R24
01BC .dbline 33
01BC ; s_ms(500);
01BC 04EF ldi R16,500
01BE 11E0 ldi R17,1
01C0 D4DF xcall _s_ms
01C2 .dbline 34
01C2 ; PORTA&=~(1<<EN); //EN=0
01C2 DF98 cbi 0x1b,7
01C4 .dbline 35
01C4 ; s_ms(500);
01C4 04EF ldi R16,500
01C6 11E0 ldi R17,1
01C8 D0DF xcall _s_ms
01CA .dbline 36
01CA ; }
01CA L37:
01CA .dbline 22
01CA 4423 tst R20
01CC 21F7 brne L36
01CE X9:
01CE .dbline -2
01CE L35:
01CE .dbline 0 ; func end
01CE 4991 ld R20,y+
01D0 0895 ret
01D2 .dbsym r temp 20 c
01D2 .dbend
01D2 .dbfunc e writecom _writecom fV
01D2 ; com -> R10
.even
01D2 _writecom::
01D2 AA92 st -y,R10
01D4 A02E mov R10,R16
01D6 .dbline -1
01D6 .dbline 41
01D6 ; }
01D6 ;
01D6 ; //写指令
01D6 ; void writecom(uchar com)
01D6 ; {
01D6 .dbline 42
01D6 ; busy();
01D6 D2DF xcall _busy
01D8 .dbline 43
01D8 ; s_ms(500);
01D8 04EF ldi R16,500
01DA 11E0 ldi R17,1
01DC C6DF xcall _s_ms
01DE .dbline 44
01DE ; PORTA&=~(1<<RS); //RS=0
01DE DD98 cbi 0x1b,5
01E0 .dbline 45
01E0 ; s_ms(500);
01E0 04EF ldi R16,500
01E2 11E0 ldi R17,1
01E4 C2DF xcall _s_ms
01E6 .dbline 46
01E6 ; PORTA&=~(1<<RW); //RW=0
01E6 DE98 cbi 0x1b,6
01E8 .dbline 47
01E8 ; s_ms(500);
01E8 04EF ldi R16,500
01EA 11E0 ldi R17,1
01EC BEDF xcall _s_ms
01EE .dbline 48
01EE ; PORTA|=(1<<EN); //EN=1
01EE DF9A sbi 0x1b,7
01F0 .dbline 49
01F0 ; s_ms(500);
01F0 04EF ldi R16,500
01F2 11E0 ldi R17,1
01F4 BADF xcall _s_ms
01F6 .dbline 50
01F6 ; PORTD = com; //输出指令
01F6 A2BA out 0x12,R10
01F8 .dbline 51
01F8 ; s_ms(500);
01F8 04EF ldi R16,500
01FA 11E0 ldi R17,1
01FC B6DF xcall _s_ms
01FE .dbline 52
01FE ; PORTA&=~(1<<EN); //EN=0
01FE DF98 cbi 0x1b,7
0200 .dbline 53
0200 ; s_ms(500);
0200 04EF ldi R16,500
0202 11E0 ldi R17,1
0204 B2DF xcall _s_ms
0206 .dbline -2
0206 L39:
0206 .dbline 0 ; func end
0206 A990 ld R10,y+
0208 0895 ret
020A .dbsym r com 10 c
020A .dbend
020A .dbfunc e LcdInit _LcdInit fV
.even
020A _LcdInit::
020A .dbline -1
020A .dbline 58
020A ; }
020A ;
020A ; //1602初始化
020A ; void LcdInit(void)
020A ; {
020A .dbline 59
020A ; DDRD = 0xff;
020A 8FEF ldi R24,255
020C 81BB out 0x11,R24
020E .dbline 60
020E ; PORTD = 0x00;
020E 2224 clr R2
0210 22BA out 0x12,R2
0212 .dbline 61
0212 ; writecom(0x38);
0212 08E3 ldi R16,56
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -