📄 funcs.lis
字号:
00CC .dbend
00CC .dbfunc e DS1302_writeB _DS1302_writeB fV
00CC ; i -> R20
00CC ; byte -> R22
.even
00CC _DS1302_writeB::
00CC 0E940000 xcall push_gset2
00D0 602F mov R22,R16
00D2 .dbline -1
00D2 .dbline 28
00D2 .dbline 30
00D2 4427 clr R20
00D4 0CC0 xjmp L22
00D6 L19:
00D6 .dbline 31
00D6 .dbline 32
00D6 C798 cbi 0x18,7
00D8 .dbline 33
00D8 60FF sbrs R22,0
00DA 02C0 rjmp L23
00DC .dbline 34
00DC .dbline 35
00DC C59A sbi 0x18,5
00DE .dbline 36
00DE 01C0 xjmp L24
00E0 L23:
00E0 .dbline 38
00E0 .dbline 39
00E0 C598 cbi 0x18,5
00E2 .dbline 40
00E2 L24:
00E2 .dbline 41
00E2 0AE0 ldi R16,10
00E4 10E0 ldi R17,0
00E6 8CDF xcall _Delayus
00E8 .dbline 42
00E8 C79A sbi 0x18,7
00EA .dbline 43
00EA 6695 lsr R22
00EC .dbline 44
00EC L20:
00EC .dbline 30
00EC 4395 inc R20
00EE L22:
00EE .dbline 30
00EE 4830 cpi R20,8
00F0 90F3 brlo L19
00F2 .dbline -2
00F2 .dbline 45
00F2 L18:
00F2 0E940000 xcall pop_gset2
00F6 .dbline 0 ; func end
00F6 0895 ret
00F8 .dbsym r i 20 c
00F8 .dbsym r byte 22 c
00F8 .dbend
00F8 .dbfunc e DS1302_readB _DS1302_readB fc
00F8 ; i -> R20
00F8 ; byte -> R22
.even
00F8 _DS1302_readB::
00F8 0E940000 xcall push_gset2
00FC .dbline -1
00FC .dbline 53
00FC .dbline 54
00FC 6627 clr R22
00FE .dbline 55
00FE BD98 cbi 0x17,5
0100 .dbline 56
0100 C598 cbi 0x18,5
0102 .dbline 57
0102 4427 clr R20
0104 0FC0 xjmp L29
0106 L26:
0106 .dbline 58
0106 .dbline 59
0106 6695 lsr R22
0108 .dbline 60
0108 C79A sbi 0x18,7
010A .dbline 61
010A 0AE0 ldi R16,10
010C 10E0 ldi R17,0
010E 78DF xcall _Delayus
0110 .dbline 62
0110 C798 cbi 0x18,7
0112 .dbline 63
0112 0AE0 ldi R16,10
0114 10E0 ldi R17,0
0116 74DF xcall _Delayus
0118 .dbline 64
0118 B59B sbis 0x16,5
011A 02C0 rjmp L30
011C .dbline 65
011C .dbline 66
011C 6068 ori R22,128
011E .dbline 67
011E 01C0 xjmp L31
0120 L30:
0120 .dbline 69
0120 .dbline 70
0120 6F77 andi R22,127
0122 .dbline 71
0122 L31:
0122 .dbline 72
0122 L27:
0122 .dbline 57
0122 4395 inc R20
0124 L29:
0124 .dbline 57
0124 4830 cpi R20,8
0126 78F3 brlo L26
0128 .dbline 73
0128 BD9A sbi 0x17,5
012A .dbline 74
012A 062F mov R16,R22
012C .dbline -2
012C L25:
012C 0E940000 xcall pop_gset2
0130 .dbline 0 ; func end
0130 0895 ret
0132 .dbsym r i 20 c
0132 .dbsym r byte 22 c
0132 .dbend
0132 .dbfunc e DS1302_writeD _DS1302_writeD fV
0132 ; data -> R20
0132 ; addr -> R22
.even
0132 _DS1302_writeD::
0132 0E940000 xcall push_gset2
0136 422F mov R20,R18
0138 602F mov R22,R16
013A .dbline -1
013A .dbline 84
013A .dbline 85
013A AF98 cbi 0x15,7
013C .dbline 86
013C C798 cbi 0x18,7
013E .dbline 87
013E ; Delayus(10);
013E 0AE0 ldi R16,10
0140 10E0 ldi R17,0
0142 5EDF xcall _Delayus
0144 .dbline 88
0144 ; PORTC|=BIT(RTC_CS); //拉高片选端
0144 AF9A sbi 0x15,7
0146 .dbline 89
0146 ; Delayus(10); //调整片选脉冲
0146 0AE0 ldi R16,10
0148 10E0 ldi R17,0
014A 5ADF xcall _Delayus
014C .dbline 90
014C ; DS1302_writeB(addr); //写入操作命令(地址)
014C 062F mov R16,R22
014E BEDF xcall _DS1302_writeB
0150 .dbline 91
0150 ; Delayus(10);
0150 0AE0 ldi R16,10
0152 10E0 ldi R17,0
0154 55DF xcall _Delayus
0156 .dbline 92
0156 ; PORTB&=~BIT(RTC_CLK); //拉低时钟端
0156 C798 cbi 0x18,7
0158 .dbline 93
0158 ; Delayus(10);
0158 0AE0 ldi R16,10
015A 10E0 ldi R17,0
015C 51DF xcall _Delayus
015E .dbline 94
015E ; DS1302_writeB(data); //写入数据
015E 042F mov R16,R20
0160 B5DF xcall _DS1302_writeB
0162 .dbline 95
0162 ; PORTB&=~BIT(RTC_CLK); //拉低时钟端
0162 C798 cbi 0x18,7
0164 .dbline 96
0164 ; Delayus(10); //调整片选脉冲
0164 0AE0 ldi R16,10
0166 10E0 ldi R17,0
0168 4BDF xcall _Delayus
016A .dbline 97
016A ; PORTC&=~BIT(RTC_CS); //拉低片选端
016A AF98 cbi 0x15,7
016C .dbline -2
016C .dbline 98
016C ; }
016C L32:
016C 0E940000 xcall pop_gset2
0170 .dbline 0 ; func end
0170 0895 ret
0172 .dbsym r data 20 c
0172 .dbsym r addr 22 c
0172 .dbend
0172 .dbfunc e DS1302_readD _DS1302_readD fc
0172 ; data -> R20
0172 ; addr -> R20
.even
0172 _DS1302_readD::
0172 0E940000 xcall push_gset1
0176 402F mov R20,R16
0178 .dbline -1
0178 .dbline 106
0178 ; /*******************************************
0178 ; 函数名称: DS1302_readD
0178 ; 功 能: 从DS1302的某个地址读出一个字节数据
0178 ; 参 数: addr--地址值(寄存器或RAM)
0178 ; 返回值 : data--读出的数据
0178 ; /********************************************/
0178 ; uchar DS1302_readD(uchar addr)
0178 ; {
0178 .dbline 108
0178 ; uchar data;
0178 ; PORTC&=~BIT(RTC_CS); //拉低片选端
0178 AF98 cbi 0x15,7
017A .dbline 109
017A ; PORTB&=~BIT(RTC_CLK); //拉低时钟端
017A C798 cbi 0x18,7
017C .dbline 110
017C ; Delayus(10);
017C 0AE0 ldi R16,10
017E 10E0 ldi R17,0
0180 3FDF xcall _Delayus
0182 .dbline 111
0182 ; PORTC|=BIT(RTC_CS); //拉高片选端
0182 AF9A sbi 0x15,7
0184 .dbline 112
0184 ; Delayus(10); //调整片选脉冲
0184 0AE0 ldi R16,10
0186 10E0 ldi R17,0
0188 3BDF xcall _Delayus
018A .dbline 113
018A ; DS1302_writeB(addr); //写入操作命令(地址)
018A 042F mov R16,R20
018C 9FDF xcall _DS1302_writeB
018E .dbline 114
018E ; Delayus(10);
018E 0AE0 ldi R16,10
0190 10E0 ldi R17,0
0192 36DF xcall _Delayus
0194 .dbline 115
0194 ; data=DS1302_readB(); //读出数据
0194 B1DF xcall _DS1302_readB
0196 402F mov R20,R16
0198 .dbline 116
0198 ; Delayus(10);
0198 0AE0 ldi R16,10
019A 10E0 ldi R17,0
019C 31DF xcall _Delayus
019E .dbline 117
019E ; PORTB&=~BIT(RTC_CLK); //拉低时钟端
019E C798 cbi 0x18,7
01A0 .dbline 118
01A0 ; PORTC&=~BIT(RTC_CS); //拉低片选端
01A0 AF98 cbi 0x15,7
01A2 .dbline 119
01A2 ; return data; //返回读出的数据
01A2 042F mov R16,R20
01A4 .dbline -2
01A4 L33:
01A4 0E940000 xcall pop_gset1
01A8 .dbline 0 ; func end
01A8 0895 ret
01AA .dbsym r data 20 c
01AA .dbsym r addr 20 c
01AA .dbend
01AA .dbfunc e DS1302_getT _DS1302_getT fV
01AA ; addr -> R20
01AA ; i -> R22
01AA ; time -> R10,R11
.even
01AA _DS1302_getT::
01AA 0E940000 xcall push_gset3
01AE 5801 movw R10,R16
01B0 .dbline -1
01B0 .dbline 128
01B0 ; }
01B0 ; /*******************************************
01B0 ; 函数名称: DS1302_getT
01B0 ; 功 能: 读取DS1302的当前时间的时、分、秒
01B0 ; 参 数: time[]--读取的时间数组
01B0 ; 返回值 : 无
01B0 ; /********************************************/
01B0 ; void DS1302_getT(INT8U time[])
01B0 ; {
01B0 .dbline 130
01B0 ; uchar i;
01B0 ; uchar addr = 0x80; //读取地址从秒寄存器开始
01B0 40E8 ldi R20,128
01B2 .dbline 131
01B2 ; for(i=0;i<3;i++)
01B2 6627 clr R22
01B4 0BC0 xjmp L38
01B6 L35:
01B6 .dbline 132
01B6 .dbline 133
01B6 042F mov R16,R20
01B8 0160 ori R16,1
01BA DBDF xcall _DS1302_readD
01BC 82E0 ldi R24,2
01BE 869F mul R24,R22
01C0 F001 movw R30,R0
01C2 EA0D add R30,R10
01C4 FB1D adc R31,R11
01C6 0083 std z+0,R16
01C8 .dbline 134
01C8 4E5F subi R20,254 ; addi 2
01CA .dbline 135
01CA L36:
01CA .dbline 131
01CA 6395 inc R22
01CC L38:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -